#include "ssgwin32.exe.h" int DAT_00460059; undefined DAT_0046005d; undefined DAT_00460061; undefined DAT_00460065; int DAT_0046aaa4; undefined DAT_0046006a; undefined DAT_0046aee4; undefined DAT_0046aed8; undefined DAT_0046aedc; undefined1 *DAT_0046aec0; LPCH DAT_0046aec4; char *DAT_0046aec8; undefined4 DAT_0046aed4; undefined4 DAT_0046aed0; undefined4 DAT_0046aecc; undefined *PTR_Main_00460044; pointer PTR_DAT_0046002c; uint UNK_0046003c; HGLOBAL hResData_004646b0; undefined DAT_004636d0; undefined DAT_004636b4; LPCSTR lpType_0046007d; LPVOID DAT_00460070; string s_I_could_not_find_the_font_conver_00460082; string s_I_could_not_find_the_font_conver_004600b2; string s_I_could_not_find_the_font_conver_004600e2; LPCSTR lpCaption_004600ae; LPCSTR lpCaption_004600de; LPCSTR lpCaption_0046010e; HRSRC hResData_004646b4; HMODULE $Module; LPCSTR lpName_00460074; undefined *DAT_004601a4; undefined FUN_0041026e; undefined DAT_004601a0; short DAT_004601a8; undefined4 DAT_004601a4; undefined DAT_004646b8; pointer onWmNcactivateOrChar; short DAT_004601aa; undefined DAT_004601ac; HGLOBAL hMem_004646d0; HANDLE hFile_004646cc; LONG lDistanceToMove_004646d4; HWND window; string s_TLCSSG_004601be; short DAT_00464858; tagRECT $DesktopRect; undefined DAT_00464874; undefined FUN_00410cfc; undefined4 $dwPlatformId; undefined *PTR_FUN_0046021c; undefined2 DAT_00464878; pointer onWmActivate; pointer onWmQueryendsessionOrSyscommandF060h; undefined DAT_00464870; pointer onWmActivateapp; int DAT_00464868; int DAT_0046486c; pointer onWmSyscommand2000; short DAT_00460268; undefined DAT_004601ba; pointer onWmCommand; undefined DAT_004601b6; pointer onWmInitmenu; pointer onWmLbuttondown; pointer onWmMenuselect; pointer onWmLbuttonup; pointer onWmChar; RECT mouseInputRect; undefined2 needToMakeGameAnnoying; undefined *PTR_DoNothing_00460238; undefined *PTR_DoNothing_0046023c; undefined DAT_004601b8; undefined DAT_004601c8; undefined2 DAT_004648d4; HCURSOR hCursor_004648d0; undefined DAT_004601e4; undefined DAT_004601e8; undefined DAT_004601ec; undefined DAT_004601f0; undefined DAT_004601f4; undefined DAT_00460208; undefined DAT_004601fc; undefined DAT_004601dc; undefined DAT_004601e0; undefined DAT_00460204; undefined DAT_00460200; undefined2 DAT_00460218; undefined *DAT_00460214; undefined1 *DAT_00460210; undefined DAT_0046020c; undefined LAB_00411706; undefined LAB_0041171c; undefined LAB_00411763; undefined LAB_004117b5; undefined LAB_004117fa; undefined LAB_00411848; undefined LAB_0041188c; undefined LAB_004118cf; undefined LAB_0041193e; undefined LAB_004119a1; undefined FUN_00411700; undefined LAB_00411a00; undefined FUN_0041170c; undefined LAB_00411b76; undefined LAB_00411d03; undefined LAB_00411e7c; undefined LAB_0041203e; undefined LAB_00412096; undefined LAB_004120ec; undefined4 Dlist_00465724; undefined4 Dlist_00465720; BigNode24h[1] BigNode24h_ARRAY_00464910; short DAT_00467dba; short DAT_00467dbc; short DAT_00467dbe; short DAT_00467dc0; short DAT_004657da; short DAT_004657de; short DAT_004657dc; short DAT_004657e0; undefined DAT_00460258; undefined2 DAT_004657d8; undefined2 DAT_00467dc0; undefined2 DAT_00467dbc; undefined2 DAT_00467dbe; undefined2 DAT_00467dba; undefined2 DAT_00460268; undefined4 Dlist_0046490c; undefined2 DAT_00465744; undefined4 Dlist_0046572c; undefined DAT_004657e2; undefined4 Dlist_00465728; undefined4 Dlist_00465730; undefined4 Dlist_00465734; undefined DAT_00462c38; short DAT_004657d8; short DAT_0046025a; undefined $ASEQ; undefined $ASEQ_; undefined FUN_004122a8; int DAT_00460264; undefined *DAT_00460260; uint DAT_00460264; undefined *DAT_0046025c; undefined2 DAT_004657da; undefined FUN_004122bc; undefined4 DAT_0046025c; undefined4 DAT_00460260; undefined DAT_00465738; undefined2 DAT_00465746; undefined2 $RoomCount; Area *$Area; undefined2 $BuildingTextResourceId; ushort *$RoomInitialPartsCounts; Room *[16] $Rooms; undefined DAT_00460274; undefined2 $RoomIndex; undefined DAT_00460318; undefined DAT_0046027a; undefined2 DAT_0046027c; undefined2 DAT_00460284; undefined4 DAT_004602f8; undefined4 DAT_00460308; ushort DAT_00467cf2; undefined DAT_0046047c; undefined DAT_0046048c; undefined DAT_0046049c; undefined DAT_004604ac; undefined DAT_004604dc; undefined DAT_004604ec; undefined DAT_004604fc; undefined DAT_0046050c; undefined DAT_0046051c; undefined DAT_0046052c; undefined DAT_0046053c; undefined DAT_0046054c; undefined DAT_0046055c; GameState *$GameState; PartDefinition *$Level.partDefinitions; short DAT_004662b0; undefined4 DAT_004662a4; undefined2 DAT_00466294; short DAT_004662a8; int DAT_004662aa; undefined4 DAT_004662cc; short DAT_004662ee; undefined4 DAT_004662e2; undefined2 DAT_004662d2; short DAT_004662e6; int DAT_004662e8; undefined4 DAT_0046630a; undefined DAT_00463546; void *DAT_004605d4; Rect16 *DAT_004605d4; undefined4 DAT_00466334; undefined4 DAT_00466338; undefined4 DAT_0046633c; ushort DAT_004605b6; undefined FUN_00415be4; undefined FUN_004164da; short DAT_004605ba; undefined2 DAT_004605b0; int DAT_00466314; undefined4 DAT_00466324; undefined2 DAT_004605ba; undefined DAT_00466354; undefined DAT_00466356; undefined4 DAT_00466340; undefined4 DAT_00466344; undefined4 DAT_00466348; undefined4 DAT_00466318; uint DAT_00466314; DlistNode *DAT_0046634c; DlistNode *DAT_00466350; Actor[12] $Actors; undefined DAT_004605b8; undefined DAT_00466358; undefined LAB_004163cd; undefined LAB_00416429; DlistNode *DAT_0046635c; undefined4 DAT_00466360; undefined DAT_004605b4; short DAT_004605b0; undefined DAT_0046a944; undefined2 *DAT_00466314; undefined4 DAT_0046635c; undefined FUN_00443f0b; int DAT_00466364; undefined4 DAT_00466364; undefined DAT_00466368; undefined DAT_0046636a; short DAT_0046636c; short DAT_0046636e; undefined *DAT_004605e4; undefined4 DAT_004605d8; undefined4 DAT_004605dc; undefined DAT_004605e0; undefined2 DAT_00466370; undefined2 DAT_00466390; Dlist *DAT_004605dc; Dlist *DAT_004605d8; undefined FUN_00416b73; undefined4 $HitTestThing; undefined FUN_00416b90; undefined2 DAT_004605e8; short DAT_00466390; undefined FUN_00416c3e; short DAT_00466370; undefined DAT_00466374; undefined DAT_004605e8; undefined4 DAT_004605e4; pointer PTR_DAT_00460840; undefined DAT_00466398; short *DAT_004663c8; short *DAT_004663cc; undefined4 DAT_004663c0; undefined4 DAT_004663b8; undefined4 DAT_004663c4; undefined4 DAT_004663bc; int DAT_004663c8; int DAT_004663cc; Dlist *DAT_00466394; undefined LAB_00417454; undefined DAT_004663d0; undefined DAT_0046647c; undefined FUN_00417532; undefined FUN_00417792; undefined FUN_004178b8; undefined4 DAT_00466394; undefined DAT_00467cf0; undefined *[15] $LevelLut1?; char *DAT_004666d8; char *DAT_004666dc; undefined DAT_004666d4; undefined DAT_004666d2; short DAT_00467cf2; GameState *DAT_004666d8; GameState *DAT_004666dc; undefined DAT_00466682; undefined $DDLT; undefined4 DAT_0046672c; undefined2 DAT_00460b70; undefined2 DAT_00460b86; undefined2 DAT_00460b9c; undefined4 DAT_00466748; undefined2 DAT_00466750; undefined4 DAT_004667c6; undefined2 DAT_004667c4; undefined2 DAT_004667c2; int DAT_004667ca; undefined4 DAT_004667b8; undefined2 DAT_004667b6; undefined2 DAT_004667b4; int DAT_004667bc; undefined2 DAT_00466744; undefined2 DAT_00466746; undefined4 DAT_0046674c; undefined FUN_00419873; undefined2 DAT_00466734; undefined2 DAT_00460ba8; int DAT_004667c6; int DAT_004667b8; undefined2 DAT_00460bac; uint DAT_004667b8; uint DAT_004667c6; undefined DAT_004634c8; undefined *DAT_00469544; undefined DAT_00466738; short DAT_0046673c; uint DAT_00466740; undefined DAT_00466736; short DAT_00466734; undefined DAT_00460baa; ushort *DAT_00466730; byte *DAT_00460be0; undefined1 *DAT_00460be0; undefined1 DAT_004667d0; undefined2 DAT_004667da; undefined2 DAT_004667dc; undefined2 DAT_004667e6; undefined4 DAT_00460be0; undefined DAT_004667d6; undefined DAT_004667d0; ushort DAT_00460bfc; undefined DAT_00461a9e; undefined DAT_004602b0; undefined DAT_004602bc; undefined DAT_004602d4; undefined DAT_004602e0; undefined *PTR_DAT_004613d8; undefined2 DAT_00462550; undefined DAT_00461ab2; short *DAT_00460bec; short *DAT_00460bf0; short *DAT_00460bf4; short *DAT_00460bf8; undefined4 DAT_00460bec; undefined LAB_0041a140; undefined DAT_004613c8; undefined DAT_004667f0; undefined DAT_00466904; undefined DAT_00466a18; undefined DAT_00466a2c; undefined FUN_0041a32f; undefined FUN_0041a491; undefined FUN_0041a62a; undefined FUN_0041a633; undefined FUN_0041a70e; undefined FUN_0041a92e; short $ActualBananaPartsCount; short $InitialBananaPartsCount; undefined DAT_00460bea; undefined DAT_00466a46; uint DAT_004673dc; undefined2 DAT_00461536; undefined4 DAT_004673f8; int DAT_00467454; int DAT_00467458; undefined4 DAT_004673f4; undefined1 *DAT_00469544; undefined2 DAT_00469742; undefined2 DAT_00469744; undefined2 DAT_00469746; undefined2 DAT_00469748; undefined2 DAT_0046974a; undefined2 DAT_0046974c; undefined2 DAT_0046974e; undefined2 DAT_00469750; undefined4 DAT_0046743c; undefined4 DAT_00467440; undefined LAB_00421cea; undefined LAB_00421f28; undefined4 DAT_004673fc; undefined4 DAT_00467414; undefined4 DAT_0046742c; undefined4 DAT_00467444; PuzzleNumberOneBased currentPuzzle; undefined4 DAT_00469544; undefined2 DAT_0046976a; void *DAT_00466a40; short DAT_0046977e; short DAT_0046976c; undefined $TEXT1; int DAT_0046710c; undefined FUN_0041b33a; int DAT_00467110; undefined FUN_0041b393; short DAT_00461536; undefined LAB_0041b0f0; undefined2 DAT_004614f8; undefined2 DAT_004614fa; undefined FUN_00421bc5; undefined2 DAT_00466a54; undefined2 DAT_00466f8a; undefined2 DAT_00466f8c; undefined2 DAT_00466f8e; undefined2 DAT_00466f90; undefined2 DAT_00466f94; undefined4 DAT_00466f96; undefined4 DAT_00466f9a; undefined4 DAT_004670cc; undefined4 DAT_004673e0; short DAT_0046153c; undefined DAT_00466a5c; undefined2 DAT_00466a4a; short DAT_00466a62; short DAT_00466a60; undefined DAT_004697b2; undefined2 DAT_00466abc; short DAT_00466a66; short DAT_00466a68; short DAT_00466a64; undefined2 DAT_00466a4e; undefined2 DAT_00466a4c; undefined2 DAT_00466abe; undefined2 DAT_00466ac0; short DAT_00461538; short DAT_0046153a; undefined2 DAT_0046153c; ushort DAT_0046977e; void *DAT_00469770; undefined DAT_0046977a; undefined DAT_0046977c; undefined2 DAT_0046978a; undefined2 DAT_0046978c; undefined2 DAT_0046978e; undefined2 DAT_00469790; undefined2 DAT_004697a8; undefined2 DAT_00469778; undefined DAT_00469782; undefined2 DAT_00469780; undefined2 DAT_00466a56; undefined DAT_00466a58; undefined DAT_00466a5a; undefined2 DAT_00466ad6; undefined DAT_00466ad8; undefined DAT_00466ada; undefined DAT_00466b0a; undefined DAT_00466b0c; undefined DAT_00466b0e; undefined DAT_00466b24; undefined DAT_00466b26; undefined DAT_00466b28; undefined DAT_00466b3e; undefined DAT_00466b40; undefined DAT_00466b42; undefined DAT_00466b58; undefined DAT_00466b5a; undefined DAT_00466b5c; undefined DAT_00466b72; undefined DAT_00466b74; undefined DAT_00466b76; undefined DAT_00466ba6; undefined DAT_00466ba8; undefined DAT_00466baa; undefined DAT_00466bc0; undefined DAT_00466bc2; undefined DAT_00466bc4; undefined DAT_00466bf4; undefined DAT_00466bf6; undefined DAT_00466bf8; undefined DAT_00466c0e; undefined DAT_00466c10; undefined DAT_00466c12; undefined DAT_00466c42; undefined DAT_00466c44; undefined DAT_00466c46; undefined DAT_00466c5c; undefined DAT_00466c5e; undefined DAT_00466c60; undefined DAT_00466c76; undefined DAT_00466c78; undefined DAT_00466c7a; undefined DAT_00466c90; undefined DAT_00466c92; undefined DAT_00466c94; undefined DAT_00466caa; undefined DAT_00466cac; undefined DAT_00466cae; undefined DAT_00466bda; undefined DAT_00466bdc; undefined DAT_00466bde; undefined DAT_00466cc4; undefined DAT_00466cc6; undefined DAT_00466cc8; undefined2 DAT_00469792; undefined2 DAT_00469794; undefined DAT_00469796; undefined2 DAT_00466f9e; undefined2 DAT_00466fa4; undefined2 DAT_00466fa0; undefined2 DAT_00466fa2; undefined2 DAT_00466fa8; undefined4 DAT_00466faa; undefined2 DAT_00466fb2; undefined2 DAT_00466fb8; undefined2 DAT_00466fb4; undefined2 DAT_00466fb6; undefined2 DAT_00466fbc; undefined4 DAT_00466fbe; undefined2 DAT_00466fc6; undefined2 DAT_00466fcc; undefined2 DAT_00466fc8; undefined2 DAT_00466fca; undefined2 DAT_00466fd0; undefined4 DAT_00466fd2; undefined2 DAT_00466fda; undefined2 DAT_00466fe0; undefined2 DAT_00466fdc; undefined2 DAT_00466fde; undefined2 DAT_00466fe4; undefined4 DAT_00466fe6; undefined2 DAT_00466fee; undefined2 DAT_00466ff4; undefined2 DAT_00466ff0; undefined2 DAT_00466ff2; undefined2 DAT_00466ff8; undefined4 DAT_00466ffa; undefined2 DAT_00467002; undefined2 DAT_00467008; undefined2 DAT_00467004; undefined2 DAT_00467006; undefined2 DAT_0046700c; undefined4 DAT_0046700e; undefined4 DAT_00466aaa; undefined2 DAT_00466f92; undefined2 DAT_004672ae; undefined4 DAT_004672b0; undefined $TEXT2; undefined2 DAT_004614fc; undefined2 DAT_004614fe; undefined DAT_00461554; uint DAT_004673f4; uint DAT_004673f8; short DAT_0046711c; undefined2 DAT_0046711e; undefined2 DAT_0046711c; undefined2 DAT_00466a8a; undefined2 DAT_00466a6a; undefined2 DAT_00466a64; undefined DAT_00466ab6; undefined DAT_00466ab8; short DAT_00466a4c; ushort DAT_00466a4e; short DAT_00466a4e; undefined DAT_00466a5e; undefined2 DAT_00466ab2; undefined2 DAT_00466ab4; undefined DAT_00466aae; undefined DAT_00466ab0; undefined2 DAT_00466aba; undefined DAT_00466ac2; undefined DAT_00466ac4; undefined DAT_00466ac6; undefined DAT_00466ac8; undefined DAT_00466aca; undefined DAT_00466acc; undefined DAT_00466ace; undefined DAT_00466ad0; undefined DAT_00466ad2; undefined DAT_00466ad4; undefined DAT_00466ade; undefined DAT_00466ae0; undefined DAT_00466ae2; undefined DAT_00466ae4; undefined DAT_00466ae6; undefined DAT_00466ae8; undefined DAT_00466aea; undefined DAT_00466aec; undefined DAT_00466aee; short DAT_00466a56; short DAT_00466a54; undefined DAT_00466a50; undefined DAT_00466a52; undefined $TEXT3; undefined $TEXT4; undefined $TEXT5; undefined2 *DAT_00466a40; short DAT_00466a44; undefined4 DAT_00467428; undefined DAT_0046778c; undefined DAT_00467794; uint DAT_004676fc; undefined DAT_00467606; undefined DAT_0046760a; undefined4 DAT_00467610; undefined4 DAT_00467614; undefined2 DAT_0046760e; undefined DAT_00467618; undefined4 DAT_00467700; undefined2 DAT_0046761e; undefined2 DAT_00467620; undefined2 DAT_00467622; undefined2 DAT_00467624; undefined4 DAT_00467774; undefined4 DAT_004676e4; undefined4 DAT_00467778; undefined4 DAT_004676e8; int DAT_0046777c; int DAT_00467780; int DAT_00467784; int DAT_00467788; undefined2 DAT_0046778e; undefined2 DAT_00467790; undefined2 DAT_00469752; undefined2 DAT_00469754; undefined2 DAT_00469756; undefined2 DAT_00469758; undefined LAB_0042613f; short DAT_00461580; short DAT_0046776a; undefined DAT_00461590; undefined2 DAT_00467626; undefined4 DAT_004676ec; undefined4 DAT_004676f4; undefined4 DAT_004676f0; undefined4 DAT_004676e0; short DAT_00461568; undefined2 DAT_00461576; short DAT_0046156a; undefined LAB_00422ddb; undefined LAB_00422e37; undefined FUN_00422fb7; undefined LAB_00422e82; undefined LAB_00422ebe; undefined LAB_00422f50; undefined2 DAT_0046156c; undefined FUN_00425f5a; undefined2 DAT_0046768e; undefined4 DAT_0046770c; undefined4 DAT_0046771c; undefined4 DAT_0046772c; undefined4 DAT_0046773c; undefined4 DAT_0046774c; short DAT_00461574; undefined2 DAT_00467464; short DAT_0046760e; short DAT_00467768; undefined2 DAT_0046156a; undefined2 DAT_00467606; undefined2 DAT_00461572; undefined2 DAT_00467608; undefined2 DAT_00461570; undefined2 DAT_0046156e; undefined2 DAT_00461568; undefined2 DAT_00467628; undefined2 DAT_00467630; undefined2 DAT_00467638; undefined2 DAT_0046763a; undefined DAT_0046763c; undefined DAT_0046763e; undefined DAT_00467648; undefined2 DAT_00467652; undefined DAT_0046766c; undefined DAT_00467686; undefined2 DAT_00467690; undefined2 DAT_0046769e; undefined2 DAT_00467768; undefined2 DAT_004697aa; undefined DAT_004697ac; undefined DAT_004697ae; undefined DAT_00469798; undefined DAT_0046979a; undefined2 DAT_0046776a; undefined DAT_0046979c; undefined DAT_0046979e; undefined DAT_00467600; undefined DAT_00467602; undefined DAT_00467604; undefined DAT_004675fe; undefined2 DAT_00467640; undefined2 DAT_0046765a; undefined2 DAT_00467674; undefined2 DAT_00467694; undefined2 DAT_004676a0; undefined2 DAT_004676aa; undefined2 DAT_004676b2; undefined2 DAT_004676b4; undefined2 DAT_004676c4; undefined2 DAT_00467696; undefined2 DAT_004676a2; undefined2 DAT_004676b6; undefined2 DAT_004676b8; undefined2 DAT_004676a4; undefined2 DAT_004676be; undefined2 DAT_00467698; undefined2 DAT_004676ce; undefined2 DAT_00467692; undefined2 DAT_004676a8; undefined2 DAT_004676ba; undefined2 DAT_004676a6; undefined2 DAT_004676c8; undefined2 DAT_004676cc; undefined2 DAT_0046769a; undefined2 DAT_004676ac; undefined2 DAT_004676bc; undefined2 DAT_004676ca; undefined2 DAT_004676c6; undefined2 DAT_004676ae; undefined2 DAT_0046769c; undefined2 DAT_004676b0; undefined2 DAT_004676c0; undefined2 DAT_004676d4; undefined2 DAT_004676d2; undefined2 DAT_004676c2; undefined2 DAT_004676d0; undefined2 DAT_004676d6; undefined2 DAT_004676d8; short DAT_004675fa; undefined2 DAT_00461574; short DAT_004675fc; undefined2 DAT_00467798; undefined2 DAT_00467796; undefined DAT_00461593; undefined2 DAT_00461580; undefined DAT_0046761c; undefined $TEXT7; undefined $TEXT8; undefined $TEXT6; short DAT_004675f6; undefined2 DAT_004675f8; short DAT_00467792; short DAT_00467796; short DAT_00467798; undefined2 DAT_00467466; undefined2 *DAT_00467770; undefined FUN_00426848; undefined DAT_004615a8; undefined2 DAT_004677de; undefined2 DAT_004677dc; undefined DAT_004615aa; short DAT_004677de; short DAT_004677dc; undefined DAT_0046779c; LPSTR lpBuffer_0046a770; undefined DAT_00467890; undefined DAT_00467824; undefined4 DAT_00467838; int DAT_0046783c; undefined DAT_00467836; undefined LAB_0042ae7f; uint DAT_00467850; short DAT_0046177a; short DAT_0046782a; undefined4 DAT_00467844; undefined4 DAT_0046784c; undefined4 DAT_00467848; undefined4 DAT_00467850; undefined4 DAT_00467858; undefined4 DAT_00467860; undefined DAT_00461786; undefined4 DAT_00467874; undefined4 DAT_0046787c; undefined DAT_00461788; undefined4 DAT_00467878; undefined4 DAT_00467880; undefined2 DAT_0046177e; undefined4 DAT_00467864; uint DAT_00467840; short DAT_00461778; short DAT_0046177c; undefined2 DAT_0046161c; undefined2 DAT_0046161e; undefined DAT_00461654; undefined DAT_00461656; undefined DAT_00461700; undefined DAT_00461702; uint DAT_00467844; uint DAT_00467848; uint DAT_0046784c; short DAT_00461792; uint DAT_00467854; uint DAT_00467858; uint DAT_00467860; uint DAT_00467874; uint DAT_0046787c; uint DAT_00467878; uint DAT_00467880; undefined DAT_00461794; uint DAT_0046785c; undefined $TEXT9; undefined $TEXT10; undefined $TEXT11; short DAT_0046178e; undefined2 DAT_004615c4; undefined2 DAT_0046178c; undefined2 DAT_00461770; undefined2 DAT_00461776; undefined2 DAT_00461774; undefined $TEXT12; undefined2 DAT_00461772; undefined2 DAT_0046178e; undefined2 DAT_00467832; undefined2 DAT_0046178a; undefined2 DAT_00461792; undefined2 DAT_0046782a; undefined2 DAT_00467834; undefined DAT_00467830; undefined2 DAT_0046177a; undefined2 DAT_0046782c; undefined2 DAT_0046177c; undefined2 DAT_00461778; undefined2 DAT_00461780; undefined2 DAT_00461782; undefined2 DAT_00461784; short DAT_004615c4; short DAT_0046178c; int DAT_004677f0; int DAT_004677f4; int DAT_004677f8; int DAT_00467810; int DAT_00467814; int DAT_00467818; int DAT_0046780c; int DAT_004677e0; int DAT_004677e4; int DAT_004677e8; int DAT_004677ec; undefined LAB_004270c2; undefined LAB_00429c98; undefined LAB_0042abc8; undefined2 DAT_0046162c; undefined2 DAT_0046162e; undefined4 DAT_004677fc; undefined FUN_004270f8; undefined FUN_00427645; undefined FUN_00429cab; short DAT_0046178a; short DAT_0046782c; undefined4 DAT_00467884; undefined4 DAT_00467888; ushort DAT_0046167a; ushort DAT_00461678; ushort DAT_0046167e; ushort DAT_0046167c; ushort DAT_00461682; ushort DAT_00461680; undefined DAT_0046163c; undefined DAT_0046163e; undefined DAT_00461648; undefined DAT_0046164a; undefined2 DAT_0046782e; undefined DAT_004615c6; undefined DAT_004615dc; undefined DAT_004615e2; short DAT_00461776; short DAT_00461770; short DAT_00461774; short DAT_0046782e; short DAT_00461772; int DAT_00467854; undefined2 DAT_0046781e; undefined2 DAT_00467820; undefined2 DAT_00467822; undefined2 *DAT_0046788c; undefined4 DAT_0046783c; undefined2 DAT_00462790; undefined DAT_00467894; string s_SHFOLDER.DLL_004617cc; string s_SHGetFolderPathA_004617d9; byte * *DAT_00467a94; undefined DAT_00461816; undefined DAT_00461819; undefined DAT_0046181d; pointer PTR_LAB_00461b74; LPCVOID *DAT_00467a94; undefined DAT_004617c8; undefined DAT_00461aae; undefined DAT_004617ca; short DAT_00469aaa; undefined4 DAT_00461824; undefined DAT_00467cec; int DAT_00467ca8; int DAT_00467cac; int DAT_00467cb0; undefined2 DAT_00461938; undefined4 DAT_00467c94; undefined4 DAT_00467c90; undefined4 DAT_00467c98; int DAT_00467cb4; undefined4 DAT_00467c9c; undefined4 DAT_00467ca0; undefined4 DAT_00467ca4; undefined LAB_0042f132; undefined LAB_0042f35e; undefined *PTR_s__00461a48; string s_x_%d_y_%d_00461a77; short DAT_00461a44; int DAT_00467cd4; int DAT_00467cc4; int DAT_00467cc8; int DAT_00467cd0; int DAT_00467ccc; short DAT_00461938; int DAT_00467cb8; int DAT_00467c44; undefined LAB_0042bd0b; undefined2 DAT_00467c4c; undefined4 DAT_00467c5a; undefined FUN_0042bd1e; undefined2 DAT_00467c7e; undefined2 DAT_00467c7c; short DAT_00467c84; undefined2 DAT_00467c3e; uint DAT_00467c44; undefined2 DAT_00467ce0; undefined2 DAT_00467ce2; undefined DAT_00467c58; short DAT_00467ce0; short DAT_00467cdc; short DAT_00467ce2; short DAT_00467cde; short DAT_00467c7c; short DAT_00467c7e; undefined DAT_00467c34; undefined DAT_00467c36; undefined DAT_00467c38; short DAT_00467c2a; short DAT_00467c28; short DAT_00467c30; short DAT_00467c2c; short DAT_00467c2e; short DAT_00467c32; undefined DAT_00467c3a; undefined2 *DAT_00467c44; short DAT_00467c3c; undefined2 DAT_00461a44; undefined2 DAT_0046977e; undefined $TEXT13; undefined4 DAT_00467c6c; short DAT_00467c3e; uint DAT_00467c90; uint DAT_00467c94; undefined DAT_00461910; undefined DAT_00461914; pointer PTR_FUN_0046193c; int DAT_00467c40; undefined DAT_00461840; undefined DAT_00461848; undefined DAT_00461920; undefined DAT_00461934; void *DAT_00467c54; void *DAT_00467c40; undefined2 DAT_00467c3c; undefined $GEAR; undefined2 DAT_00467c4e; uint DAT_00467c88; undefined $TEXT14; undefined $TEXT15; undefined $TEXT16; undefined2 *DAT_00467c48; undefined4 DAT_00467cb4; int DAT_00461aa8; undefined DAT_00461aca; pointer PTR_LAB_00461b50; undefined2 DAT_0046954c; PartResource *$Level.partResource; undefined DAT_00461caf; undefined DAT_00467cfa; pointer $pTEXT; undefined DAT_00467da0; undefined DAT_00467da2; undefined DoNothing; undefined FUN_0042fee7; pointer PTR_s_gizmo.dat_00461acc; undefined *PTR_FUN_004627d8; undefined DAT_00467d4a; undefined FUN_0042fe06; undefined FUN_0042ff2e; undefined FUN_0042ff86; undefined FUN_0042fe9d; undefined FUN_0043b1cc; short DAT_00467db0; FARPROC DAT_0046842c; FARPROC DAT_00468430; FARPROC DAT_00468434; undefined DAT_00468438; undefined DAT_0046843c; FARPROC DAT_00468440; FARPROC DAT_00468444; undefined DAT_00468448; HMODULE DAT_00461cc8; string s_WING32.DLL_004624d4; short DAT_00461cb4; BITMAPINFO *DAT_00467dc4; undefined2 drawAreaX; void *DAT_00467dd2; undefined2 drawAreaY; short DAT_00467e18; short DAT_00467e16; short DAT_00467e14; short DAT_00467dcc; short DAT_00467e12; HDC DAT_00468428; undefined *DAT_00468430; undefined *DAT_0046842c; undefined *DAT_00468434; undefined2 DAT_00467dc8; undefined2 DAT_00467dca; undefined2 DAT_00467dcc; undefined2 DAT_00467dce; undefined2 DAT_00467dd0; undefined4 DAT_00467dd2; undefined2 DAT_00467dd6; undefined4 DAT_00467dd8; undefined4 DAT_00467ddc; undefined4 DAT_00467de0; undefined1 DAT_00468124; short DAT_00467db8; short DAT_00467db6; HPALETTE DAT_0046811c; undefined *DAT_00468424; short DAT_00467da4; undefined DAT_00461cbc; undefined DAT_00467e10; short DAT_00467dd0; short DAT_00467dc8; undefined4 *DAT_00467dc4; undefined LAB_00430214; undefined FUN_0043025c; undefined FUN_00430494; HGDIOBJ DAT_0046811c; void *DAT_00467dc4; undefined FUN_00412250; undefined2 DAT_00461cb4; short DAT_00467da8; short DAT_00467db4; undefined2 DAT_00467daa; undefined2 DAT_00467dac; undefined2 DAT_00467db2; undefined2 DAT_00467da4; undefined2 $ColorMode; bool[24][32] dirtyTiles; undefined2 DAT_00467e12; undefined2 DAT_00467e14; undefined2 DAT_00467e16; undefined2 DAT_00467e18; undefined DAT_00461cc4; undefined DAT_00461cc6; undefined2 dirtyMode; undefined4 DAT_00461ccc; undefined *DAT_00468440; ushort DAT_00468122; undefined2 DAT_00467da8; undefined $RRGB0; undefined $RRGB1; undefined $RRGB2; undefined $RRGB3; undefined2 DAT_00468122; ushort DAT_00468120; undefined1 DAT_00468421; undefined1 DAT_00468422; undefined1 DAT_00468423; undefined1 DAT_00468125; undefined1 DAT_00468126; undefined4 DAT_004620d0; byte DAT_00468124; byte DAT_00468125; byte DAT_00468126; byte DAT_00468421; byte DAT_00468422; byte DAT_00468423; undefined1 DAT_00468127; undefined *DAT_00461cb8; undefined2 DAT_00467e00; undefined4 DAT_00467e04; undefined4 DAT_00467dee; undefined4 DAT_00467e08; undefined2 DAT_00467db6; undefined2 DAT_00467db8; undefined DAT_00467e0c; undefined DAT_00467e0e; undefined2 DAT_00467de6; undefined2 DAT_00467de8; short DAT_00467dce; int DAT_00467e04; short DAT_00467e00; undefined4 DAT_00461cb8; short DAT_0046a8ae; short DAT_0046a8b0; undefined DAT_0046a8ac; undefined4 DAT_0046845e; undefined4 DAT_00468470; undefined2 DAT_0046a8a6; undefined2 DAT_0046a8a4; undefined4 DAT_004624f8; undefined4 DAT_00468450; undefined4 DAT_004624f4; undefined4 DAT_00468454; short DAT_0046a8a4; short DAT_0046a8a6; undefined DAT_0046a8aa; short DAT_0046a8a8; undefined DAT_00468458; undefined4 DAT_004624fc; undefined LAB_00431e2c; undefined LAB_00431e6e; undefined LAB_00431eb0; undefined DAT_00468478; short DAT_0046844c; undefined DAT_0046845c; void *DAT_0046845e; Dlist *DAT_00468462; DlistNode *DAT_00468470; int DAT_004624f4; int DAT_004624f8; int DAT_004624fc; undefined DAT_0046846c; undefined $HELP0; undefined $HELP1; uint DAT_004624f4; uint DAT_004624f8; uint DAT_004624fc; undefined DAT_0046a89c; short DAT_00462500; short DAT_00462502; undefined DAT_004685e0; uint DAT_004685d0; undefined2 DAT_0046251e; undefined4 DAT_004685d8; undefined4 DAT_004685c8; undefined4 DAT_004685dc; undefined4 DAT_004685c4; int DAT_004685cc; undefined LAB_00433f92; undefined LAB_00434064; undefined2 DAT_004685be; short DAT_0046847c; undefined DAT_0046858c; short DAT_00468480; uint DAT_004685d4; uint DAT_004685dc; uint DAT_004685d8; uint DAT_004685c8; undefined4 DAT_0046848c; undefined $TEXT18; undefined $TEXT19; undefined $TEXT20; undefined FUN_0043299b; int DAT_00468588; undefined FUN_00432d2e; short DAT_0046251e; undefined LAB_00432906; undefined LAB_00432c1d; undefined LAB_00432c30; undefined2 DAT_00468482; undefined2 DAT_00468484; undefined2 DAT_00468486; undefined2 DAT_00468488; undefined2 DAT_0046848a; undefined2 DAT_00468496; undefined4 DAT_00468560; undefined DAT_00462520; undefined2 DAT_00462522; undefined2 DAT_0046847c; undefined2 DAT_00468490; undefined2 DAT_00468492; undefined $TEXT21; short DAT_00462522; undefined4 DAT_004685d4; short DAT_0046251c; undefined DAT_00462549; short DAT_004697aa; short DAT_0046978c; undefined2 DAT_00468494; short DAT_0046847e; undefined2 DAT_0046847e; undefined2 *DAT_004685c0; undefined4 DAT_004685cc; undefined DAT_004667ec; undefined DAT_00460be8; undefined $ESEQ; undefined DAT_00468de0; undefined DAT_00462558; short DAT_00462562; undefined DAT_00462564; undefined4 DAT_00462554; uint DAT_00462554; undefined DAT_0046254c; undefined2 DAT_0046254e; undefined2 DAT_00462574; undefined DAT_00468ff6; void *DAT_00468f2c; uint DAT_00468fc0; undefined2 DAT_0046269e; undefined4 DAT_00468fd0; undefined4 DAT_00468fd4; undefined4 DAT_00468f44; int DAT_00468f48; int DAT_00468fb8; undefined4 DAT_00468f84; undefined LAB_0043aa3b; undefined4 DAT_00468f54; undefined4 DAT_00468f88; void *DAT_00468f38; uint DAT_00468f44; uint DAT_00468f48; uint DAT_00468f84; undefined4 DAT_00468fb8; undefined $TEXT22; short DAT_004626a0; undefined $TEXT23; undefined $TEXT24; undefined $TEXT25; int DAT_00468fe8; int DAT_00468fec; int DAT_00468ff0; short DAT_0046269e; int DAT_00468f2c; undefined LAB_00435852; undefined LAB_00435c1a; undefined2 DAT_00462578; undefined2 DAT_0046257a; undefined2 DAT_00462698; undefined4 DAT_00468fc4; undefined4 DAT_00468fdc; undefined FUN_0043588a; undefined FUN_00435c2d; short DAT_00468f30; uint DAT_00468fd4; uint DAT_00468fd0; undefined2 DAT_00462584; undefined2 DAT_00462586; undefined DAT_004626c2; undefined2 DAT_00468f30; undefined2 DAT_004626a0; undefined2 DAT_00468dee; undefined2 DAT_00468dec; undefined2 DAT_00468de8; undefined2 DAT_00468dea; undefined2 DAT_00468df6; undefined2 DAT_00468df4; undefined2 DAT_00468df0; undefined2 DAT_00468df2; undefined2 DAT_00468dfe; undefined $TEXT26; undefined2 DAT_00468dfc; undefined2 DAT_00468df8; undefined2 DAT_00468dfa; undefined2 DAT_00468e06; undefined2 DAT_00468e04; undefined2 DAT_00468e00; undefined2 DAT_00468e02; undefined2 DAT_00468e0e; undefined2 DAT_00468e0c; undefined2 DAT_00468e08; undefined2 DAT_00468e0a; undefined2 DAT_00468e16; undefined2 DAT_00468e14; undefined2 DAT_00468e10; undefined2 DAT_00468e12; undefined2 DAT_00468e1e; undefined2 DAT_00468e1c; undefined2 DAT_00468e18; undefined2 DAT_00468e1a; undefined2 DAT_00468e26; undefined2 DAT_00468e24; undefined2 DAT_00468e20; undefined2 DAT_00468e22; undefined2 DAT_00468e2e; undefined2 DAT_00468e2c; undefined2 DAT_00468e28; undefined2 DAT_00468e2a; undefined2 DAT_00468e36; undefined2 DAT_00468e34; undefined2 DAT_00468e30; undefined2 DAT_00468e32; undefined2 DAT_00468e3e; undefined2 DAT_00468e3c; undefined2 DAT_00468e38; undefined2 DAT_00468e3a; undefined2 DAT_00468e46; undefined2 DAT_00468e44; undefined2 DAT_00468e40; undefined2 DAT_00468e42; undefined2 DAT_00468e4e; undefined2 DAT_00468e4c; undefined2 DAT_00468e48; undefined2 DAT_00468e4a; undefined2 DAT_00468e56; undefined2 DAT_00468e54; undefined2 DAT_00468e50; undefined2 DAT_00468e52; undefined2 DAT_00468e5e; undefined2 DAT_00468e5c; undefined2 DAT_00468e58; undefined2 DAT_00468e5a; undefined2 DAT_00468e66; undefined2 DAT_00468e64; undefined2 DAT_00468e60; undefined2 DAT_00468e62; undefined2 DAT_00468e6e; undefined2 DAT_00468e6c; undefined2 DAT_00468e68; undefined2 DAT_00468e6a; undefined2 DAT_00468e76; undefined2 DAT_00468e74; undefined2 DAT_00468e70; undefined2 DAT_00468e72; undefined2 DAT_00468e7e; undefined2 DAT_00468e7c; undefined2 DAT_00468e78; undefined2 DAT_00468e7a; undefined2 DAT_00468e86; undefined2 DAT_00468e84; undefined2 DAT_00468e80; undefined2 DAT_00468e82; undefined2 DAT_00468e8e; undefined2 DAT_00468e8c; undefined2 DAT_00468e88; undefined2 DAT_00468e8a; undefined2 DAT_00468e96; undefined2 DAT_00468e94; undefined2 DAT_00468e90; undefined2 DAT_00468e92; undefined2 DAT_00468e9e; undefined2 DAT_00468e9c; undefined2 DAT_00468e98; undefined2 DAT_00468e9a; undefined2 DAT_00468ea6; undefined2 DAT_00468ea4; undefined2 DAT_00468ea0; undefined2 DAT_00468ea2; undefined2 DAT_00468eae; undefined2 DAT_00468eac; undefined2 DAT_00468ea8; undefined2 DAT_00468eaa; undefined DAT_0046261d; undefined2 DAT_00468f34; undefined4 DAT_00468fbc; short DAT_00468f34; int DAT_00468fbc; short DAT_00468f4e; short DAT_00468f50; undefined2 DAT_00468ff4; undefined DAT_00468f42; undefined DAT_00468f40; uint DAT_00468fbc; uint DAT_00468f2c; undefined DAT_00462590; undefined DAT_00462591; string s_case_%d:_004626da; string s_ii[%d].type_=_%d;_004626ea; string s_ii[%d].rot_=_%d;_00462706; string s_ii[%d].x_=_%d;_00462722; string s_ii[%d].y_=_%d;_0046273e; string s_break;_0046275b; undefined2 *DAT_00468f38; undefined4 DAT_00468f48; Dlist *DAT_00468ff8; short DAT_0046276e; HMENU hMenu_00468ffc; undefined DAT_0046276c; undefined DAT_0043aa7c; undefined DAT_00462778; short DAT_0046900a; short DAT_0046900c; undefined2 DAT_00462782; undefined2 DAT_00469028; short DAT_00469030; short DAT_00469032; short DAT_00469034; short DAT_00469036; short DAT_00462782; short DAT_00462780; undefined2 DAT_0046902e; undefined2 DAT_0046902c; undefined2 DAT_0046902a; short DAT_00462770; int DAT_0046277c; undefined2 DAT_00469006; undefined2 DAT_00469008; undefined DAT_0046901a; undefined DAT_00469012; undefined DAT_00469002; undefined4 DAT_0046901c; undefined2 DAT_00469026; undefined4 DAT_00469020; undefined4 DAT_0046277c; short DAT_00469008; short *DAT_00462774; undefined DAT_00462772; int DAT_00469016; undefined2 DAT_00469024; int DAT_00462774; undefined DAT_00462784; undefined4 DAT_00462774; undefined4 DAT_00462788; undefined2 DAT_0046900e; undefined2 DAT_00469010; undefined DAT_0046278e; undefined DAT_00469040; undefined DAT_0046278c; undefined2 DAT_00469090; undefined2 DAT_00469092; undefined2 DAT_004690a0; undefined2 DAT_004690a2; undefined2 DAT_004690a4; undefined2 DAT_004690b0; undefined2 DAT_004690b2; undefined2 DAT_004690b4; undefined2 DAT_004690b6; undefined2 DAT_004690c0; undefined2 DAT_004690c2; undefined2 DAT_004690c4; undefined2 DAT_004690c6; undefined2 DAT_004690c8; undefined2 DAT_004690ca; undefined2 DAT_004690cc; undefined LAB_0042fd90; undefined LAB_0043bbbf; undefined LAB_0043bbd4; undefined LAB_0043bc58; void *DAT_004690d8; undefined4 $Pool.freeNodes; undefined4 $Pool.usedNodes; undefined4 DAT_004690d8; undefined2 DAT_004690dc; Dlist *DAT_004693c0; undefined2 DAT_0046936c; short DAT_00462790; undefined4 DAT_004693c0; undefined DAT_00469364; undefined FUN_0043c338; undefined DAT_00462794; undefined DAT_004690e0; undefined DAT_00469220; undefined $TEXT27; undefined $INTS3; undefined DAT_004627a6; undefined DAT_004627a4; undefined4 DAT_0046a874; undefined4 DAT_0046a878; int DAT_00469428; undefined2 DAT_00469430; void *DAT_004693d8; undefined4 DAT_004693dc; undefined4 DAT_004693e0; undefined4 DAT_004693e4; undefined LAB_0043c6f1; undefined DAT_0046943c; uint DAT_0046a874; void *DAT_0046a878; undefined4 DAT_00469434; undefined2 DAT_0046942c; int DAT_004693d8; uint DAT_004693e0; uint DAT_004693dc; undefined *PTR_LAB_004627b4; pointer PTR_LAB_004627cc; PartDefinition *DAT_00469548; undefined $PART; undefined DAT_0046285c; undefined DAT_00462868; undefined DAT_00462878; undefined DAT_00462880; undefined DAT_00462890; undefined DAT_004628a0; undefined DAT_004628ac; undefined DAT_004628bc; undefined DAT_004628cc; undefined DAT_004628dc; undefined DAT_004628ec; undefined DAT_004628fc; undefined DAT_0046291c; undefined DAT_0046292c; undefined DAT_0046293c; undefined DAT_0046294c; undefined DAT_0046295c; undefined DAT_0046296c; undefined DAT_0046297c; undefined DAT_0046298c; undefined DAT_0046299c; undefined DAT_004629ac; undefined DAT_004629bc; undefined DAT_004629cc; undefined DAT_004629dc; undefined DAT_004629ec; undefined DAT_004629fc; undefined DAT_00462a0c; undefined DAT_00462a1c; undefined DAT_00462a2c; undefined DAT_00462a3c; undefined DAT_00462a4c; undefined DAT_00462a5c; undefined DAT_004696aa; undefined DAT_00462a70; short DAT_00469600; short *DAT_004695fc; short *DAT_00469610; short *DAT_00469614; int DAT_00469604; undefined4 DAT_004695f4; undefined4 DAT_004695f8; undefined2 *DAT_00469608; undefined2 *DAT_0046960c; undefined4 DAT_00469548; undefined4 DAT_0046281c; undefined4 DAT_00462818; undefined2 DAT_00462810; undefined DAT_004696ac; undefined2 DAT_004695ee; undefined2 DAT_004695ec; undefined2 DAT_004695e4; undefined2 DAT_004605b6; ushort *DAT_00469630; undefined4 DAT_00469654; ushort *DAT_00469672; undefined4 DAT_00469696; undefined4 DAT_00469626; undefined2 DAT_0046962a; undefined4 DAT_00469668; undefined2 DAT_0046966c; undefined $RDAT; undefined2 DAT_0046962e; undefined $RACE2; undefined2 DAT_00469670; undefined $RACE3; int DAT_0046964c; undefined $RACE4; int DAT_0046968e; undefined $RACE5; ushort DAT_00469658; ushort DAT_0046969a; undefined DAT_00462820; undefined DAT_0046282a; undefined DAT_00462834; undefined DAT_0046283e; undefined DAT_00462848; undefined DAT_00462852; uint DAT_00469604; undefined4 DAT_00469608; uint DAT_0046960c; uint DAT_004695f4; uint DAT_004695f8; uint DAT_00469654; uint DAT_00469696; undefined4 DAT_00469630; undefined4 DAT_00469672; undefined4 DAT_004695fc; uint DAT_00469610; uint DAT_00469614; short DAT_004695e4; short DAT_00469670; int DAT_00469692; int DAT_00469668; uint DAT_0046281c; short DAT_004695ec; short DAT_0046966c; int DAT_00469672; short DAT_0046969a; undefined2 DAT_0046965a; undefined2 DAT_0046965c; undefined DAT_00462812; short DAT_00462810; int DAT_00469608; short DAT_0046969c; undefined2 DAT_0046969e; int DAT_0046960c; uint DAT_00462818; undefined4 DAT_00469610; undefined4 DAT_00469614; short DAT_004695ee; undefined DAT_004695e8; short DAT_0046962e; int DAT_00469650; int DAT_00469626; short DAT_0046962a; int DAT_00469630; short DAT_00469658; undefined2 DAT_00469618; undefined2 DAT_0046961a; undefined *PTR_LAB_00460b24; pointer PTR_LAB_00460b30; int DAT_00469720; undefined2 DAT_00469724; undefined DAT_0046972c; short DAT_00469730; undefined2 DAT_00462a98; undefined2 DAT_0046970a; undefined2 DAT_00469708; undefined2 DAT_00469712; undefined2 DAT_00469714; undefined DAT_00469710; undefined DAT_00469726; uint DAT_00469738; ushort DAT_00462a9a; uint DAT_0046973c; undefined DAT_00462a9c; short DAT_00469728; undefined LAB_0043f1da; undefined LAB_0043f267; undefined DAT_00462a9e; undefined DAT_004696b0; undefined DAT_00469700; undefined DAT_00469702; undefined DAT_00469704; undefined DAT_00469706; ushort DAT_00469708; short DAT_0046970a; short DAT_0046970c; undefined DAT_0046970e; short DAT_00469712; short DAT_00469714; undefined DAT_00469716; undefined DAT_00469718; undefined DAT_0046971a; undefined DAT_0046971c; undefined DAT_0046971e; int DAT_004698e4; int DAT_004698e8; undefined2 DAT_00462ab2; undefined4 DAT_004698b8; undefined OnClick; undefined4 DAT_004698f8; undefined DAT_00462aa2; PuzzleCategory currentCategory; undefined DAT_00462b11; undefined DAT_004697b8; undefined2 endgame; char *DAT_00469770; undefined $TEXT28; undefined $TEXT29; undefined4 DAT_004698fc; uint DAT_00469914; undefined4 DAT_00469914; undefined2 DAT_00462acc; short[8] CATEGORY_LEN; LPSTR lpReturnedString_00462b30; undefined DAT_00462b20; Dlist *DAT_00462c34; Dlist *DAT_00469918; undefined4 DAT_00462c34; undefined DAT_0046991c; string s_Rs32_:_%s_%d_00462c4e; short DAT_00462c62; undefined FUN_00441531; short DAT_00462c5c; undefined LAB_00440bf3; undefined FUN_00441736; undefined LAB_004413a9; undefined FUN_0044182e; undefined LAB_004414b1; undefined LAB_00441509; undefined2 DAT_00462c72; undefined2 DAT_00462c74; undefined2 DAT_00462c76; undefined2 DAT_00462c78; undefined2 DAT_00462cd4; undefined2 DAT_00462cd6; undefined4 DAT_00469990; undefined4 DAT_004699a8; undefined2 DAT_004699d6; undefined2 DAT_004699e2; undefined DAT_004699d4; uint DAT_00469944; undefined4 DAT_00469940; undefined4 DAT_0046993c; undefined4 DAT_00469938; undefined DAT_00469920; undefined2 DAT_00462c5c; undefined4 DAT_00469930; int DAT_00469934; undefined LAB_0044381d; undefined2 DAT_00462e8c; undefined4 DAT_00469948; undefined4 DAT_00469a60; undefined4 DAT_00469a78; void *DAT_00469a5c; uint DAT_00469930; undefined4 DAT_00469934; undefined $TEXT30; uint DAT_00469940; uint DAT_0046993c; uint DAT_00469938; undefined4 DAT_00469978; undefined2 DAT_00462c60; undefined2 DAT_00469926; ushort DAT_00462c60; short DAT_004699cc; undefined DAT_00462c64; undefined2 DAT_004699bc; undefined2 DAT_004699e4; undefined2 DAT_004699ea; undefined $TEXT31; undefined $TEXT32; undefined $TEXT33; undefined2 DAT_00462c6a; undefined2 DAT_00462c6c; undefined2 DAT_00462c6e; undefined2 DAT_00462c70; undefined DAT_00462ecc; undefined2 DAT_00462c62; undefined DAT_00462c68; undefined2 DAT_0046992a; undefined DAT_00462c66; short DAT_0046992c; undefined4 DAT_0046997c; undefined4 DAT_00469980; undefined4 DAT_00469984; undefined4 DAT_00469988; undefined4 DAT_0046998c; undefined2 DAT_004699d8; undefined DAT_004699da; undefined DAT_004699dc; undefined DAT_004699de; undefined DAT_004699e0; undefined2 DAT_00469a38; undefined2 DAT_00469a44; undefined2 DAT_00469a20; undefined2 DAT_00469a2c; undefined2 DAT_00469a3c; undefined2 DAT_00469a50; undefined2 DAT_00469a54; undefined2 DAT_00469a24; undefined2 DAT_00469a48; undefined2 DAT_00469a4c; undefined4 $nulTEXT; undefined2 DAT_00469a40; undefined2 DAT_00469a28; undefined2 DAT_00469a30; undefined2 DAT_00469a34; undefined2 *DAT_00469a5c; undefined4 DAT_00469a90; short DAT_00469b26; short DAT_00469b28; undefined DAT_00469b24; undefined DAT_00469b2a; undefined DAT_00469aa4; undefined2 DAT_00469aa6; undefined DAT_00469b2c; undefined DAT_00469b2e; short DAT_00462ed4; undefined2 DAT_00462eda; undefined4 DAT_00462ee0; undefined4 *DAT_00469aac; undefined4 DAT_00469aac; int DAT_00469aac; short DAT_00469ab2; undefined DAT_00469abf; undefined1 DAT_00469ac0; undefined DAT_00467a98; short DAT_00462f1c; short DAT_00462eda; undefined DAT_00462eec; undefined DAT_00462efe; undefined DAT_00469abe; byte DAT_00469aa8; short DAT_00469aa6; undefined DAT_00469ab0; undefined DAT_00469ab4; undefined DAT_00469ab8; undefined DAT_00469abc; undefined1 DAT_00469aa8; undefined2 DAT_00462ed6; undefined2 DAT_00462ed8; undefined2 DAT_00462ede; undefined4 DAT_00462ee4; void *DAT_00469aac; undefined DAT_00461ab0; ushort DAT_00462eda; undefined2 DAT_00469aaa; undefined2 DAT_00469ab2; undefined DAT_00462f20; undefined DAT_00462f28; undefined DAT_00462f1c; undefined DAT_00469ad2; undefined DAT_00462f3c; undefined DAT_00469ad4; short DAT_00462f48; int DAT_00469e60; int DAT_00469d98; undefined2 DAT_00469e4c; undefined DAT_00469e50; HWND dwCallback_00469e44; undefined DAT_0046305a; undefined DAT_00469d96; undefined DAT_00469e4e; undefined DAT_00469e58; Dlist *DAT_00469d84; undefined4 $WaveMixHandle; undefined4 $pWaveMixActivate; FARPROC DAT_00469d9c; string s_DSOUND.DLL_00463145; string s_DirectSoundCreate_00463150; HMODULE hModule_00463070; undefined DAT_00469d8a; ushort DAT_00469d90; ushort DAT_00469d8e; ushort DAT_00469d8c; undefined2 DAT_00469d92; ushort DAT_00469d88; undefined4 DAT_00469d98; int *DAT_00469e48; undefined SoundWndProc; pointer lpClassName_00463068; undefined lpWindowName_00463162; undefined4 $pWaveMixConfigureInit; undefined4 $pWaveMixOpenChannel; undefined DAT_00469d88; undefined4 $pWaveMixCloseChannel; undefined4 $pWaveMixCloseSession; undefined DAT_00469e14; undefined DAT_00469e10; undefined DAT_00469e00; undefined DAT_00469dfc; pointer $pWAVE; undefined4 $pWaveMixOpenWave; undefined DAT_00462f42; short DAT_00469d90; undefined2 DAT_00462f4a; undefined4 $pWaveMixFreeWave; DlistNode *DAT_00469d98; undefined2 DAT_0046305c; short DAT_00462f4a; undefined DAT_00469e54; HWAVEOUT hwo_00463064; undefined4 $pWaveMixPlay; short DAT_00469d8c; string s_MIDI\_00462f4c; short DAT_00469d8e; undefined2 DAT_00463060; void *DAT_00469e9c; undefined2 DAT_00469ea0; short DAT_00469ea0; int DAT_00469e9c; undefined4 $pWaveMixFlushChannel; undefined2 DAT_00469e5c; undefined DAT_00463058; undefined DAT_00462f44; undefined2 DAT_00469d8e; undefined2 DAT_00469d8c; undefined2 DAT_00469d90; undefined *PTR_s_midimap.cfg_00463074; undefined *DAT_00469d9c; undefined2 DAT_00462f48; pointer $pINTS; undefined4 $pWaveMixPump; undefined4 DAT_00469e9c; undefined DAT_0046a28c; undefined DAT_0046a28a; uint DAT_0046a2d4; undefined4 DAT_0046a300; undefined2 DAT_0046333e; undefined4 DAT_0046a304; undefined4 DAT_0046a308; undefined4 DAT_0046a30c; undefined2 DAT_0046975a; undefined2 DAT_0046975c; undefined2 DAT_0046975e; undefined LAB_0044afcd; undefined LAB_0044b1de; undefined4 DAT_0046a290; undefined4 DAT_0046a2b0; undefined4 DAT_0046a310; undefined4 DAT_0046a334; void *DAT_00469ea4; undefined $TEXT37; int DAT_00469eb0; int DAT_00469eac; short DAT_0046333e; undefined LAB_00448061; undefined LAB_0044826d; undefined LAB_00448450; undefined LAB_00448497; undefined2 DAT_004632dc; undefined2 DAT_004632de; undefined2 DAT_004632e0; undefined2 DAT_004632e2; undefined4 DAT_00469eb4; undefined2 DAT_00469ed4; undefined2 DAT_00469ed6; undefined2 DAT_00469ed8; undefined2 DAT_00469eda; undefined2 DAT_00469edc; undefined4 DAT_00469ee6; undefined1 DAT_00469fbe; undefined FUN_00448280; undefined FUN_004484a5; short DAT_00463340; undefined2 DAT_0046636e; undefined2 DAT_0046636c; short DAT_00469fb8; undefined4 DAT_0046a2d0; undefined DAT_004648e4; undefined DAT_004648f2; undefined4 DAT_0046a2e0; undefined $TEXT34; undefined $TEXT35; undefined $TEXT36; undefined4 DAT_0046a2d8; undefined4 DAT_0046a2dc; undefined2 DAT_00469fc8; undefined2 DAT_00469fc6; undefined4 DAT_00469ee2; undefined2 DAT_0046a00a; uint DAT_0046a300; uint DAT_0046a2d8; uint DAT_0046a2dc; uint DAT_0046a30c; uint DAT_0046a308; uint DAT_0046a304; undefined4 DAT_0046a00c; undefined2 DAT_0046331c; undefined2 DAT_00469fb8; undefined2 DAT_00463340; undefined2 DAT_00469fca; undefined2 DAT_00469fcc; undefined2 DAT_00469fd6; undefined2 DAT_00469fce; undefined2 DAT_00469fd0; ushort DAT_00469fd2; ushort DAT_00469fd4; undefined1 DAT_00469fc0; undefined2 DAT_00469fe0; undefined2 DAT_00469fd8; undefined2 DAT_00469fda; undefined2 DAT_00469fdc; undefined2 DAT_00469fde; undefined2 DAT_00469fea; undefined2 DAT_00469fe2; undefined2 DAT_00469fe4; undefined2 DAT_00469fe6; undefined $TEXT38; undefined2 DAT_00469fe8; undefined2 DAT_00469ff4; undefined2 DAT_00469fec; undefined2 DAT_00469fee; undefined2 DAT_00469ff0; undefined2 DAT_00469ff2; undefined2 DAT_00469ffe; undefined2 DAT_00469ff6; undefined2 DAT_00469ff8; undefined2 DAT_00469ffa; undefined2 DAT_00469ffc; undefined2 DAT_0046a008; undefined2 DAT_0046a000; undefined2 DAT_0046a002; undefined2 DAT_0046a004; undefined2 DAT_0046a006; undefined1 DAT_00469fc3; undefined1 DAT_00469fc5; undefined2 DAT_0046a010; undefined2 DAT_0046a012; undefined4 DAT_0046a052; undefined2 DAT_0046a050; undefined2 DAT_0046a01c; undefined2 DAT_0046a014; undefined2 DAT_0046a016; ushort DAT_0046a018; ushort DAT_0046a01a; undefined1 DAT_00469fc2; undefined2 DAT_0046a026; undefined2 DAT_0046a01e; undefined2 DAT_0046a020; undefined2 DAT_0046a022; undefined2 DAT_0046a024; undefined1 DAT_00469fbf; undefined2 DAT_0046a056; undefined2 DAT_0046a058; undefined4 DAT_0046a098; undefined2 DAT_0046a096; undefined2 DAT_0046a062; undefined2 DAT_0046a05a; undefined2 DAT_0046a05c; undefined2 DAT_0046a05e; undefined2 DAT_0046a060; undefined1 DAT_00469fc4; undefined1 DAT_00469fc1; undefined2 DAT_0046a030; undefined2 DAT_0046a028; undefined2 DAT_0046a02a; undefined2 DAT_0046a02c; undefined2 DAT_0046a02e; undefined2 DAT_0046a03a; undefined2 DAT_0046a032; undefined2 DAT_0046a034; undefined2 DAT_0046a036; undefined2 DAT_0046a038; undefined2 DAT_0046a09c; undefined2 DAT_0046a09e; undefined4 DAT_0046a0de; undefined2 DAT_0046a0dc; undefined2 DAT_0046a0a8; undefined2 DAT_0046a0a0; undefined2 DAT_0046a0a2; undefined2 DAT_0046a0a4; undefined2 DAT_0046a0a6; undefined2 DAT_0046a0e2; undefined2 DAT_0046a0e4; undefined4 DAT_0046a124; undefined2 DAT_0046a122; undefined2 DAT_0046a0ee; undefined2 DAT_0046a0e6; undefined2 DAT_0046a0e8; undefined2 DAT_0046a0ea; undefined2 DAT_0046a0ec; undefined2 DAT_0046a0f8; undefined2 DAT_0046a0f0; undefined2 DAT_0046a0f2; undefined2 DAT_0046a0f4; undefined2 DAT_0046a0f6; undefined2 DAT_0046a102; undefined2 DAT_0046a0fa; undefined2 DAT_0046a0fc; undefined2 DAT_0046a0fe; undefined2 DAT_0046a100; undefined2 DAT_0046a10c; undefined2 DAT_0046a104; undefined2 DAT_0046a106; undefined2 DAT_0046a108; undefined2 DAT_0046a10a; undefined2 DAT_0046a128; undefined2 DAT_0046a12a; undefined4 DAT_0046a16a; undefined2 DAT_0046a168; undefined2 DAT_0046a134; undefined2 DAT_0046a12c; undefined2 DAT_0046a12e; undefined2 DAT_0046a130; undefined2 DAT_0046a132; undefined2 DAT_0046a16e; undefined2 DAT_0046a170; undefined4 DAT_0046a1b0; undefined2 DAT_0046a1ae; undefined2 DAT_0046a17a; undefined2 DAT_0046a172; undefined2 DAT_0046a174; undefined2 DAT_0046a176; undefined2 DAT_0046a178; undefined2 DAT_0046a1b4; undefined2 DAT_0046a1b6; undefined4 DAT_0046a1f6; undefined2 DAT_0046a1f4; undefined2 DAT_0046a1c0; undefined2 DAT_0046a1b8; undefined2 DAT_0046a1ba; undefined2 DAT_0046a1bc; undefined2 DAT_0046a1be; undefined2 DAT_0046a1fa; undefined2 DAT_0046a1fc; undefined4 DAT_0046a23c; undefined2 DAT_0046a23a; undefined2 DAT_0046a206; undefined2 DAT_0046a1fe; undefined2 DAT_0046a200; undefined2 DAT_0046a202; undefined2 DAT_0046a204; undefined2 DAT_0046a06c; undefined2 DAT_0046a064; undefined2 DAT_0046a066; undefined2 DAT_0046a068; undefined2 DAT_0046a06a; undefined2 DAT_00463264; undefined2 DAT_00463266; undefined2 DAT_00463269; undefined2 DAT_0046326b; undefined DAT_00463367; int DAT_0046a2d0; undefined DAT_004631b4; undefined DAT_004631b6; undefined DAT_00469ede; undefined DAT_00469ee0; undefined2 *DAT_00469ea4; short DAT_00469ea8; undefined4 DAT_0046a354; undefined2 DAT_004631d4; undefined DAT_0046a358; short DAT_0046336c; int DAT_0046a35c; undefined DAT_0046336e; int DAT_0046a360; int DAT_0046a364; undefined *DAT_00463374; undefined DAT_00463370; undefined4 *DAT_0046a35c; void *DAT_0046a360; void *DAT_0046a364; undefined DialogProc; undefined DAT_00461a9c; string s_Sound_004633bc; undefined DAT_004633c2; string s_MIDIType_004633c9; pointer lpKeyName_0046337c; string s_CheatKeys_004633d2; pointer lpDefault_0046338c; pointer lpKeyName_00463380; pointer lpKeyName_00463384; LPCSTR lpAppName_0046a370; undefined DAT_004633ee; string s_wavemix_004633f1; undefined DAT_004634b0; undefined DAT_00463490; undefined DAT_004633fc; undefined2 DAT_004633fe; pointer PTR_LAB_00463480; undefined2 DAT_00463492; undefined4 DAT_0046a87c; undefined4 DAT_0046a88c; undefined $INTS4; undefined $INTS5; uint DAT_0046a878; undefined DAT_0046a89e; undefined DAT_0046a8a0; undefined DAT_0046a8a2; ushort DAT_0046a8a4; undefined DAT_0046a8b2; short DAT_0046a8b4; short DAT_0046a8b6; short DAT_0046a8b8; undefined2 DAT_0046a8ba; int DAT_0046a90c; undefined2 DAT_0046a912; undefined DAT_0046a918; short DAT_0046a91c; undefined2 DAT_004634d0; undefined2 DAT_0046a8b6; undefined2 DAT_0046a8b8; undefined2 DAT_0046a8b4; undefined2 DAT_0046a8ae; undefined2 DAT_0046a8b0; undefined DAT_0046a914; undefined DAT_004634d2; undefined LAB_0044c2cc; pointer PTR_LAB_004634d4; undefined DAT_004634dc; undefined DAT_0046a8bc; undefined4 DAT_004634cc; undefined *DAT_004634cc; undefined DAT_004634e0; short DAT_0046a926; undefined DAT_0046a928; undefined DAT_0046a92c; undefined DAT_004634e4; undefined2 DAT_0046a926; undefined DAT_0046a930; undefined DAT_0046a934; undefined4 cache; undefined2 $CurrentColorClamped; undefined $NFNT; undefined2 currentFont; int DAT_00460070; undefined DAT_004634ea; undefined DAT_0046a93c; undefined DAT_004634e8; short DAT_004634ec; undefined2 DAT_004634ec; ushort DAT_0046a9e4; undefined4 DAT_0046a95c; undefined4 DAT_0046a950; int DAT_0046a97c; undefined4 DAT_0046a960; undefined4 DAT_0046a954; undefined DAT_0046a974; undefined4 DAT_0046a964; short DAT_0046a9ee; undefined DAT_0046350e; undefined DAT_0046350a; undefined4 DAT_0046a978; int DAT_0046a984; undefined DAT_0046a9e0; int DAT_0046a98c; int DAT_0046a988; undefined2 *DAT_0046a97c; uint DAT_0046a984; Dlist *DAT_0046aa04; int DAT_0046a9e8; undefined FUN_0044dcaa; undefined4 DAT_0046aa04; undefined FUN_0044dcbd; short DAT_0046aa36; undefined4 DAT_0046a9f8; undefined4 DAT_0046a9fc; undefined4 DAT_0046a9f0; undefined4 DAT_0046a9f4; undefined FUN_0044dd69; undefined FUN_0044df5a; short DAT_0046a980; undefined2 DAT_0046aa0e; void *DAT_0046aa30; short DAT_0046aa08; short DAT_0046aa0a; short DAT_0046aa0c; int DAT_0046aa10; void *DAT_0046aa14; void *DAT_0046aa18; void *DAT_0046aa1c; void *DAT_0046aa20; short DAT_0046aa28; short *DAT_0046aa24; void *DAT_0046aa2a; undefined $BLUE; undefined FUN_0044e813; undefined4 DAT_0046aa30; void *DAT_0046aa24; undefined4 DAT_0046aa00; undefined DAT_00463548; short DAT_0046a972; undefined DAT_004634f8; undefined2 DAT_0046a980; undefined DAT_00463544; int DAT_0046aa00; undefined DAT_0046356a; undefined DAT_0046aa3a; undefined DAT_0046aa3b; uint DAT_0046a958; uint DAT_0046a954; uint DAT_0046aa00; undefined DAT_0046aa34; short DAT_0046350c; undefined2 DAT_0046aa36; undefined4 DAT_0046a98c; undefined DAT_0046a990; undefined DAT_0046a9e2; undefined2 DAT_0046a9e4; void *DAT_0046a9e8; undefined4 DAT_0046a948; uint DAT_0046a94c; undefined2 DAT_0046350c; undefined FUN_0044de74; undefined4 DAT_004634f4; int DAT_0046a978; DlistNode *DAT_0046a98c; undefined LAB_0044de1e; undefined LAB_0044e799; undefined LAB_0044ef1a; undefined FUN_0044ed39; undefined FUN_0044ee27; undefined FUN_0044ef41; string s__00463690; undefined4 *DAT_0046aaa4; undefined DAT_004635dc; undefined FUN_004504b1; undefined DAT_0046361c; undefined DAT_0046aa94; undefined DAT_0046aa98; undefined DAT_00463670; int *DAT_0046aaa4; pointer PTR_FUN_004636b0; undefined DAT_00450e87; undefined DAT_00463778; char DAT_00460058; undefined LAB_00451b20; undefined LAB_00451b99; string s___GetExceptDLLinfo_00463790; undefined LAB_00451ce4; undefined4 DAT_0046aaac; int DAT_0046aec0; int DAT_00463b78; undefined4 DAT_004637b8; undefined *PTR_FUN_00464428; undefined LAB_00453280; undefined *PTR_DAT_00463c20; undefined *PTR_FUN_0046442c; undefined LAB_00453258; undefined4 DAT_00463b7c; undefined1 DAT_0046abf0; undefined DAT_0046abfa; string s_Filename_too_long_00464084; undefined1 DAT_004640ac; uint DAT_00463b78; uint *DAT_00463b78; undefined DAT_004643e0; int DAT_0046ae2c; undefined4 DAT_0046ab50; undefined4 DAT_00463b78; undefined FUN_004538e8; undefined *PTR_LAB_00464118; HANDLE DAT_0046ab50; undefined DAT_0046ab54; undefined DAT_0046ab58; undefined DAT_0046ac0c; undefined DAT_00463cf4; undefined DAT_00464120; undefined DAT_0046411c; undefined DAT_00464358; undefined *PTR_FUN_0046435c; undefined4 DAT_004643c0; undefined *PTR_LAB_004643c4; undefined *PTR_LAB_004643c8; undefined4 $Random.p; undefined4 $Random.q; int DAT_004643d8; int DAT_004643d4; int *DAT_0046ae28; int DAT_0046ae24; int DAT_0046ae10; undefined4 DAT_0046ac10; undefined4 DAT_0046ac14; int DAT_004643dc; undefined LAB_00454744; char DAT_00460069; LPCVOID lpBuffer_004643e4; string s_Abnormal_program_termination_00464404; int DAT_00464424; undefined DAT_0046ae30; undefined *PTR_FUN_00464430; undefined4 DAT_0046aec4; void *DAT_0046aeb0; void *DAT_0046aed4; undefined4 DAT_00464464; undefined DAT_0046443c; char DAT_00464438; undefined *DAT_0046aaa8; undefined FUN_00454b04; undefined HandlerRoutine_00454c74; undefined DAT_0046448c; undefined4 DAT_00464544; undefined4 DAT_00464548; int UNK_00464554; undefined DAT_00464668; undefined DAT_0046466c; undefined DAT_0046453c; // WARNING: Globals starting with '_' overlap smaller symbols at the same address void entry(void) { char cVar1; int *piVar2; code *pcVar3; UINT UVar4; undefined4 in_ECX; int iVar5; char cVar6; int *piVar7; char *pcVar8; HGLOBAL *ppvVar9; undefined2 in_FS; int iStack_18; undefined1 auStack_14 [8]; _DAT_0046005d = DAT_00460059 << 2; ppvVar9 = &hResData_004646b0; for (iVar5 = 0x6840; iVar5 != 0; iVar5 = iVar5 + -1) { *(undefined1 *)ppvVar9 = 0; ppvVar9 = (HGLOBAL *)((int)ppvVar9 + 1); } piVar2 = (int *)segment(in_FS,4); iVar5 = *piVar2; _DAT_00460061 = *(undefined4 *)(iVar5 + -8); _DAT_00460065 = *(undefined4 *)(iVar5 + -4); DAT_0046aaa4 = iVar5 + -4; FUN_00451bf7(_DAT_00460065,iVar5 + -8,in_ECX); _DAT_0046006a = GetModuleHandleA((LPCSTR)0x0); _DAT_0046aee4 = uRam0046003c & 1; FUN_00453fe4(); FUN_0045420c(); FUN_0045207c(); _DAT_0046aed8 = 1; _DAT_0046aedc = &PTR_DAT_0046002c; DAT_0046aec0 = auStack_14; FUN_00451df8(); DAT_0046aec4 = GetEnvironmentStrings(); DAT_0046aec8 = GetCommandLineA(); FUN_00454a08(); piVar2 = (int *)FUN_00454d74(); if (piVar2 != (int *)0x0) { piVar2[*piVar2 + 1] = -1; while (pcVar3 = (code *)FUN_00454d7c(), pcVar3 != (code *)0x0) { (*pcVar3)(); } piVar7 = piVar2; for (iStack_18 = 0; piVar7 = piVar7 + 1, iStack_18 < *piVar2; iStack_18 = iStack_18 + 1) { (**(code **)(*piVar7 + 0x18))(); } } while (pcVar3 = (code *)FUN_00454d7c(), pcVar3 != (code *)0x0) { (*pcVar3)(); } pcVar8 = DAT_0046aec8; if ((uRam0046003c & 1) == 0) { UVar4 = (*(code *)PTR_Main_00460044)(); DoSomethingThenExit_(UVar4); } else { for (; (*pcVar8 == ' ' || (*pcVar8 == '\t')); pcVar8 = pcVar8 + 1) { } if (*pcVar8 == '\"') { cVar6 = '\"'; pcVar8 = pcVar8 + 1; } else { cVar6 = ' '; } for (; ((cVar1 = *pcVar8, cVar1 != '\0' && (cVar6 != cVar1)) && (cVar1 != '\t')); pcVar8 = pcVar8 + 1) { } if (*pcVar8 == '\"') { pcVar8 = pcVar8 + 1; } for (; ((cVar6 = *pcVar8, cVar6 != '\0' && (cVar6 == ' ')) || (cVar6 == '\t')); pcVar8 = pcVar8 + 1) { } GetModuleHandleA((LPCSTR)0x0); UVar4 = (*(code *)PTR_Main_00460044)(); DoSomethingThenExit_(UVar4); } return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void __GetExceptDLLinfo(void) { int in_FS_OFFSET; undefined4 *in_stack_00000004; // 0x1006e 1 __GetExceptDLLinfo _DAT_004636d0 = *(int *)(*(int *)(in_FS_OFFSET + 4) + -8) + 0x24; *in_stack_00000004 = 0x82727349; in_stack_00000004[1] = &DAT_004636b4; return; } void FUN_00410074(void) { HGLOBAL hResData; LPVOID pvVar1; hResData_004646b4 = FindResourceA(_Module,(LPCSTR)&lpName_00460074,(LPCSTR)&lpType_0046007d); if (hResData_004646b4 == (HRSRC)0x0) { MessageBoxA((HWND)_Module,s_I_could_not_find_the_font_conver_00460082, (LPCSTR)&lpCaption_004600ae,0x10); DoSomethingThenExit_(1); } hResData = LoadResource(_Module,hResData_004646b4); if (hResData == (HGLOBAL)0x0) { MessageBoxA((HWND)_Module,s_I_could_not_find_the_font_conver_004600b2, (LPCSTR)&lpCaption_004600de,0x10); DoSomethingThenExit_(1); } hResData_004646b0 = hResData; pvVar1 = LockResource(hResData); if (pvVar1 == (LPVOID)0x0) { MessageBoxA((HWND)_Module,s_I_could_not_find_the_font_conver_004600e2, (LPCSTR)&lpCaption_0046010e,0x10); DoSomethingThenExit_(1); } DAT_00460070 = pvVar1; return; } void FUN_00410126(void) { FreeResource(hResData_004646b0); FreeResource(hResData_004646b4); return; } void FUN_00410268(void) { FUN_0042681e(); return; } void FUN_0041026e(void) { short in_stack_00000004; if (in_stack_00000004 < 0x100) { FUN_00426848(); if (DAT_004601a4 != (code *)0x0) { (*DAT_004601a4)(); } } return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_0041029e(void) { undefined4 in_stack_00000004; if (_DAT_004601a0 == 0) { Game::onWmNcactivateOrChar = FUN_0041026e; _DAT_004601a0 = 1; } *(undefined4 *)(&DAT_004646b8 + DAT_004601a8 * 4) = in_stack_00000004; DAT_004601a4 = in_stack_00000004; return; } void FUN_004102d7(void) { *(undefined4 *)(&DAT_004646b8 + DAT_004601a8 * 4) = 0; DAT_004601a4 = 0; return; } void FUN_004102ee(void) { DAT_004601a8 = DAT_004601a8 + 1; *(undefined4 *)(&DAT_004646b8 + DAT_004601a8 * 4) = 0; DAT_004601a4 = 0; return; } void FUN_0041030c(void) { DAT_004601a8 = DAT_004601a8 + -1; DAT_004601a4 = *(undefined4 *)(&DAT_004646b8 + DAT_004601a8 * 4); return; } void FUN_0041032e(void) { int iVar1; int iVar2; int iVar3; char *in_stack_00000008; char local_2c [20]; char local_18 [20]; FUN_00454168(); iVar3 = 0; iVar2 = 0; iVar1 = FUN_0044ffac(); switch(iVar1) { case 7: local_18[0] = local_2c[0]; iVar3 = 1; local_18[1] = 0x2c; iVar2 = 2; case 6: local_18[iVar2] = local_2c[iVar3]; iVar3 = iVar3 + 1; iVar2 = iVar2 + 1; case 5: local_18[iVar2] = local_2c[iVar3]; iVar3 = iVar3 + 1; iVar2 = iVar2 + 1; case 4: local_18[iVar2] = local_2c[iVar3]; iVar3 = iVar3 + 1; local_18[iVar2 + 1] = ','; iVar2 = iVar2 + 2; case 3: local_18[iVar2] = local_2c[iVar3]; iVar3 = iVar3 + 1; iVar2 = iVar2 + 1; case 2: local_18[iVar2] = local_2c[iVar3]; iVar3 = iVar3 + 1; iVar2 = iVar2 + 1; case 1: local_18[iVar2] = local_2c[iVar3]; iVar2 = iVar2 + 1; default: local_18[iVar2] = '\0'; Strcpy(in_stack_00000008,local_18); return; } } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_00410408(void) { char cVar1; char *in_stack_0000000c; FUN_0044d81a(); DAT_004601aa = 0x404; GetFontBaselineY_(0xffff); while( true ) { cVar1 = *in_stack_0000000c; in_stack_0000000c = in_stack_0000000c + 1; if (cVar1 == '\0') break; if ((cVar1 != '\n') && (cVar1 != '\r')) { if ((cVar1 == '|') && (_DAT_004601ac != 0)) { DAT_004601aa = SetCurrentColor(DAT_004601aa); } else { FUN_0044cfcb(); } } } return; } void FUN_004104a4(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined2 *param_4, undefined2 *param_5) { undefined2 local_8; undefined2 local_6; FUN_0044fbfd(); local_8 = (undefined2)param_3; *param_4 = local_8; local_6 = (undefined2)((uint)param_3 >> 0x10); *param_5 = local_6; return; } void FUN_004104c9(void) { bool bVar1; short sVar2; undefined4 uVar3; undefined4 extraout_EDX; undefined4 extraout_EDX_00; undefined4 extraout_EDX_01; undefined4 extraout_EDX_02; undefined4 uVar4; undefined4 uVar5; sVar2 = FUN_00447146(); if (sVar2 != 0) { sVar2 = FUN_0044713f(); if (sVar2 != 0) { sVar2 = FUN_0044714d(); if (sVar2 != 0) { bVar1 = true; goto LAB_004104f0; } } } bVar1 = false; LAB_004104f0: if (bVar1) { uVar4 = 0; uVar3 = FUN_004470b0(); uVar5 = 0; uVar3 = FUN_004470d1(uVar3,extraout_EDX,uVar4); FUN_00447154(uVar3,extraout_EDX_00,uVar5,0); return; } uVar4 = 1; uVar3 = FUN_004470b0(); uVar5 = 1; uVar3 = FUN_004470d1(uVar3,extraout_EDX_01,uVar4); FUN_00447154(uVar3,extraout_EDX_02,uVar5,1); return; } void FUN_00410528(void) { ushort uVar1; int in_stack_00000004; if (in_stack_00000004 != 0) { uVar1 = (ushort)in_stack_00000004 & 0x7f; if ((&hFile_004646cc)[(short)uVar1 * 3] != (HANDLE)0x0) { CloseHandle((&hFile_004646cc)[(short)uVar1 * 3]); (&hFile_004646cc)[(short)uVar1 * 3] = (HANDLE)0x0; } if ((&hMem_004646d0)[(short)uVar1 * 3] != (HGLOBAL)0x0) { GlobalUnlock((&hMem_004646d0)[(short)uVar1 * 3]); GlobalFree((&hMem_004646d0)[(short)uVar1 * 3]); (&hMem_004646d0)[(short)uVar1 * 3] = (HGLOBAL)0x0; } } return; } uint FUN_004105b0(void) { uint uVar1; BOOL BVar2; int iVar3; int iVar4; undefined2 *puVar5; short sVar6; ushort uVar7; short *psVar8; LPCSTR in_stack_00000004; undefined1 local_68 [36]; ushort local_44; short local_42; ushort local_2c; undefined1 local_28 [6]; undefined4 local_22; DWORD local_1c; DWORD local_18; ushort local_12; undefined2 *local_10; HGLOBAL local_c; HANDLE local_8; sVar6 = 0; do { if ((&hFile_004646cc)[sVar6 * 3] == (HANDLE)0x0) break; sVar6 = sVar6 + 1; } while (sVar6 < 0x1e); if (sVar6 < 0x1e) { local_8 = CreateFileA(in_stack_00000004,0x80000000,1,(LPSECURITY_ATTRIBUTES)0x0,3,0x80, (HANDLE)0x0); if (local_8 == (HANDLE)0xffffffff) { uVar1 = 0; } else { local_c = (HGLOBAL)0x0; BVar2 = ReadFile(local_8,local_68,0x40,&local_18,(LPOVERLAPPED)0x0); if (BVar2 != 0) { local_12 = local_2c; SetFilePointer(local_8,(uint)local_2c,(PLONG)0x0,0); BVar2 = ReadFile(local_8,local_68,0x40,&local_18,(LPOVERLAPPED)0x0); if (BVar2 != 0) { uVar7 = local_42 - local_44; local_c = GlobalAlloc(0,(uint)uVar7); if (local_c != (HGLOBAL)0x0) { local_10 = GlobalLock(local_c); SetFilePointer(local_8,(uint)local_12 + (uint)local_44,(PLONG)0x0,0); BVar2 = ReadFile(local_8,local_10,(uint)uVar7,&local_18,(LPOVERLAPPED)0x0); if (BVar2 != 0) { uVar7 = local_10[1]; if ((uVar7 & 0x8000) == 0) { *(undefined4 *)(local_10 + 3) = 0; for (iVar3 = 0; iVar3 < *(char *)((int)local_10 + (uint)uVar7); iVar3 = iVar3 + 1) { *(undefined1 *)((int)local_10 + iVar3 + 6) = *(undefined1 *)((int)local_10 + iVar3 + uVar7 + 1); } local_12 = 10; puVar5 = local_10 + 5; for (iVar3 = 0; iVar3 < (int)(uint)(ushort)local_10[2]; iVar3 = iVar3 + 1) { puVar5[3] = puVar5[3] & 0x7fff; puVar5 = puVar5 + 6; } } else { local_12 = 0x16; local_1c = (uint)(ushort)local_10[5] << ((byte)*local_10 & 0x1f); do { psVar8 = (short *)((uint)local_12 + (int)local_10); if (*psVar8 == 0) break; local_1c = SetFilePointer(local_8,local_1c,(PLONG)0x0,0); BVar2 = ReadFile(local_8,local_28,0xc,&local_18,(LPOVERLAPPED)0x0); if (BVar2 != 0) { *(undefined4 *)(psVar8 + 2) = local_22; local_12 = local_12 + 8; iVar4 = (uint)local_12 + (int)local_10; for (iVar3 = 0; iVar3 < (int)(uint)(ushort)psVar8[1]; iVar3 = iVar3 + 1) { *(ushort *)(iVar4 + 6) = *(ushort *)(iVar4 + 6) & 0x7fff; *(undefined4 *)(iVar4 + 8) = local_22; iVar4 = iVar4 + 0xc; local_12 = local_12 + 0xc; local_1c = local_1c + (0xc - (uint)(local_22._3_1_ == '\0')); } } } while (psVar8[1] != 0); } } GlobalUnlock(local_c); } } } (&hFile_004646cc)[sVar6 * 3] = local_8; (&hMem_004646d0)[sVar6 * 3] = local_c; uVar1 = (int)sVar6 | 0x80; } } else { uVar1 = 0; } return uVar1; } uint FUN_004107fe(void) { ushort uVar1; LPVOID pvVar2; int iVar3; int iVar4; short *psVar5; short sVar6; ushort uVar7; uint uVar8; int in_stack_00000004; short in_stack_00000008; int *in_stack_0000000c; if (in_stack_00000004 != 0) { iVar4 = *in_stack_0000000c; uVar1 = (ushort)in_stack_00000004 & 0x7f; pvVar2 = GlobalLock((&hMem_004646d0)[(short)uVar1 * 3]); if ((*(ushort *)((int)pvVar2 + 2) & 0x8000) == 0) { if (*(int *)((int)pvVar2 + 6) == iVar4) { uVar7 = 10; iVar4 = (int)pvVar2 + 10; for (sVar6 = 0; (int)sVar6 < (int)(uint)*(ushort *)((int)pvVar2 + 4); sVar6 = sVar6 + 1) { if (*(short *)(iVar4 + 6) == in_stack_00000008) { GlobalUnlock((&hMem_004646d0)[(short)uVar1 * 3]); return (uint)uVar7; } iVar4 = iVar4 + 0xc; uVar7 = uVar7 + 0xc; } } } else { uVar8 = 0x16; do { psVar5 = (short *)(uVar8 + (int)pvVar2); if (*psVar5 == 0) break; uVar7 = (short)uVar8 + 8; uVar8 = (uint)uVar7; if (*(int *)(psVar5 + 2) == iVar4) { iVar3 = uVar8 + (int)pvVar2; for (sVar6 = 0; (int)sVar6 < (int)(uint)(ushort)psVar5[1]; sVar6 = sVar6 + 1) { if (*(short *)(iVar3 + 6) == in_stack_00000008) { GlobalUnlock((&hMem_004646d0)[(short)uVar1 * 3]); return uVar8; } iVar3 = iVar3 + 0xc; uVar8 = (uint)(ushort)((short)uVar8 + 0xc); } } else { uVar8 = (uint)(ushort)(uVar7 + psVar5[1] * 0xc); } } while (psVar5[1] != 0); } GlobalUnlock((&hMem_004646d0)[(short)uVar1 * 3]); } return 0; } HGLOBAL __cdecl FUN_00410937(int param_1,ushort param_2) { undefined2 uVar1; ushort uVar2; undefined2 *puVar3; HGLOBAL hMem; BOOL BVar4; ushort uVar5; SIZE_T dwBytes; DWORD local_c; LPVOID local_8; if (param_1 == 0) { hMem = (HGLOBAL)0x0; } else { uVar5 = (ushort)param_1 & 0x7f; puVar3 = GlobalLock((&hMem_004646d0)[(short)uVar5 * 3]); uVar1 = *puVar3; uVar2 = *(ushort *)((int)puVar3 + (uint)param_2); dwBytes = (uint)((ushort *)((int)puVar3 + (uint)param_2))[1] << ((byte)*puVar3 & 0x1f); hMem = GlobalAlloc(0,dwBytes); if (hMem != (HGLOBAL)0x0) { local_8 = GlobalLock(hMem); SetFilePointer((&hFile_004646cc)[(short)uVar5 * 3],(uint)uVar2 << ((byte)uVar1 & 0x1f), (PLONG)0x0,0); BVar4 = ReadFile((&hFile_004646cc)[(short)uVar5 * 3],local_8,dwBytes,&local_c, (LPOVERLAPPED)0x0); GlobalUnlock(hMem); if (BVar4 == 0) { GlobalFree(hMem); hMem = (HGLOBAL)0x0; } } GlobalUnlock((&hMem_004646d0)[(short)uVar5 * 3]); } return hMem; } LPVOID __cdecl FUN_00410a01(HGLOBAL param_1) { LPVOID pvVar1; if (param_1 != (HGLOBAL)0x0) { pvVar1 = GlobalLock(param_1); return pvVar1; } return (LPVOID)0x0; } BOOL FUN_00410a17(void) { BOOL BVar1; HGLOBAL in_stack_00000004; if (in_stack_00000004 != (HGLOBAL)0x0) { BVar1 = GlobalUnlock(in_stack_00000004); return BVar1; } return 0; } undefined4 FUN_00410a30(void) { HGLOBAL in_stack_00000004; if (in_stack_00000004 != (HGLOBAL)0x0) { GlobalFree(in_stack_00000004); } return 0; } int FUN_00410a44(void) { undefined2 *puVar1; ushort uVar2; int in_stack_00000004; ushort in_stack_00000008; if (in_stack_00000004 != 0) { uVar2 = (ushort)in_stack_00000004 & 0x7f; puVar1 = GlobalLock((&hMem_004646d0)[(short)uVar2 * 3]); (&lDistanceToMove_004646d4)[(short)uVar2 * 3] = (uint)*(ushort *)((int)puVar1 + (uint)in_stack_00000008) << ((byte)*puVar1 & 0x1f); GlobalUnlock((&hMem_004646d0)[(short)uVar2 * 3]); } return in_stack_00000004; } undefined4 FUN_00410aa2(void) { undefined4 in_stack_00000004; return in_stack_00000004; } DWORD FUN_00410aaa(undefined4 param_1,undefined4 param_2,DWORD param_3,int param_4,LPVOID param_5, DWORD param_6) { BOOL BVar1; ushort uVar2; DWORD local_8; if (param_4 != 0) { uVar2 = (ushort)param_4 & 0x7f; local_8 = param_3; SetFilePointer((&hFile_004646cc)[(short)uVar2 * 3],(&lDistanceToMove_004646d4)[(short)uVar2 * 3] ,(PLONG)0x0,0); BVar1 = ReadFile((&hFile_004646cc)[(short)uVar2 * 3],param_5,param_6,&local_8,(LPOVERLAPPED)0x0) ; if ((short)BVar1 == 0) { param_6 = 0; } (&lDistanceToMove_004646d4)[(short)uVar2 * 3] = (&lDistanceToMove_004646d4)[(short)uVar2 * 3] + local_8; } return param_6; } void FUN_00410b42(void) { HBRUSH hbr; HDC hDC; short in_stack_00000004; short in_stack_00000008; ushort in_stack_0000000c; RECT local_14; hbr = CreateSolidBrush(in_stack_0000000c | 0x1000000); hDC = GetDC(Game::window); local_14.left = (LONG)in_stack_00000004; local_14.top = (LONG)in_stack_00000008; local_14.right = in_stack_00000004 + 0x14; local_14.bottom = in_stack_00000008 + 0x14; FillRect(hDC,&local_14,hbr); ReleaseDC(Game::window,hDC); DeleteObject(hbr); return; } void FUN_00410cfc(void) { Game::ShowTaskbar(1); if (Game::window != (HWND)0x0) { DestroyWindow(Game::window); UnregisterClassA(s_TLCSSG_004601be,_Module); Game::window = (HWND)0x0; } return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address undefined4 __cdecl Game::Main(HMODULE param_1,int param_2,undefined4 param_3,undefined4 param_4) { ATOM windowClass; HWND desktopWindow; undefined4 uVar1; BOOL BVar2; short desktopHeight; tagMSG local_b4; _OSVERSIONINFOA local_98; LPRECT desktopRect; if ((param_2 == 0) && (desktopWindow = FindWindowA(s_TLCSSG_004601be,(LPCSTR)0x0), desktopWindow != (HWND)0x0)) { IsIconic(desktopWindow); ShowWindow(desktopWindow,9); SetForegroundWindow(desktopWindow); return 0; } local_98.dwOSVersionInfoSize = 0x94; GetVersionExA(&local_98); _dwPlatformId = local_98.dwPlatformId; _Module = param_1; desktopRect = &_DesktopRect; desktopWindow = GetDesktopWindow(); GetWindowRect(desktopWindow,desktopRect); desktopHeight = (short)_DesktopRect.bottom - (short)_DesktopRect.top; FUN_00410074(); windowClass = CreateWindow(param_4); if (windowClass != 0) { DAT_00464858 = desktopHeight - ((short)_DesktopRect.bottom - (short)_DesktopRect.top); FUN_004548e0(FUN_00410cfc); uVar1 = FUN_0042ffd7(); if ((short)uVar1 != 0) { _DAT_00464874 = 1; do { do { FUN_0044b24d(); FUN_00412784(); BVar2 = PeekMessageA(&local_b4,(HWND)0x0,0,0,1); } while (BVar2 == 0); TranslateMessage(&local_b4); DispatchMessageA(&local_b4); } while( true ); } } FUN_00410126(); FUN_00410cfc(); return 0; } void __cdecl FUN_00410f13(HWND param_1) { tagPAINTSTRUCT local_44; BeginPaint(param_1,&local_44); (*(code *)PTR_FUN_0046021c)(); EndPaint(param_1,&local_44); return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address LRESULT __cdecl MainWndProc(HWND window,UINT uMsg,uint wParam,uint lParam) { ushort uVar1; short sVar2; HMENU hMenu; uint uVar3; LRESULT LVar4; UINT uEnable; tagPOINT local_18; tagPOINT local_10; BOOL local_8; // 0x10f44 2 MainWndProc local_8 = IsIconic(window); if ((int)uMsg < WM_KEYUP + 1) { if (uMsg != WM_KEYUP) { if ((int)uMsg < WM_ERASEBKGND + 1) { if (uMsg == WM_ERASEBKGND) { return 1; } switch(uMsg) { case 1: // WM_CREATE PostMessageA(window,0x400,0,0); break; case 2: // WM_DESTROY PostQuitMessage(0); _DAT_004601b6 = 0xffff; return 0; case 6: // WM_ACTIVATE if (((wParam != 0) && ((short)(lParam >> 0x10) == 0)) && (_DAT_00464874 == 0)) { _DAT_00464874 = 1; Game::ShowTaskbar(0); Draw::DirtyRect((Rect16 *)0x0); (*(code *)Game::onWmActivate)(); Game::needToMakeGameAnnoying = 1; InvalidateRect(Game::window,(RECT *)0x0,0); } break; case 0xf: // WM_PAINT if (Game::needToMakeGameAnnoying != 0) { Game::needToMakeGameAnnoying = 0; Game::MakeWindowAnnoying(); } FUN_00410f13(window); break; case 0x10: // WM_CLOSE (*(code *)Game::onWmQueryendsessionOrSyscommandF060h)(); return 0; case 0x11: // WM_QUERYENDSESSION if (local_8 != 0) { ShowWindow(window,9); } SetForegroundWindow(window); sVar2 = (*(code *)Game::onWmQueryendsessionOrSyscommandF060h)(); return (int)sVar2; } } else if ((int)uMsg < WM_DISPLAYCHANGE + 1) { if (uMsg != WM_DISPLAYCHANGE) { if (uMsg == WM_ACTIVATEAPP) { if (wParam == 0) { if (_DAT_00464874 != 0) { Game::ShowTaskbar(1); (*(code *)Game::onWmActivateapp)(); } _DAT_00464874 = 0; } } else if (uMsg == WM_WINDOWPOSCHANGED) { return 0; } } } else if ((uMsg != WM_NCACTIVATE) && (uMsg == 0x100)) { GetAsyncKeyState(0x10); DAT_00464878 = 0; if ((lParam & 0x40000000) == 0) { if ((0x20 < wParam) && (wParam < 0x29)) { DAT_00464878 = (short)wParam; (*(code *)Game::onWmNcactivateOrChar)(); return 0; } if ((0x6f < wParam) && (wParam < 0x88)) { DAT_00464878 = (short)wParam; (*(code *)Game::onWmNcactivateOrChar)(); return 0; } } } } } else if ((int)uMsg < WM_INITMENUPOPUP + 1) { if (uMsg != WM_INITMENUPOPUP) { if ((int)uMsg < WM_SYSCOMMAND + 1) { if (uMsg == WM_SYSCOMMAND) { uVar3 = wParam & 0xfff0; if (uVar3 == 2000) { (*(code *)Game::onWmSyscommand2000)(); return 0; } if (uVar3 == 0xf010) { if (local_8 == 0) { return 0; } } else if (uVar3 == 0xf060) { (*(code *)Game::onWmQueryendsessionOrSyscommandF060h)(); return 0; } } else if (uMsg == WM_CHAR) { uVar1 = GetAsyncKeyState(0x11); if (((uVar1 & 0x8000) != 0) && (sVar2 = (*(code *)Game::onWmChar)(), sVar2 != 0)) { return 0; } _DAT_00464870 = wParam; DAT_00464878 = 0; (*(code *)Game::onWmNcactivateOrChar)(); } else if (uMsg == WM_COMMAND) { (*(code *)Game::onWmCommand)(); } } else { if (uMsg == WM_VSCROLL) { return 0; } if (uMsg == WM_INITMENU) { hMenu = GetSystemMenu(window,0); uEnable = 0; if (local_8 == 0) { uEnable = 3; } EnableMenuItem(hMenu,0xf010,uEnable); if (local_8 == 0) { (*(code *)Game::onWmInitmenu)(); } } } } } else if ((int)uMsg < WM_LBUTTONDOWN + 1) { if (uMsg == WM_LBUTTONDOWN) { if (DAT_00460268 != 0) { PostMessageA(window,WM_LBUTTONDOWN,wParam,lParam); return 0; } GetCursorPos(&local_10); ScreenToClient(window,&local_10); DAT_00464868 = local_10.x - Game::mouseInputRect.left; DAT_0046486c = local_10.y - Game::mouseInputRect.top; DAT_00464878 = 0x8000; (*(code *)Game::onWmLbuttondown)(); _DAT_004601ba = 1; } else if (uMsg == WM_MENUSELECT) { if (((lParam == 0) && ((short)(wParam >> 0x10) == -1)) && (local_8 == 0)) { (*(code *)Game::onWmMenuselect)(); } } else if (uMsg == WM_MOUSEMOVE) { DAT_00464868 = (lParam & 0xffff) - Game::mouseInputRect.left; DAT_0046486c = (lParam >> 0x10) - Game::mouseInputRect.right; return 0; } } else if (uMsg == WM_LBUTTONUP) { if (_DAT_004601ba != 0) { if (DAT_00460268 != 0) { PostMessageA(window,WM_LBUTTONUP,wParam,lParam); return 0; } GetCursorPos(&local_18); ScreenToClient(window,&local_18); DAT_00464868 = local_18.x - Game::mouseInputRect.left; DAT_0046486c = local_18.y - Game::mouseInputRect.top; DAT_00464878 = 0x8000; (*(code *)Game::onWmLbuttonup)(); _DAT_004601ba = 0; } } else if (uMsg == WM_USER) { if (local_8 == 0) { SetActiveWindow(window); } else { ShowWindow(window,9); } } LVar4 = DefWindowProcA(window,uMsg,wParam,lParam); return LVar4; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address int FUN_004114b6(void) { BOOL BVar1; int iVar2; short sVar3; tagMSG local_20; iVar2 = 0; sVar3 = 0x32; do { BVar1 = PeekMessageA(&local_20,(HWND)0x0,0,0,1); if (BVar1 == 0) { sVar3 = 0; } else { iVar2 = iVar2 + 1; TranslateMessage(&local_20); DispatchMessageA(&local_20); sVar3 = sVar3 + -1; } } while ((_DAT_00464874 == 0) || (sVar3 != 0)); if ((short)iVar2 == 0) { (*(code *)PTR_DoNothing_00460238)(); } (*(code *)PTR_DoNothing_0046023c)(); return iVar2; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address uint FUN_00411519(void) { BOOL BVar1; HWND pHVar2; tagMSG local_20; DAT_00464878 = 0; do { BVar1 = PeekMessageA(&local_20,(HWND)0x0,0,0,1); if (BVar1 != 0) { TranslateMessage(&local_20); DispatchMessageA(&local_20); } pHVar2 = (HWND)IsIconic(Game::window); if (pHVar2 == (HWND)0x0) { pHVar2 = GetActiveWindow(); if (pHVar2 != Game::window) goto LAB_0041156b; } else { LAB_0041156b: _DAT_004601b8 = 4; } if ((_DAT_004601b8 < 1) || (_DAT_004601b8 = _DAT_004601b8 + -1, _DAT_004601b6 == -1)) { return CONCAT22((short)((uint)pHVar2 >> 0x10),DAT_00464878); } } while( true ); } void FUN_00411599(void) { return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address int FUN_004115b2(void) { HCURSOR pHVar1; short sVar2; int iVar3; ushort in_stack_00000004; iVar3 = 0; while( true ) { sVar2 = (short)iVar3; if (_DAT_004601c8 <= sVar2) { if (sVar2 != 10) { (&DAT_004648d4)[sVar2 * 3] = in_stack_00000004; pHVar1 = LoadCursorA(_Module,(LPCSTR)(uint)in_stack_00000004); *(HCURSOR *)((int)&hCursor_004648d0 + sVar2 * 6) = pHVar1; _DAT_004601c8 = _DAT_004601c8 + 1; } return iVar3; } if (in_stack_00000004 == (&DAT_004648d4)[sVar2 * 3]) break; iVar3 = iVar3 + 1; } return iVar3; } void FUN_0041161a(void) { HCURSOR pHVar1; int iVar2; short in_stack_00000004; if (in_stack_00000004 == -1) { pHVar1 = LoadCursorA((HINSTANCE)0x0,(LPCSTR)0x7f02); SetCursor(pHVar1); return; } if (in_stack_00000004 == 0) { pHVar1 = LoadCursorA((HINSTANCE)0x0,(LPCSTR)0x7f00); SetCursor(pHVar1); return; } iVar2 = FUN_004115b2(); SetCursor(*(HCURSOR *)((int)&hCursor_004648d0 + (short)iVar2 * 6)); return; } void FUN_004116a2(void) { HMENU hMenu; LPCSTR in_stack_00000004; hMenu = GetSystemMenu(Game::window,0); InsertMenuA(hMenu,0,0x400,0x800,(LPCSTR)0x0); InsertMenuA(hMenu,0,0x400,2000,in_stack_00000004); return; } void FUN_004116e1(void) { short in_stack_00000004; LPSTR in_stack_00000008; short in_stack_0000000c; LoadStringA(_Module,(int)in_stack_00000004,in_stack_00000008,(int)in_stack_0000000c); return; } int FUN_00411700(int param_1) { return param_1 << 9; } int FUN_0041170c(short param_1) { return (uint)(ushort)(0x17f - param_1) << 9; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void __stdcall FUN_0041172c(undefined2 *param_1,undefined2 *param_2) { undefined2 uVar1; undefined2 uVar2; undefined2 uVar3; uVar1 = param_1[1]; uVar2 = param_1[2]; uVar3 = param_1[3]; *param_2 = *param_1; param_2[1] = uVar1; param_2[2] = uVar2; param_2[3] = uVar3; // WARNING: Could not recover jumptable at 0x0041175d. Too many branches // WARNING: Treating indirect jump as call (*_DAT_004601e4)(); return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_0041179f(void) { // WARNING: Could not recover jumptable at 0x004117af. Too many branches // WARNING: Treating indirect jump as call (*_DAT_004601e8)(); return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_00411838(void) { // WARNING: Could not recover jumptable at 0x00411842. Too many branches // WARNING: Treating indirect jump as call (*_DAT_004601ec)(); return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_0041187c(void) { // WARNING: Could not recover jumptable at 0x00411886. Too many branches // WARNING: Treating indirect jump as call (*_DAT_004601f0)(); return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_004118bf(void) { // WARNING: Could not recover jumptable at 0x004118c9. Too many branches // WARNING: Treating indirect jump as call (*_DAT_004601f4)(); return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_0041191f(undefined4 param_1,uint param_2,undefined4 param_3,int param_4) { // WARNING: Could not recover jumptable at 0x00411938. Too many branches // WARNING: Treating indirect jump as call (*_DAT_00460208)(param_1,*(undefined2 *)(param_4 + 4)); return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_00411991(void) { // WARNING: Could not recover jumptable at 0x0041199b. Too many branches // WARNING: Treating indirect jump as call (*_DAT_004601fc)(); return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_004119e4(void) { // WARNING: Could not recover jumptable at 0x004119f0. Too many branches // WARNING: Treating indirect jump as call (*_DAT_004601dc)(); return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_00411ceb(void) { // WARNING: Could not recover jumptable at 0x00411cf5. Too many branches // WARNING: Treating indirect jump as call (*_DAT_004601e0)(); return; } void FUN_00411ff5(undefined4 param_1,short param_2,uint param_3) { uint uVar1; short unaff_BX; undefined2 *unaff_ESI; undefined2 *puVar2; undefined2 *unaff_EDI; undefined2 *puVar3; do { puVar2 = unaff_ESI; puVar3 = unaff_EDI; for (uVar1 = param_3 >> 1; uVar1 != 0; uVar1 = uVar1 - 1) { *puVar3 = *puVar2; puVar2 = puVar2 + 1; puVar3 = puVar3 + 1; } if ((param_3 & 1) != 0) { *(undefined1 *)puVar3 = *(undefined1 *)puVar2; } unaff_EDI = (undefined2 *)((int)unaff_EDI + (int)unaff_BX); unaff_ESI = (undefined2 *)((int)unaff_ESI + (int)unaff_BX); param_2 = param_2 + -1; } while (param_2 != 0); return; } void FUN_00412016(undefined4 param_1,short param_2,int param_3) { int iVar1; short unaff_BX; undefined1 *unaff_ESI; undefined1 *puVar2; undefined1 *unaff_EDI; undefined1 *puVar3; iVar1 = param_3; puVar3 = unaff_EDI; puVar2 = unaff_ESI; do { for (; iVar1 != 0; iVar1 = iVar1 + -1) { *unaff_EDI = *unaff_ESI; unaff_ESI = unaff_ESI + -1; unaff_EDI = unaff_EDI + -1; } unaff_EDI = puVar3 + unaff_BX; unaff_ESI = puVar2 + unaff_BX; param_2 = param_2 + -1; iVar1 = param_3; puVar3 = unaff_EDI; puVar2 = unaff_ESI; } while (param_2 != 0); return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_0041202e(void) { // WARNING: Could not recover jumptable at 0x00412038. Too many branches // WARNING: Treating indirect jump as call (*_DAT_00460204)(); return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_00412086(void) { // WARNING: Could not recover jumptable at 0x00412090. Too many branches // WARNING: Treating indirect jump as call (*_DAT_00460200)(); return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address undefined4 FUN_00412156(undefined4 param_1,undefined4 param_2,undefined4 param_3,short param_4,short param_5) { if ((param_4 == 1) || (param_5 != -1)) { DAT_00460218 = 0xfe00; _DAT_004601dc = &LAB_00411a00; _DAT_004601e0 = &LAB_00411d03; DAT_00460214 = FUN_0041170c; DAT_00460210 = &LAB_0041171c; _DAT_004601e8 = &LAB_004117b5; } else { DAT_00460218 = 0x200; _DAT_004601dc = &LAB_00411b76; _DAT_004601e0 = &LAB_00411e7c; DAT_00460214 = FUN_00411700; DAT_00460210 = &LAB_00411706; _DAT_004601e8 = &LAB_004117fa; } _DAT_004601fc = &LAB_004119a1; _DAT_004601ec = &LAB_00411848; _DAT_004601f0 = &LAB_0041188c; _DAT_004601f4 = &LAB_004118cf; _DAT_004601e4 = &LAB_00411763; _DAT_00460204 = &LAB_0041203e; _DAT_00460200 = &LAB_00412096; _DAT_0046020c = &LAB_004120ec; _DAT_00460208 = &LAB_0041193e; return param_1; } void FUN_00412250(void) { HBRUSH hbr; HDC in_stack_00000004; RECT *in_stack_00000008; hbr = GetStockObject(1); FillRect(in_stack_00000004,in_stack_00000008,hbr); return; } void FUN_00412268(void) { return; } void FUN_0041226d(void) { return; } undefined4 FUN_00412278(void) { return 0; } void __stdcall FUN_0041227c(undefined2 param_1) { char local_54 [80]; GetWinapiString(local_54,0x4e84); FUN_0041acce(local_54,(undefined1)param_1); return; } uint FUN_004122a8(void) { int in_stack_00000004; int in_stack_00000008; return CONCAT22((short)((uint)in_stack_00000008 >> 0x10), *(short *)(in_stack_00000008 + 0xc) - *(short *)(in_stack_00000004 + 0xc)); } uint FUN_004122bc(void) { int in_stack_00000004; int in_stack_00000008; return CONCAT22((short)((uint)in_stack_00000008 >> 0x10), *(short *)(in_stack_00000008 + 10) - *(short *)(in_stack_00000004 + 10)); } uint __stdcall FUN_0041233c(short *param_1,short *param_2) { short sVar1; int iVar2; uint uVar3; int iVar4; int iVar5; int iVar6; int iVar7; short sVar8; int iVar9; int iVar10; int local_8; uVar3 = 0; iVar4 = (int)*param_1; iVar5 = iVar4 + param_1[2] + -1; iVar6 = (int)param_1[1]; iVar7 = iVar6 + param_1[3] + -1; iVar2 = (int)*param_2; local_8 = iVar2 + param_2[2] + -1; iVar9 = (int)param_2[1]; iVar10 = iVar9 + param_2[3] + -1; if ((((iVar4 <= local_8) && (iVar2 <= iVar5)) && (iVar6 <= iVar10)) && (iVar9 <= iVar7)) { uVar3 = 1; sVar1 = *param_2; if (iVar2 < iVar4) { uVar3 = 3; sVar1 = *param_1; } if (iVar5 < local_8) { uVar3 = uVar3 | 2; local_8 = iVar5; } sVar8 = param_2[1]; if (iVar9 <= iVar6) { uVar3 = uVar3 | 4; sVar8 = param_1[1]; } if (iVar7 <= iVar10) { uVar3 = uVar3 | 4; iVar10 = iVar7; } if ((uVar3 & 6) != 0) { *param_2 = sVar1; param_2[1] = sVar8; param_2[2] = ((short)local_8 - sVar1) + 1; param_2[3] = ((short)iVar10 - sVar8) + 1; } } return uVar3; } int FUN_00412404(void) { DlistNode *node; node = DlistHead(Dlist_00465724); if (node == (DlistNode *)0x0) { FUN_0041227c(2); } DlistRemove(Dlist_00465724,node); return (int)node; } void __stdcall BigNode24h::switchLists_(BigNode24h *node) { node->field14_0x20 = 0; DlistRemove(Dlist_00465720,&node->node); DlistInsert(Dlist_00465724,&node->node,-1); return; } void FUN_00412468(void) { short *psVar1; short in_stack_00000004; short in_stack_00000008; short in_stack_0000000c; BigNode24h_ARRAY_00464910[in_stack_00000004].rect0Eh.x = BigNode24h_ARRAY_00464910[in_stack_00000004].rect0Eh.x + in_stack_00000008; psVar1 = &BigNode24h_ARRAY_00464910[in_stack_00000004].rect0Eh.y; *psVar1 = *psVar1 + in_stack_0000000c; return; } void __stdcall BigThing6Eh::drainNodesAndCheckNodeSiblingIntersects(BigThing6Eh *this) { short intersects; BigNode24h *prev; BigNode24h *next; short *pj; BigNode24h node; short count; short i; short j; count = 0; pj = this->indices6Ah; for (i = 0; i < this->count58h; i = i + 1) { j = *pj; Memcpy(&node,BigNode24h_ARRAY_00464910 + j,0x24); if (((node.flags_0Ch & 0x10) == 0) && ((node.flags_0Ch & 0x106) != 0)) { FUN_00412086(); Draw::DirtyRect(&node.rect0Eh); for (prev = (BigNode24h *)DlistPrev(&node.node); prev != (BigNode24h *)0x0; prev = (BigNode24h *)DlistPrev(&prev->node)) { intersects = Rect16::intersects(&node.rect0Eh,&prev->rect0Eh); if (intersects != 0) { prev->flags_0Ch = prev->flags_0Ch | 0x40; } } for (next = (BigNode24h *)DlistNext(&node.node); next != (BigNode24h *)0x0; next = (BigNode24h *)DlistNext(&next->node)) { intersects = Rect16::intersects(&node.rect0Eh,&next->rect0Eh); if (intersects != 0) { next->flags_0Ch = next->flags_0Ch | 0x40; } } } if ((node.flags_0Ch & 10) != 0) { BigNode24h::switchLists_(BigNode24h_ARRAY_00464910 + j); count = count + 1; } pj = pj + 1; } this->count58h = this->count58h - count; return; } // WARNING: Type propagation algorithm not settling void FUN_004125a8(void) { ushort uVar1; short sVar2; Rect16 *pRVar3; undefined2 uVar5; undefined4 uVar4; DlistNode *node; Rect16 *rectOptional; undefined4 extraout_EDX; undefined4 extraout_EDX_00; undefined4 extraout_EDX_01; undefined4 uVar6; undefined4 extraout_EDX_02; Rect16 *node_00; rectOptional = Dlist_00465720; pRVar3 = (Rect16 *)DlistHead((Dlist *)Dlist_00465720); uVar6 = extraout_EDX; while (node_00 = pRVar3, node_00 != (Rect16 *)0x0) { uVar1 = node_00[1].w; if ((uVar1 & 0x45) != 0) { if ((uVar1 & 0x200) != 0) { DAT_00467dbc = DAT_004657da + DAT_004657de + -1; DAT_00467dc0 = DAT_004657dc + DAT_004657e0 + -1; DAT_00467dba = DAT_004657da; DAT_00467dbe = DAT_004657dc; } if (*(int *)&node_00[2].h != 0) { if ((uVar1 & 5) != 0) { rectOptional = (Rect16 *)&node_00[1].h; Draw::DirtyRect(rectOptional); uVar6 = extraout_EDX_00; } if ((uVar1 & 0x400) != 0) { pRVar3 = *(Rect16 **)&node_00[4].x; (*(code *)*(DlistNode **)&pRVar3[6].x)(pRVar3,uVar6,rectOptional); rectOptional = pRVar3; uVar6 = extraout_EDX_01; } if ((uVar1 & 0xa0) == 0) { FUN_004119e4(); } else if ((uVar1 & 0xa0) == 0x20) { uVar5 = (undefined2)((uint)*(undefined4 *)&node_00[2].h >> 0x10); uVar4 = CONCAT22(uVar5,node_00[3].y); FUN_004315b4(uVar4,uVar6,rectOptional,uVar4,CONCAT22(uVar5,node_00[3].w), *(undefined4 *)&node_00[2].h); } else if ((uVar1 & 0xa0) == 0x80) { FUN_00411ceb(); } if ((uVar1 & 8) != 0) { FUN_00431420(); if ((uVar1 & 0xa0) == 0) { FUN_004119e4(); } else if (((uVar1 & 0xa0) != 0x20) && ((uVar1 & 0xa0) == 0x80)) { FUN_00411ceb(); } FUN_004313d8(); } } if ((uVar1 & 0x800) != 0) { (**(code **)((int)&(*(DlistNode **)&node_00[4].x)[6].prev + 2))(); } if ((uVar1 & 0x10) == 0) { for (node = DlistNext((DlistNode *)node_00); node != (DlistNode *)0x0; node = DlistNext(node)) { sVar2 = Rect16::intersects((Rect16 *)&node_00[1].h,(Rect16 *)((int)&node[1].prev + 2)); if (sVar2 != 0) { *(ushort *)&node[1].prev = *(ushort *)&node[1].prev | 0x40; } } } if ((uVar1 & 0x200) != 0) { DAT_00467dbe = 0; DAT_00467dba = 0; DAT_00467dbc = 0x1ff; DAT_00467dc0 = 0x17f; } node_00[1].w = node_00[1].w & 0xffba; } pRVar3 = (Rect16 *)DlistNext((DlistNode *)node_00); rectOptional = node_00; uVar6 = extraout_EDX_02; } return; } undefined4 FUN_00412784(void) { undefined4 uVar1; FUN_00413a24(); DoSomethingBig(); uVar1 = FUN_00430bbc(); FUN_00413a2c(); return uVar1; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_004127bc(void) { short *psVar1; short sVar2; BigNode24h *node; if (_DAT_00460258 == 0) { Dlist_0046490c = DlistNew(); Dlist_0046572c = DlistNew(); Dlist_00465720 = DlistNew(); Dlist_00465724 = DlistNew(); Dlist_00465728 = DlistNew(); Dlist_00465730 = DlistNew(); Dlist_00465734 = DlistNew(); sVar2 = 0; psVar1 = &DAT_00465744; do { *psVar1 = sVar2; psVar1[1] = 0; sVar2 = sVar2 + 1; psVar1 = psVar1 + 8; } while (sVar2 < 10); node = BigNode24h_ARRAY_00464910; sVar2 = 0; do { *(short *)&node->field1_0x8 = sVar2; node->flags_0Ch = 0; DlistInsert(Dlist_00465724,&node->node,-1); node = node + 1; sVar2 = sVar2 + 1; } while (sVar2 < 100); DAT_004657d8 = FUN_0044ca15(); FUN_00413a88(&DAT_004657e2,DAT_00467dba,DAT_00467dbe,DAT_00467dbc,DAT_00467dc0); FUN_00413acc(DAT_00467dba,DAT_00467dbe,DAT_00467dbc,DAT_00467dc0); DAT_00460268 = 0; _DAT_00460258 = 1; } return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_004128c8(void) { undefined4 uVar1; DlistNode *pDVar2; DlistNode *pDVar3; undefined4 extraout_EDX; undefined4 extraout_EDX_00; Dlist *pDVar4; if (_DAT_00460258 != 0) { FUN_00413a24(); pDVar2 = DlistHead(Dlist_0046572c); while (pDVar2 != (DlistNode *)0x0) { pDVar3 = DlistNext(pDVar2); PoolFreeIfNotNull(pDVar2[1].next); PoolFree(pDVar2); pDVar2 = pDVar3; } pDVar4 = Dlist_00465728; pDVar2 = DlistHead(Dlist_00465728); uVar1 = extraout_EDX; while (pDVar2 != (DlistNode *)0x0) { FUN_00412d0c((uint)pDVar2,uVar1,(uint)pDVar4,(uint)pDVar2); pDVar4 = Dlist_00465728; pDVar2 = DlistHead(Dlist_00465728); uVar1 = extraout_EDX_00; } PoolFreeIfNotNull(Dlist_0046572c); PoolFreeIfNotNull(Dlist_00465724); PoolFreeIfNotNull(Dlist_00465720); PoolFreeIfNotNull(Dlist_00465728); PoolFreeIfNotNull(Dlist_0046490c); PoolFreeIfNotNull(Dlist_00465730); PoolFreeIfNotNull(Dlist_00465734); _DAT_00460258 = 0; } return; } void FUN_00412998(void) { bool bVar1; int in_stack_00000004; undefined2 in_stack_00000008; bVar1 = *(short *)(in_stack_00000004 + 0x1a) != 0; if (bVar1) { BigThing6Eh::processNodes_(in_stack_00000004); } FUN_004129d4(in_stack_00000004,in_stack_00000008); if (bVar1) { FUN_00412e18(in_stack_00000004); } return; } void __stdcall FUN_004129d4(int param_1,short param_2) { int iVar1; if ((param_1 != 0) && (iVar1 = *(int *)(param_1 + 0x26), iVar1 != 0)) { if (param_2 < 0) { if (*(int *)(param_1 + 0x70) != 0) { *(undefined2 *)(param_1 + 0xe) = 0xffff; *(undefined4 *)(param_1 + 0x2a) = *(undefined4 *)(param_1 + 0x70); *(undefined2 *)(param_1 + 0x10) = 0; return; } } else if (param_2 < *(short *)(iVar1 + 8)) { *(short *)(param_1 + 0xe) = param_2; *(undefined4 *)(param_1 + 0x2a) = *(undefined4 *)(*(int *)(iVar1 + 0x1a) + param_2 * 4); *(undefined2 *)(param_1 + 0x10) = 0; } } return; } void __stdcall FUN_00412a28(int param_1) { short sVar1; ushort uVar2; short *psVar3; psVar3 = *(short **)(param_1 + 0x2a); while( true ) { sVar1 = psVar3[2]; if ((-1 < sVar1) || (sVar1 == -1)) break; if (sVar1 == -6) { if (*psVar3 != -0x8000) { *(short *)(param_1 + 8) = *psVar3; } if (psVar3[1] != -0x8000) { *(short *)(param_1 + 10) = psVar3[1]; } sVar1 = psVar3[3]; *(short *)(param_1 + 0xc) = sVar1; if (sVar1 < 0) { *(undefined2 *)(param_1 + 0xc) = 0; } } psVar3 = psVar3 + 4; } if (-1 < psVar3[2]) { *(short *)(param_1 + 0x3a) = *(short *)(param_1 + 8) + *psVar3; *(short *)(param_1 + 0x3c) = *(short *)(param_1 + 10) + psVar3[1]; uVar2 = FUN_00413774(param_1,psVar3[2]); *(ushort *)(param_1 + 0x3e) = uVar2; uVar2 = FUN_00413794(param_1,psVar3[2]); *(ushort *)(param_1 + 0x40) = uVar2; } return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void * __stdcall FUN_00412ac4(ushort param_1) { ushort uVar1; bool bVar2; void *pvVar3; DlistNode *node; undefined2 uVar6; undefined2 extraout_var; uint uVar4; void *pvVar5; int iVar7; ushort *puVar8; short sVar9; uint local_c; pvVar3 = Resource::Load(param_1,&_ASEQ); if (_DAT_00462c38 == 0) { node = PoolAlloc(0x32); Memcpy(node + 1,pvVar3,10); bVar2 = 0xfe < *(short *)&node[1].prev; uVar6 = 0; if (bVar2) { ezFUN_0044fd55(node + 1,5); uVar6 = extraout_var; } iVar7 = (int)pvVar3 + 10; if (bVar2) { ezFUN_0044fdb3(iVar7,CONCAT22(uVar6,*(undefined2 *)((int)&node[1].next + 2))); } *(int *)((int)&node[2].prev + 2) = iVar7; iVar7 = iVar7 + *(short *)((int)&node[1].next + 2) * 4; *(int *)((int)&node[3].next + 2) = iVar7; puVar8 = (ushort *)(iVar7 + *(short *)&node[1].next * 4); for (sVar9 = 0; sVar9 < *(short *)&node[1].next; sVar9 = sVar9 + 1) { if (bVar2) { ezFUN_0044fdfa(puVar8); } uVar1 = *puVar8; puVar8 = puVar8 + 1; *(ushort **)(*(int *)((int)&node[3].next + 2) + sVar9 * 4) = puVar8; if (bVar2) { ezFUN_0044fd55(puVar8,(uint)uVar1 << 2); } puVar8 = puVar8 + (short)uVar1 * 4; } *(ushort **)((int)&node[2].next + 2) = puVar8; *(ushort *)((int)&node[4].next + 2) = param_1; DlistInsert(Dlist_0046490c,node,-1); local_c = 0; for (sVar9 = 0; sVar9 < *(short *)((int)&node[1].next + 2); sVar9 = sVar9 + 1) { iVar7 = *(int *)(*(int *)((int)&node[2].prev + 2) + sVar9 * 4) + *(int *)((int)&node[2].next + 2); if (bVar2) { ezFUN_0044fd55(iVar7,3); } uVar4 = (int)*(short *)(iVar7 + 2) * (int)*(short *)(iVar7 + 4); if (local_c <= uVar4 && uVar4 - local_c != 0) { local_c = uVar4; } } node[4].prev = (DlistNode *)(local_c + 8); } else { node = DlistHead(Dlist_0046490c); while ((uint)*(ushort *)((int)&node[4].next + 2) != (int)(short)param_1) { node = DlistNext(node); } } pvVar3 = PoolAlloc(0x78); Memset(pvVar3,0,0x78); *(undefined2 *)((int)pvVar3 + 0x18) = 1; *(ushort *)((int)pvVar3 + 0x42) = param_1; *(DlistNode **)((int)pvVar3 + 0x26) = node; FUN_004129d4(pvVar3,0); if ((node == (DlistNode *)0x0) || (*(short *)&node[2].next < 9)) { *(undefined2 *)((int)pvVar3 + 0x56) = 0; *(int *)((int)pvVar3 + 0x6a) = (int)pvVar3 + 0x5a; } else { *(undefined2 *)((int)pvVar3 + 0x56) = 1; pvVar5 = PoolAlloc(*(short *)&node[2].next * 2); *(void **)((int)pvVar3 + 0x6a) = pvVar5; } *(undefined2 *)((int)pvVar3 + 0x12) = 0; if (*(short *)&node[1].prev != 0) { *(short *)((int)pvVar3 + 0x12) = DAT_004657d8 / *(short *)&node[1].prev; } *(short *)((int)pvVar3 + 0x20) = DAT_0046025a; DAT_0046025a = DAT_0046025a + 1; FUN_00412a28(pvVar3); return pvVar3; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address undefined4 FUN_00412d0c(uint param_1,undefined4 param_2,uint param_3,uint param_4) { if (param_4 != 0) { if (*(short *)(param_4 + 0x1a) != 0) { BigThing6Eh::processNodes_(param_4); } FUN_00440695(*(short *)(param_4 + 0x42),&_ASEQ_); if (*(short *)(param_4 + 0x56) != 0) { PoolFree(*(void **)(param_4 + 0x6a)); } if (_DAT_00462c38 == 0) { DlistRemove(Dlist_0046490c,*(DlistNode **)(param_4 + 0x26)); PoolFree(*(void **)(param_4 + 0x26)); } FUN_0041393c(param_4); PoolFree((void *)param_4); } return 0; } undefined4 FUN_00412d84(void) { bool bVar1; DlistNode *pDVar2; Dlist *pDVar3; undefined4 extraout_EDX; undefined4 extraout_EDX_00; undefined4 uVar4; short in_stack_00000004; bVar1 = false; pDVar3 = Dlist_00465728; pDVar2 = DlistHead(Dlist_00465728); uVar4 = extraout_EDX; while ((pDVar2 != (DlistNode *)0x0 && (!bVar1))) { if (in_stack_00000004 == *(short *)((int)&pDVar2[8].next + 2)) { FUN_00412d0c((uint)pDVar2,uVar4,(uint)pDVar3,(uint)pDVar2); bVar1 = true; } pDVar3 = Dlist_00465728; pDVar2 = DlistNext((DlistNode *)Dlist_00465728); uVar4 = extraout_EDX_00; } return 0; } void __stdcall FUN_00412dc8(int param_1) { if ((param_1 != 0) && (*(short *)(param_1 + 0x1a) == 0)) { FUN_00412a28(param_1); *(undefined2 *)(param_1 + 0x18) = 4; *(undefined4 *)(param_1 + 0x14) = 0; *(undefined2 *)(param_1 + 0x1c) = 0; *(undefined2 *)(param_1 + 0x10) = 0; *(undefined2 *)(param_1 + 0x1e) = 0; FUN_00435151(Dlist_00465728,param_1,FUN_004122a8); *(undefined2 *)(param_1 + 0x1a) = 1; } return; } void __stdcall FUN_00412e18(int param_1) { short sVar1; short *psVar2; short sVar3; if (param_1 != 0) { if (*(short *)(param_1 + 0x1a) == 0) { FUN_00412dc8(param_1); } else { sVar1 = *(short *)(param_1 + 0x58); psVar2 = *(short **)(param_1 + 0x6a); sVar3 = 0; if (0 < sVar1) { do { BigNode24h_ARRAY_00464910[*psVar2].flags_0Ch = BigNode24h_ARRAY_00464910[*psVar2].flags_0Ch | 2; psVar2 = psVar2 + 1; sVar3 = sVar3 + 1; } while (sVar3 < sVar1); } *(undefined2 *)(param_1 + 0x18) = 4; *(undefined4 *)(param_1 + 0x14) = 0; *(undefined2 *)(param_1 + 0x1c) = 0; } } return; } void FUN_00412e70(void) { int in_stack_00000004; if ((in_stack_00000004 != 0) && (*(short *)(in_stack_00000004 + 0x1a) == 0)) { FUN_00412a28(in_stack_00000004); *(undefined2 *)(in_stack_00000004 + 0x18) = 0x8004; *(undefined4 *)(in_stack_00000004 + 0x14) = 0; *(undefined2 *)(in_stack_00000004 + 0x1c) = 0; *(undefined2 *)(in_stack_00000004 + 0x10) = 0; *(undefined2 *)(in_stack_00000004 + 0x1e) = 0; FUN_00435151(Dlist_00465728,in_stack_00000004,FUN_004122a8); *(undefined2 *)(in_stack_00000004 + 0x1a) = 1; } return; } void FUN_00412ec0(void) { int in_stack_00000004; int in_stack_00000008; if (*(short *)(in_stack_00000004 + 0x1a) == 0) { FUN_00412a28(in_stack_00000004); *(undefined2 *)(in_stack_00000004 + 0x18) = 4; *(int *)(in_stack_00000004 + 0x14) = DAT_00460264 + in_stack_00000008; FUN_00435151(Dlist_00465728,in_stack_00000004,FUN_004122a8); *(undefined2 *)(in_stack_00000004 + 0x1a) = 1; } return; } void __stdcall BigThing6Eh::processNodes_(BigThing6Eh *this) { short i; short *pj; short j; if ((this != (BigThing6Eh *)0x0) && (this->field25_0x1a != 0)) { this->field24_0x18 = 1; DlistRemove(Dlist_00465728,(DlistNode *)this); this->field25_0x1a = 0; pj = this->indices6Ah; if ((this->field_0x4e & 2) == 0) { for (i = 0; i < this->count58h; i = i + 1) { BigNode24h_ARRAY_00464910[*pj].flags_0Ch = 0x2; pj = pj + 1; } drainNodesAndCheckNodeSiblingIntersects(this); } else { for (i = 0; i < this->count58h; i = i + 1) { j = *pj; pj = pj + 1; BigNode24h::switchLists_(BigNode24h_ARRAY_00464910 + j); } this->count58h = 0; } } return; } uint FUN_00412f98(undefined4 param_1,uint param_2,undefined4 param_3,int param_4,ushort param_5) { uint uVar1; uint unaff_ESI; uVar1 = CONCAT22((short)(param_2 >> 0x10),*(ushort *)(param_4 + 0xc)); if ((param_5 != *(ushort *)(param_4 + 0xc)) && (*(ushort *)(param_4 + 0xc) = param_5, unaff_ESI = uVar1, *(short *)(param_4 + 0x1a) != 0)) { DlistRemove(Dlist_00465728,(DlistNode *)param_4); FUN_00435151(Dlist_00465728,param_4,FUN_004122a8); } return unaff_ESI; } void __stdcall FUN_00412fe4(int param_1) { if (param_1 != 0) { *(undefined2 *)(param_1 + 0x18) = 2; *(undefined2 *)(param_1 + 0x10) = 0; *(undefined2 *)(param_1 + 0x1c) = 0; *(undefined2 *)(param_1 + 0x1e) = 0; } return; } void DoSomethingBig(void) { short sVar1; short sVar2; ulonglong uVar3; BigThing6Eh *this; bool bVar4; ushort uVar5; short sVar6; short sVar7; uint uVar8; BigThing6Eh *pBVar9; int iVar10; short *psVar11; int iVar12; int iVar13; uint uVar14; DlistNode *pDVar15; undefined2 uVar16; short sVar17; short *psVar18; short sStack_48; short sStack_46; short sStack_28; short sStack_26; undefined2 uStack_24; undefined2 uStack_22; undefined2 *puStack_20; ushort uStack_1c; short sStack_1a; ushort uStack_16; ushort uStack_14; if (DAT_00460260 != (code *)0x0) { (*DAT_00460260)(); } uVar8 = FUN_0044ca04(); DAT_00460264 = uVar8; pBVar9 = (BigThing6Eh *)DlistHead(Dlist_00465728); joined_r0x0041303b: do { this = pBVar9; if (this == (BigThing6Eh *)0x0) { for (pDVar15 = DlistHead(Dlist_00465730); pDVar15 != (DlistNode *)0x0; pDVar15 = DlistNext(pDVar15)) { (*(code *)pDVar15[1].next)(); } FUN_004125a8(); if (DAT_00460260 != (code *)0x0) { (*DAT_00460260)(); } for (pDVar15 = DlistHead(Dlist_00465734); pDVar15 != (DlistNode *)0x0; pDVar15 = DlistNext(pDVar15)) { (*(code *)pDVar15[1].next)(); } return; } pBVar9 = (BigThing6Eh *)DlistNext((DlistNode *)this); uVar14 = *(uint *)&this->field_0x14; } while (uVar8 < uVar14); if (uVar14 == 0) { *(uint *)&this->field_0x14 = uVar8; uVar14 = uVar8; } *(uint *)&this[1].field_0x6 = uVar8; *(uint *)&this->field_0x14 = *(ushort *)&this->field_0x12 + uVar8; if (*(short *)&this->field_0x54 == 0) { iVar10 = 0; } else { uVar3 = (ulonglong)(uVar8 - uVar14) / (ulonglong)(uint)*(ushort *)&this->field_0x12; iVar10 = (int)uVar3; *(uint *)&this->field_0x14 = *(ushort *)&this->field_0x12 + uVar8; if ((short)uVar3 != 0) { iVar10 = 1; } } bVar4 = true; LAB_004130aa: if ((*(byte *)&this->field24_0x18 & 4) != 0) { if (bVar4) { BigThing6Eh::drainNodesAndCheckNodeSiblingIntersects(this); bVar4 = false; } sStack_46 = 1; psVar18 = *(short **)&this->field_0x2a; sVar17 = *(short *)&this->field_0x10; iVar12 = *(int *)&this->field_0x26; LAB_004134c3: iVar13 = (int)sVar17; sVar6 = psVar18[iVar13 * 4 + 2]; if (-1 < sVar6) { *(short *)&this->field_0x10 = sVar17; this->count58h = 0; sStack_1a = this->field24_0x18; if (*(short *)(this + 1) == 0) { puStack_20 = (undefined2 *)&DAT_004657e2; } else { puStack_20 = &DAT_004657da; } sStack_48 = 0; psVar18 = psVar18 + sVar17 * 4 + 2; if (0 < sStack_46) { do { uStack_1c = 0; iVar10 = *(int *)(*(int *)(iVar12 + 0x16) + *psVar18 * 4); *(int *)&this->field_0x22 = iVar10; iVar10 = *(int *)(*(int *)&this->field_0x26 + 0x12) + iVar10; sVar6 = *(short *)&this->field_0x8 + psVar18[-2]; sVar7 = *(short *)&this->field_0xa + psVar18[-1]; uStack_24 = *(undefined2 *)(iVar10 + 2); uStack_22 = *(undefined2 *)(iVar10 + 4); sStack_28 = sVar6; sStack_26 = sVar7; uVar14 = FUN_0041233c(puStack_20,&sStack_28); uStack_16 = (ushort)uVar14; if (uStack_16 != 0) { Memcpy(&this->field_0x3a,&sStack_28,8); if ((*(byte *)(psVar18 + 1) & 1) != 0) { uStack_1c = uStack_1c | 0x80; } iVar13 = FUN_00412404(); if (iVar13 != 0) { *(int *)(iVar13 + 0x16) = iVar10; *(short *)(iVar13 + 0x1a) = sVar6; *(short *)(iVar13 + 0x1c) = sVar7; Memcpy((void *)(iVar13 + 0xe),&sStack_28,8); *(undefined2 *)(iVar13 + 10) = *(undefined2 *)&this->field_0xc; if (*(short *)(this + 1) != 0) { uStack_1c = uStack_1c | 0x200; } if (*(int *)&this->field_0x30 != 0) { uStack_1c = uStack_1c | 0x400; } if (*(int *)&this->field_0x36 != 0) { uStack_1c = uStack_1c | 0x800; } uVar5 = uStack_1c | 1; if ((uStack_16 & 2) != 0) { uVar5 = uStack_1c | 0x21; } uStack_1c = uVar5; if (((int)sStack_1a & 0x8010U) == 0) { uStack_1c = uStack_1c | 2; } if (*(short *)&this->field_0x48 != 0) { uStack_1c = uStack_1c & 0xfffd | 8; if (*(short *)&this->field_0x48 == 1) { FUN_00431420(); FUN_0041172c(&sStack_28,*(undefined4 *)&this->field_0x50); FUN_004313d8(); } *(undefined2 *)&this->field_0x48 = 0; } if ((this->field_0x4e & 1) != 0) { uStack_1c = uStack_1c | 0x10; } *(ushort *)(iVar13 + 0xc) = uStack_1c; *(BigThing6Eh **)(iVar13 + 0x20) = this; FUN_00435151(Dlist_00465720,iVar13,FUN_004122bc); this->indices6Ah[sStack_48] = *(short *)(iVar13 + 8); this->count58h = this->count58h + 1; } } sVar17 = sVar17 + 1; psVar18 = psVar18 + 4; sStack_48 = sStack_48 + 1; } while (sStack_48 < sStack_46); } if ((*(byte *)((int)&this->field24_0x18 + 1) & 0x80) != 0) { this->field24_0x18 = 2; } LAB_004136f1: *(short *)&this->field_0x10 = sVar17; goto LAB_004136f5; } sVar7 = psVar18[iVar13 * 4]; sVar1 = psVar18[iVar13 * 4 + 1]; sVar2 = psVar18[iVar13 * 4 + 3]; switch(sVar6) { case -0x16: if (sVar7 == 0) { *(undefined2 *)&this->field_0x48 = 2; } else { *(undefined2 *)&this->field_0x48 = 1; FUN_0041391c(this); } sVar17 = sVar17 + 1; iVar10 = 0; break; case -0x15: if (sVar1 == sVar7) { iVar10 = 0; } else { iVar10 = Random(); iVar10 = iVar10 % ((int)sVar1 - (int)sVar7); } *(int *)&this->field_0x14 = *(int *)&this->field_0x14 + iVar10 + sVar7; sVar17 = sVar17 + 1; goto LAB_004136f1; case -0x14: *(short *)&this->field_0x1e = *(short *)&this->field_0x1e + -1; if (*(short *)&this->field_0x1e == 0) { sVar17 = sVar17 + 1; } else { sVar17 = *(short *)&this->field_0x46; } break; case -0x13: *(short *)&this->field_0x1e = sVar7; sVar17 = sVar17 + 1; break; case -0x12: if (*(int *)&this->field_0x50 == 0) { FUN_0041227c(6); } else { FUN_00431420(); FUN_0041179f(); FUN_004313d8(); if (sVar7 != 0) { FUN_0041393c(this); } } sVar17 = sVar17 + 1; break; case -0x11: *(short *)(*(int *)&this->field_0x4a + 8) = *(short *)&this->field_0x8 + sVar7; *(short *)(*(int *)&this->field_0x4a + 10) = *(short *)&this->field_0xa + sVar1; FUN_00413ed0(*(undefined4 *)&this->field_0x4a); sVar17 = sVar17 + 1; break; case -0x10: FUN_00412fe4(*(undefined4 *)&this->field_0x4a); sVar17 = sVar17 + 1; break; case -0xf: sVar17 = sVar17 + 1; break; case -0xe: BigThing6Eh::processNodes_(*(undefined4 *)&this->field_0x4a); sVar17 = sVar17 + 1; break; case -0xd: FUN_00412e18(*(undefined4 *)&this->field_0x4a); sVar17 = sVar17 + 1; break; case -0xc: if (*(short *)&this->field_0x2e != 0) { (**(code **)&this->field_0x30)(); } sVar17 = sVar17 + 1; goto LAB_004136f1; case -0xb: sVar17 = sVar7; break; case -10: iVar10 = 0; if (sVar7 == 1) { if (*(short *)(iVar12 + 8) == 0) { uVar16 = 0; } else { iVar13 = Random(); uVar16 = (undefined2)(iVar13 % (int)*(short *)(iVar12 + 8)); } FUN_004129d4(this,uVar16); goto LAB_004130aa; } if (sVar7 == 2) { sStack_48 = *(short *)&this->field_0xe + 1; if (sStack_48 == *(short *)(iVar12 + 8)) { sStack_48 = 0; } FUN_004129d4(this,sStack_48); goto LAB_004130aa; } if (sVar7 == 3) { FUN_004129d4(this,sVar1); goto LAB_004130aa; } if (sVar7 == 4) goto LAB_004132f8; break; case -9: *(short *)&this->field_0xa = *(short *)&this->field_0xa + sVar7; sVar17 = sVar17 + 1; break; case -8: *(short *)&this->field_0x8 = *(short *)&this->field_0x8 + sVar7; sVar17 = sVar17 + 1; break; case -7: *(short *)&this->field_0x44 = sVar7; *(short *)&this->field_0x46 = sVar17 + 1; sVar17 = sVar17 + 1; break; case -6: if (sVar7 != -0x8000) { *(short *)&this->field_0x8 = sVar7; } if (sVar1 != -0x8000) { *(short *)&this->field_0xa = sVar1; } sVar17 = sVar17 + 1; break; case -5: if (sVar7 == *(short *)&this->field_0x44) { sVar17 = *(short *)&this->field_0x46; } else { sStack_48 = 0; for (psVar11 = psVar18; psVar11[2] != -1; psVar11 = psVar11 + 4) { if ((psVar11[2] == -7) || (*psVar11 == sVar7)) { sVar17 = sStack_48; } sStack_48 = sStack_48 + 1; } } break; case -4: this->field24_0x18 = 0x10; iVar10 = 0; sVar17 = sVar17 + 1; break; case -3: sVar17 = sVar17 + 1; sStack_46 = sVar7; break; case -2: *(short *)&this->field_0x1c = *(short *)&this->field_0x1c + 1; sVar17 = 0; break; case -1: this->field24_0x18 = 1; *(undefined2 *)&this->field_0x1c = 1; FUN_00412fe4(this); BigThing6Eh::processNodes_(this); goto joined_r0x0041303b; default: if (sVar6 < -499) { uStack_14 = 0; if ((DAT_0046025c != (code *)0x0) && (uStack_14 = (*DAT_0046025c)(), (uStack_14 & 1) != 0)) { sVar17 = *(short *)&this->field_0x10; } if (uStack_14 == 0) { sVar17 = sVar17 + 1; } } } if ((short)iVar10 != 0) { sVar17 = sVar17 + sStack_46; iVar10 = iVar10 + -1; } goto LAB_004134c3; } LAB_004136f5: pBVar9 = (BigThing6Eh *)DlistNext((DlistNode *)this); goto joined_r0x0041303b; LAB_004132f8: if (sVar2 == 0) { sVar17 = 0; } else { iVar12 = Random(); sVar17 = (short)(iVar12 % (int)sVar2); } FUN_004129d4(this,sVar17 + sVar1); goto LAB_004130aa; } ushort __stdcall FUN_00413774(int param_1,short param_2) { return *(ushort *) (*(int *)(*(int *)(param_1 + 0x26) + 0x12) + 2 + *(int *)(*(int *)(*(int *)(param_1 + 0x26) + 0x16) + param_2 * 4)); } ushort __stdcall FUN_00413794(int param_1,short param_2) { return *(ushort *) (*(int *)(*(int *)(param_1 + 0x26) + 0x12) + 4 + *(int *)(*(int *)(*(int *)(param_1 + 0x26) + 0x16) + param_2 * 4)); } short FUN_004137b4(void) { short *psVar1; ushort uVar2; int in_stack_00000004; uVar2 = *(ushort *)(in_stack_00000004 + 0x10); for (psVar1 = (short *)(*(int *)(in_stack_00000004 + 0x2a) + 4 + (uint)uVar2 * 8); *psVar1 < 0; psVar1 = psVar1 + 4) { uVar2 = uVar2 + 1; } return *(short *)(*(int *)(in_stack_00000004 + 0x2a) + (uint)uVar2 * 8) + *(short *)(in_stack_00000004 + 8); } short FUN_004137e8(void) { short *psVar1; ushort uVar2; int in_stack_00000004; uVar2 = *(ushort *)(in_stack_00000004 + 0x10); for (psVar1 = (short *)(*(int *)(in_stack_00000004 + 0x2a) + 4 + (uint)uVar2 * 8); *psVar1 < 0; psVar1 = psVar1 + 4) { uVar2 = uVar2 + 1; } return *(short *)(*(int *)(in_stack_00000004 + 0x2a) + 2 + (uint)uVar2 * 8) + *(short *)(in_stack_00000004 + 10); } uint FUN_0041381c(void) { int in_stack_00000004; return CONCAT22((short)((uint)in_stack_00000004 >> 0x10),*(undefined2 *)(in_stack_00000004 + 0xc)) ; } void FUN_00413828(void) { undefined4 in_stack_00000004; DAT_0046025c = in_stack_00000004; return; } void FUN_00413838(void) { DlistNode *node; node = PoolAlloc(0xc); node[1].next = (DlistNode *)Dlist_00465728; DlistInsert(Dlist_0046572c,node,0); Dlist_00465728 = DlistNew(); return; } void FUN_00413868(void) { DlistNode *pDVar1; Dlist *pDVar2; undefined4 extraout_EDX; undefined4 uVar3; undefined4 extraout_EDX_00; Dlist *pDVar4; Dlist *node; for (pDVar1 = DlistHead(Dlist_00465728); pDVar1 != (DlistNode *)0x0; pDVar1 = DlistNext(pDVar1)) { BigThing6Eh::processNodes_(pDVar1); } PoolFreeIfNotNull(Dlist_00465728); pDVar1 = DlistHead(Dlist_0046572c); DlistRemove(Dlist_0046572c,pDVar1); Dlist_00465728 = (Dlist *)pDVar1[1].next; PoolFree(pDVar1); pDVar4 = Dlist_00465728; pDVar2 = (Dlist *)DlistHead(Dlist_00465728); uVar3 = extraout_EDX; while (node = pDVar2, node != (Dlist *)0x0) { FUN_00413e20(node,uVar3,pDVar4,node); pDVar2 = (Dlist *)DlistNext((DlistNode *)node); pDVar4 = node; uVar3 = extraout_EDX_00; } return; } void FUN_004138f0(void) { int in_stack_00000004; int in_stack_00000008; *(int *)(in_stack_00000004 + 0x4a) = in_stack_00000008; *(int *)(in_stack_00000008 + 0x4a) = in_stack_00000004; return; } void FUN_00413904(void) { int in_stack_00000004; *(undefined4 *)(*(int *)(in_stack_00000004 + 0x4a) + 0x4a) = 0; *(undefined4 *)(in_stack_00000004 + 0x4a) = 0; return; } void __stdcall FUN_0041391c(int param_1) { void *pvVar1; if (*(int *)(param_1 + 0x50) == 0) { pvVar1 = PoolAlloc(*(uint *)(*(int *)(param_1 + 0x26) + 0x24)); *(void **)(param_1 + 0x50) = pvVar1; } return; } void __stdcall FUN_0041393c(int param_1) { if (*(void **)(param_1 + 0x50) != (void *)0x0) { PoolFree(*(void **)(param_1 + 0x50)); *(undefined4 *)(param_1 + 0x50) = 0; } return; } void __stdcall FUN_0041395c(BigThing6Eh *param_1,undefined4 param_2,undefined4 param_3,short param_4) { short sVar1; short *psVar2; if (param_1 != (BigThing6Eh *)0x0) { if ((short)param_2 != -0x8000) { *(short *)¶m_1->field_0x8 = (short)param_2; *(short *)¶m_1->field_0x3a = (short)param_2; } if ((short)param_3 != -0x8000) { *(short *)¶m_1->field_0xa = (short)param_3; *(short *)¶m_1->field_0x3c = (short)param_3; } if (param_4 != -0x8000) { *(short *)¶m_1->field_0xc = param_4; } if ((param_1->field24_0x18 == 2) || (param_1->field24_0x18 == 0x10)) { psVar2 = param_1->indices6Ah; for (sVar1 = 0; sVar1 < param_1->count58h; sVar1 = sVar1 + 1) { BigNode24h_ARRAY_00464910[*psVar2].flags_0Ch = BigNode24h_ARRAY_00464910[*psVar2].flags_0Ch | 4; psVar2 = psVar2 + 1; } BigThing6Eh::drainNodesAndCheckNodeSiblingIntersects(param_1); for (sVar1 = 0; sVar1 < param_1->count58h; sVar1 = sVar1 + 1) { FUN_00412468(); } } } return; } void FUN_00413a24(void) { DAT_00460268 = DAT_00460268 + 1; return; } void FUN_00413a2c(void) { short in_stack_00000004; if (in_stack_00000004 != 0) { DAT_00460268 = 0; return; } if (0 < DAT_00460268) { DAT_00460268 = DAT_00460268 + -1; } return; } void FUN_00413a54(void) { int in_stack_00000004; short in_stack_00000008; short in_stack_0000000c; if (-1 < in_stack_00000008) { *(short *)(in_stack_00000004 + 0x12) = DAT_004657d8 / in_stack_00000008; } if (-1 < in_stack_0000000c) { *(short *)(in_stack_00000004 + 0x54) = in_stack_0000000c; } return; } void __stdcall FUN_00413a88(short *param_1,short param_2,short param_3,short param_4,short param_5) { if (-1 < param_2) { *param_1 = param_2; } if (-1 < param_4) { param_1[2] = (param_4 - *param_1) + 1; } if (-1 < param_3) { param_1[1] = param_3; } if (-1 < param_5) { param_1[3] = (param_5 - param_1[1]) + 1; } return; } void __stdcall FUN_00413acc(undefined2 param_1,undefined2 param_2,undefined2 param_3,undefined2 param_4) { FUN_00413a88(&DAT_004657da,param_1,param_2,param_3,param_4); return; } void FUN_00413af4(void) { int in_stack_00000004; undefined2 in_stack_00000008; if (in_stack_00000004 != 0) { *(undefined2 *)(in_stack_00000004 + 0x6e) = in_stack_00000008; } return; } void FUN_00413b08(void) { int in_stack_00000004; undefined4 in_stack_00000008; undefined2 in_stack_0000000c; if (in_stack_00000004 != 0) { *(undefined2 *)(in_stack_00000004 + 0x2e) = in_stack_0000000c; *(undefined4 *)(in_stack_00000004 + 0x30) = in_stack_00000008; } return; } void FUN_00413b24(void) { short *psVar1; short sVar2; int in_stack_00000004; int in_stack_00000008; undefined2 in_stack_0000000c; if (in_stack_00000004 != 0) { psVar1 = (short *)(in_stack_00000004 + 0x5a); for (sVar2 = 0; sVar2 < *(short *)(in_stack_00000004 + 0x58); sVar2 = sVar2 + 1) { if (in_stack_00000008 == 0) { BigNode24h_ARRAY_00464910[*psVar1].flags_0Ch = BigNode24h_ARRAY_00464910[*psVar1].flags_0Ch & 0xf7ff; } else { BigNode24h_ARRAY_00464910[*psVar1].flags_0Ch = BigNode24h_ARRAY_00464910[*psVar1].flags_0Ch | 0x800; } psVar1 = psVar1 + 1; } *(undefined2 *)(in_stack_00000004 + 0x34) = in_stack_0000000c; *(int *)(in_stack_00000004 + 0x36) = in_stack_00000008; } return; } uint FUN_00413b88(void) { short sVar1; undefined2 *puVar2; DlistNode *node; int iVar3; Rect16 *in_stack_00000004; short in_stack_00000008; short in_stack_0000000c; short in_stack_00000010; byte in_stack_00000014; Rect16 local_10; ushort local_8; undefined2 local_6; local_6 = 0; if ((in_stack_00000004 != (Rect16 *)0x0) && (iVar3 = *(int *)&in_stack_00000004[4].h, in_stack_00000010 < *(short *)(iVar3 + 10))) { iVar3 = *(int *)(*(int *)(iVar3 + 0x16) + in_stack_00000010 * 4) + *(int *)(iVar3 + 0x12); local_10.x = in_stack_00000008; if (in_stack_00000008 == -0x8000) { local_10.x = in_stack_00000004[1].x; } local_10.y = in_stack_0000000c; if (in_stack_0000000c == -0x8000) { local_10.y = in_stack_00000004[1].y; } local_10.w = *(short *)(iVar3 + 2); local_10.h = *(short *)(iVar3 + 4); if (in_stack_00000004[0xd].h == 0) { puVar2 = (undefined2 *)&DAT_004657e2; } else { puVar2 = &DAT_004657da; } in_stack_00000004 = (Rect16 *)FUN_0041233c(puVar2,&local_10); local_8 = (ushort)in_stack_00000004; if (local_8 != 0) { local_6 = 1; if (((uint)in_stack_00000004 & 2) == 0) { if ((in_stack_00000014 & 1) == 0) { FUN_004119e4(); } else { FUN_00411ceb(); } } else { FUN_004315b4(); } in_stack_00000004 = &local_10; Draw::DirtyRect(in_stack_00000004); if ((in_stack_00000014 & 2) != 0) { FUN_00431420(); if ((local_8 & 2) == 0) { if ((in_stack_00000014 & 1) == 0) { FUN_004119e4(); } else { FUN_00411ceb(); } } else { FUN_004315b4(); } in_stack_00000004 = (Rect16 *)FUN_004313d8(); } } if ((in_stack_00000014 & 4) == 0) { for (node = DlistHead(Dlist_00465720); in_stack_00000004 = (Rect16 *)0x0, node != (DlistNode *)0x0; node = DlistNext(node)) { sVar1 = Rect16::intersects(&local_10,(Rect16 *)((int)&node[1].prev + 2)); if (sVar1 != 0) { *(ushort *)&node[1].prev = *(ushort *)&node[1].prev | 0x40; } } } } return CONCAT22((short)((uint)in_stack_00000004 >> 0x10),local_6); } void FUN_00413cf4(void) { FUN_00413b88(); return; } void FUN_00413d18(void) { int iVar1; int iVar2; int in_stack_00000004; short in_stack_00000008; short in_stack_0000000c; undefined2 in_stack_00000010; iVar1 = *(int *)(in_stack_00000004 + 0x2a); iVar2 = (int)in_stack_00000008; if ((-1 < *(short *)(iVar1 + 4 + iVar2 * 8)) && (in_stack_0000000c < *(short *)(*(int *)(in_stack_00000004 + 0x26) + 10))) { *(short *)(iVar1 + 4 + iVar2 * 8) = in_stack_0000000c; *(undefined2 *)(iVar1 + 6 + iVar2 * 8) = in_stack_00000010; } return; } void FUN_00413d54(undefined4 param_1,undefined4 param_2,uint param_3,int param_4,short *param_5, short *param_6,short param_7) { int iVar1; short *psVar2; uint extraout_ECX; undefined1 *puVar3; int iVar4; int iVar5; undefined1 local_104 [256]; iVar4 = 0; puVar3 = local_104; do { *puVar3 = (char)iVar4; iVar4 = iVar4 + 1; puVar3 = puVar3 + 1; } while (iVar4 < 0x100); for (; *param_6 != -1; param_6 = param_6 + 1) { param_3 = CONCAT31((int3)(param_3 >> 8),(char)*param_6); local_104[*param_5] = (char)*param_6; param_5 = param_5 + 1; } iVar4 = *(int *)(*(int *)(param_4 + 0x26) + 0x12); if (param_7 == -1) { for (iVar5 = 0; iVar5 < *(short *)(*(int *)(param_4 + 0x26) + 10); iVar5 = iVar5 + 1) { iVar1 = *(int *)(*(int *)(*(int *)(param_4 + 0x26) + 0x16) + iVar5 * 4) + iVar4; FUN_0041191f(iVar1,(uint)local_104,param_3,iVar1); param_3 = extraout_ECX; } psVar2 = (short *)(param_4 + 0x5a); for (iVar4 = 0; iVar4 < *(short *)(param_4 + 0x58); iVar4 = iVar4 + 1) { BigNode24h_ARRAY_00464910[*psVar2].flags_0Ch = BigNode24h_ARRAY_00464910[*psVar2].flags_0Ch | 4; psVar2 = psVar2 + 1; } } else if (param_7 < *(short *)(*(int *)(param_4 + 0x26) + 10)) { iVar5 = *(int *)(*(int *)(param_4 + 0x26) + 0x16); FUN_0041191f(iVar5,(int)param_7,param_3,iVar4 + *(int *)(iVar5 + param_7 * 4)); } return; } void FUN_00413e20(void) { short *psVar1; short sVar2; int in_stack_00000004; if (in_stack_00000004 != 0) { psVar1 = *(short **)(in_stack_00000004 + 0x6a); for (sVar2 = 0; sVar2 < *(short *)(in_stack_00000004 + 0x58); sVar2 = sVar2 + 1) { BigNode24h_ARRAY_00464910[*psVar1].flags_0Ch = BigNode24h_ARRAY_00464910[*psVar1].flags_0Ch | 4; psVar1 = psVar1 + 1; } } return; } void FUN_00413e74(void) { undefined4 in_stack_00000004; DAT_00460260 = in_stack_00000004; return; } uint FUN_00413e84(void) { short sVar1; short *psVar2; int in_stack_00000004; if (in_stack_00000004 != 0) { *(undefined2 *)(in_stack_00000004 + 0x18) = 0x10; psVar2 = *(short **)(in_stack_00000004 + 0x6a); for (sVar1 = 0; sVar1 < *(short *)(in_stack_00000004 + 0x58); sVar1 = sVar1 + 1) { BigNode24h_ARRAY_00464910[*psVar2].flags_0Ch = BigNode24h_ARRAY_00464910[*psVar2].flags_0Ch & 0xfffd; psVar2 = psVar2 + 1; } } return CONCAT22((short)((uint)in_stack_00000004 >> 0x10),*(undefined2 *)(in_stack_00000004 + 0x10) ); } int FUN_00413ebc(void) { int in_stack_00000004; if (in_stack_00000004 == 0) { in_stack_00000004 = 0; } else { in_stack_00000004 = in_stack_00000004 + 0x3a; } return in_stack_00000004; } undefined2 __stdcall FUN_00413ed0(int param_1) { undefined2 uVar1; if (param_1 == 0) { uVar1 = 1; } else { uVar1 = *(undefined2 *)(param_1 + 0x18); } return uVar1; } uint FUN_00413ee8(void) { ushort uVar1; uint uVar2; Dlist *list; short *psVar3; uint unaff_EBX; undefined2 uVar4; DlistNode *unaff_ESI; DlistNode *in_stack_00000004; short in_stack_00000008; uVar2 = (uint)(in_stack_00000008 != 1); psVar3 = &DAT_00465746 + uVar2 * 8; if ((in_stack_00000008 != 1) < 10) { do { if (*psVar3 == 0) { unaff_ESI = (DlistNode *)(&DAT_00465738 + uVar2 * 0x10); unaff_EBX = uVar2; break; } uVar1 = (short)uVar2 + 2; uVar2 = (uint)uVar1; psVar3 = psVar3 + 0x10; } while (uVar1 < 10); } uVar4 = (undefined2)(unaff_EBX >> 0x10); if (in_stack_00000008 == 1) { list = Dlist_00465730; if ((unaff_EBX & 1) != 0) { unaff_EBX = CONCAT22(uVar4,DAT_0046025a); DAT_0046025a = DAT_0046025a + 1; } } else { list = Dlist_00465734; if ((unaff_EBX & 1) == 0) { unaff_EBX = CONCAT22(uVar4,DAT_0046025a); DAT_0046025a = DAT_0046025a + 1; } } *(short *)&unaff_ESI[1].prev = (short)unaff_EBX; unaff_ESI[1].next = in_stack_00000004; DlistInsert(list,unaff_ESI,-1); return unaff_EBX; } void FUN_00413f88(void) { DlistNode *node; Dlist *list; ushort in_stack_00000004; list = Dlist_00465730; if ((in_stack_00000004 & 1) != 0) { list = Dlist_00465734; } node = DlistHead(list); while( true ) { if (node == (DlistNode *)0x0) { return; } if ((uint)*(ushort *)&node[1].prev == (int)(short)in_stack_00000004) break; node = DlistNext(node); } *(undefined2 *)((int)&node[1].prev + 2) = 0; DlistRemove(list,node); return; } DlistNode * FUN_00413fdc(void) { short sVar1; DlistNode *pDVar2; short in_stack_00000004; short in_stack_00000008; Rect16 local_c; local_c.x = in_stack_00000004; local_c.y = in_stack_00000008; local_c.w = 1; local_c.h = 1; pDVar2 = (DlistNode *)DlistTail(Dlist_00465720); while ((pDVar2 != (DlistNode *)0x0 && ((sVar1 = Rect16::intersects(&local_c,(Rect16 *)((int)&pDVar2[1].prev + 2)), sVar1 == 0 || (sVar1 = FUN_00431bcc(), sVar1 == 0))))) { pDVar2 = (DlistNode *)DlistPrev(pDVar2); } if (pDVar2 == (DlistNode *)0x0) { pDVar2 = (DlistNode *)0x0; } else { pDVar2 = pDVar2[4].next; } return pDVar2; } void FUN_00414088(void) { return; } void FUN_0041408d(void) { short sVar1; DlistNode *node; Rect16 *in_stack_00000004; FUN_00412086(); Draw::DirtyRect(in_stack_00000004); for (node = DlistHead(Dlist_00465720); node != (DlistNode *)0x0; node = DlistNext(node)) { sVar1 = Rect16::intersects(in_stack_00000004,(Rect16 *)((int)&node[1].prev + 2)); if (sVar1 != 0) { *(ushort *)&node[1].prev = *(ushort *)&node[1].prev | 0x40; } } return; } undefined4 FUN_004140e4(void) { short sVar1; undefined2 uVar2; int in_stack_00000004; sVar1 = *(short *)(in_stack_00000004 + 2); uVar2 = (undefined2)((uint)in_stack_00000004 >> 0x10); if (sVar1 < 0x36) { return 0; } if (sVar1 < 0x68) { return CONCAT22(uVar2,1); } if (sVar1 < 0x9a) { return CONCAT22(uVar2,2); } if (sVar1 < 0xcc) { return CONCAT22(uVar2,3); } if (sVar1 < 0xfe) { return CONCAT22(uVar2,4); } return CONCAT22(uVar2,5); } undefined4 FUN_0041412e(void) { undefined2 uVar1; int in_stack_00000004; uVar1 = (undefined2)((uint)in_stack_00000004 >> 0x10); if (*(short *)(in_stack_00000004 + 2) < 0x59) { return 0; } if (*(short *)(in_stack_00000004 + 2) < 0xbd) { return CONCAT22(uVar1,1); } return CONCAT22(uVar1,2); } void FUN_004143a5(void) { undefined4 uVar1; undefined2 extraout_var; undefined4 extraout_EDX; short sVar2; ushort *puVar3; for (sVar2 = 1; sVar2 < _RoomCount; sVar2 = sVar2 + 1) { PoolFreeIfNotNull(_Rooms[sVar2]->partEntities); } puVar3 = _RoomInitialPartsCounts; uVar1 = FUN_0044073c(); FUN_0044073c(uVar1,extraout_EDX,puVar3,_Area); if (_BuildingTextResourceId != -1) { FUN_004462e8(CONCAT22(extraout_var,_BuildingTextResourceId)); _BuildingTextResourceId = -1; } return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_00414406(void) { uint uVar1; undefined2 uVar3; DlistNode *node; undefined4 uVar2; uint extraout_ECX; uint extraout_ECX_00; uint extraout_ECX_01; uint uVar4; undefined4 extraout_EDX; undefined4 extraout_EDX_00; undefined4 extraout_EDX_01; undefined4 extraout_EDX_02; undefined4 extraout_EDX_03; int iVar5; undefined2 *puVar6; short sVar7; short sVar8; short in_stack_00000004; Memcpy(&DAT_0046027a,_Rooms[in_stack_00000004],0x120); _RoomIndex = in_stack_00000004; _DAT_00460274 = 1; sVar7 = 3; uVar4 = extraout_ECX; uVar2 = extraout_EDX; do { puVar6 = (undefined2 *)(&DAT_004602f8)[sVar7]; for (sVar8 = 0; sVar8 < (short)(&DAT_0046027c)[sVar7]; sVar8 = sVar8 + 1) { uVar2 = FUN_00412ac4(puVar6[7]); *(undefined4 *)(puVar6 + 5) = uVar2; uVar3 = (undefined2)((uint)uVar2 >> 0x10); FUN_0041395c(*(undefined4 *)(puVar6 + 5),CONCAT22(uVar3,*puVar6),CONCAT22(uVar3,puVar6[1]), sVar7); FUN_00413b88(); puVar6 = puVar6 + 0x10; uVar4 = extraout_ECX_00; uVar2 = extraout_EDX_00; } iVar5 = (&DAT_004602f8)[sVar7]; for (sVar8 = 0; sVar8 < (short)(&DAT_0046027c)[sVar7]; sVar8 = sVar8 + 1) { uVar1 = *(uint *)(iVar5 + 10); uVar2 = FUN_00412d0c((int)sVar7,uVar2,uVar4,*(uint *)(iVar5 + 10)); uVar4 = uVar1; *(undefined4 *)(iVar5 + 10) = uVar2; iVar5 = iVar5 + 0x20; uVar2 = extraout_EDX_01; } puVar6 = (undefined2 *)(&DAT_00460308)[sVar7]; for (sVar8 = 0; sVar8 < (short)(&DAT_00460284)[sVar7]; sVar8 = sVar8 + 1) { uVar2 = FUN_00412ac4(puVar6[7]); *(undefined4 *)(puVar6 + 5) = uVar2; uVar3 = (undefined2)((uint)uVar2 >> 0x10); FUN_0041395c(*(undefined4 *)(puVar6 + 5),CONCAT22(uVar3,*puVar6),CONCAT22(uVar3,puVar6[1]), sVar7); uVar4 = *(uint *)(puVar6 + 5); FUN_00412dc8(uVar4); uVar2 = extraout_EDX_02; if ((*(byte *)(puVar6 + 4) & 2) != 0) { FUN_004129d4(*(undefined4 *)(puVar6 + 5),1); uVar4 = extraout_ECX_01; uVar2 = extraout_EDX_03; } puVar6 = puVar6 + 0x14; } sVar7 = sVar7 + -1; } while (-1 < sVar7); node = DlistHead(_Rooms[_RoomIndex]->partEntities); for (sVar7 = 0; sVar7 < _DAT_00460318; sVar7 = sVar7 + 1) { uVar2 = FUN_00412ac4(*(ushort *)((int)&node[3].next + 2)); *(undefined4 *)((int)&node[2].prev + 2) = uVar2; uVar3 = (undefined2)((uint)uVar2 >> 0x10); FUN_0041395c(*(undefined4 *)((int)&node[2].prev + 2), CONCAT22(uVar3,*(undefined2 *)&node[1].prev), CONCAT22(uVar3,*(undefined2 *)((int)&node[1].prev + 2)),0x32); FUN_00412dc8(*(undefined4 *)((int)&node[2].prev + 2)); node = DlistNext(node); } if (in_stack_00000004 == 0) { FUN_00446b4c(_BuildingTextResourceId); } else { uVar2 = FUN_0044701f(); if ((short)uVar2 == 0) { FUN_004466f9(); } } return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_004145e2(undefined4 param_1,undefined4 param_2,uint param_3) { uint uVar1; Dlist *node; undefined4 uVar2; Dlist *list; undefined4 extraout_EDX; undefined4 extraout_EDX_00; undefined4 extraout_EDX_01; undefined4 extraout_EDX_02; short sVar3; short sVar4; int iVar5; if (_DAT_00460274 != 0) { sVar4 = 0; do { iVar5 = (&DAT_00460308)[sVar4]; for (sVar3 = 0; sVar3 < (short)(&DAT_00460284)[sVar4]; sVar3 = sVar3 + 1) { uVar1 = *(uint *)(iVar5 + 10); uVar2 = FUN_00412d0c((int)sVar4,param_2,param_3,*(uint *)(iVar5 + 10)); param_3 = uVar1; *(undefined4 *)(iVar5 + 10) = uVar2; iVar5 = iVar5 + 0x28; param_2 = extraout_EDX; } iVar5 = (&DAT_004602f8)[sVar4]; for (sVar3 = 0; sVar3 < (short)(&DAT_0046027c)[sVar4]; sVar3 = sVar3 + 1) { uVar1 = *(uint *)(iVar5 + 10); uVar2 = FUN_00412d0c((int)sVar4,param_2,param_3,*(uint *)(iVar5 + 10)); param_3 = uVar1; *(undefined4 *)(iVar5 + 10) = uVar2; iVar5 = iVar5 + 0x20; param_2 = extraout_EDX_00; } sVar4 = sVar4 + 1; } while (sVar4 < 4); list = _Rooms[_RoomIndex]->partEntities; node = (Dlist *)DlistHead(list); uVar2 = extraout_EDX_01; for (sVar4 = 0; sVar4 < _DAT_00460318; sVar4 = sVar4 + 1) { uVar2 = FUN_00412d0c((uint)node,uVar2,(uint)list,*(uint *)((int)&node[2].tail + 2)); *(undefined4 *)((int)&node[2].tail + 2) = uVar2; list = node; node = (Dlist *)DlistNext((DlistNode *)node); uVar2 = extraout_EDX_02; } _DAT_00460274 = 0; } return; } void FUN_0041469e(void) { OtherEntity *pOVar1; short sVar2; Room *pRVar3; short in_stack_00000004; short in_stack_00000008; if (in_stack_00000004 < 0) { pRVar3 = (Room *)&DAT_0046027a; } else { pRVar3 = _Rooms[in_stack_00000004]; } pOVar1 = pRVar3->structuralEntityGroups[0]; sVar2 = 0; if (0 < pRVar3->structuralEntityCounts[0]) { do { if (((6 < (pOVar1->base).type) && ((pOVar1->base).type < 0xc)) && ((int)(uint)(ushort)pOVar1->partId >> 6 == (int)(in_stack_00000008 >> 6))) { return; } pOVar1 = pOVar1 + 1; sVar2 = sVar2 + 1; } while (sVar2 < pRVar3->structuralEntityCounts[0]); } return; } uint FUN_00414700(void) { short in_stack_00000004; return CONCAT22((short)((uint)_Rooms[in_stack_00000004] >> 0x10),_Rooms[in_stack_00000004]->flags) ; } void FUN_0041472a(void) { return; } void FUN_0041472f(void) { return; } void FUN_00414734(void) { return; } void FUN_00414739(void) { return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_00414aa7(undefined4 param_1,undefined4 param_2,uint param_3,uint param_4,int param_5) { short *psVar1; Room *pRVar2; short sVar3; undefined4 uVar4; sVar3 = (short)param_4; pRVar2 = _Rooms[sVar3]; *(undefined2 *)(param_5 + 8) = 1; psVar1 = &pRVar2->partEntityCount; *psVar1 = *psVar1 + -1; if (sVar3 == _RoomIndex) { uVar4 = FUN_00412d0c(param_4,(int)sVar3,param_3,*(uint *)(param_5 + 0x16)); *(undefined4 *)(param_5 + 0x16) = uVar4; _DAT_00460318 = _DAT_00460318 + -1; } DlistRemove(pRVar2->partEntities,(DlistNode *)param_5); return; } Room * FUN_00414c47(void) { int in_stack_00000004; return _Rooms[*(short *)(in_stack_00000004 + 0x1a)]; } void FUN_00414c5a(void) { bool bVar1; ushort uVar2; int iVar3; short sVar4; PartId in_stack_00000004; bVar1 = false; while (!bVar1) { do { if (_RoomCount == 1) { sVar4 = 0; } else { iVar3 = Random(); sVar4 = (short)(iVar3 % (_RoomCount + -1)); } sVar4 = sVar4 + 1; } while ((sVar4 == _RoomIndex) || (_RoomInitialPartsCounts[sVar4] == 0)); uVar2 = PlacePartEntity(_Rooms[sVar4],1,in_stack_00000004); if (uVar2 != 0) { bVar1 = true; } } return; } // WARNING: Heritage AFTER dead removal. Example location: EAX : 0x00414d37 // WARNING: Restarted to delay deadcode elimination for space: register void FUN_00414ccd(undefined4 param_1,undefined4 param_2,Dlist *param_3,undefined1 *param_4, short *param_5) { Room *pRVar1; short sVar2; short sVar3; OtherEntity *pOVar4; int iVar5; Dlist *node; undefined4 uVar6; short sVar7; short local_6; local_6 = 0; do { pRVar1 = _Rooms[local_6]; if (pRVar1 != (Room *)0x0) { pOVar4 = pRVar1->structuralEntityGroups[0]; sVar3 = 0; while( true ) { if (pRVar1->structuralEntityCounts[0] <= sVar3) break; if ((pOVar4->base).type == 7) { *param_4 = 7; param_4 = param_4 + 1; } if ((pOVar4->base).type == 9) { *param_4 = 9; param_4 = param_4 + 1; } pOVar4 = pOVar4 + 1; sVar3 = sVar3 + 1; } iVar5 = FUN_004352c9(pOVar4,pRVar1,param_3,pRVar1->partEntities); sVar3 = (short)iVar5; *param_5 = sVar3; param_5 = param_5 + 1; sVar7 = 0; param_3 = pRVar1->partEntities; node = (Dlist *)DlistHead(param_3); if (0 < sVar3) { do { *param_5 = *(short *)&node[1].tail; if ((pRVar1->flags & 1) == 0) { uVar6 = FUN_0041412e(); sVar2 = (short)uVar6; } else { uVar6 = FUN_004140e4(); sVar2 = (short)uVar6; } param_5[1] = sVar2; param_5[2] = *(short *)((int)&node[3].tail + 2); param_5 = param_5 + 3; param_3 = node; node = (Dlist *)DlistNext((DlistNode *)node); sVar7 = sVar7 + 1; } while (sVar7 < sVar3); } } local_6 = local_6 + 1; } while (local_6 < 0x10); return; } int FUN_00414eb6(void) { short in_stack_00000004; short in_stack_00000008; if (in_stack_00000008 == -1) { return 0; } return (int)(_Rooms[in_stack_00000004]->structuralEntityGroups[0] + in_stack_00000008); } int FUN_00414edc(void) { short in_stack_00000004; short in_stack_00000008; return (int)(_Rooms[in_stack_00000004]->ladderEntityGroups[0] + in_stack_00000008); } void FUN_00414efe(void) { FUN_00435122(); return; } void FUN_00414f21(void) { ushort uVar1; Room *pRVar2; OtherEntity *pOVar3; short sVar4; short sVar5; ushort uVar6; sVar5 = 0; do { pRVar2 = _Rooms[sVar5]; if (pRVar2 != (Room *)0x0) { uVar1 = pRVar2->flags; pOVar3 = pRVar2->structuralEntityGroups[0]; for (sVar4 = 0; sVar4 < pRVar2->structuralEntityCounts[0]; sVar4 = sVar4 + 1) { if ((pOVar3->base).type == 7) { (pOVar3->base).type = 9; (pOVar3->activation_).mode = 4; if ((uVar1 & 1) == 0) { uVar6 = 0xc26; } else { uVar6 = 0xbc0; } (pOVar3->base).spriteId = uVar6; } pOVar3 = pOVar3 + 1; } } sVar5 = sVar5 + 1; } while (sVar5 < 0x10); return; } void FUN_00414f80(void) { int in_stack_00000004; if (*(short *)(in_stack_00000004 + 0x1c) == 0) { *(int *)(in_stack_00000004 + 0x12) = *(int *)(in_stack_00000004 + 0x12) + *(int *)(in_stack_00000004 + 0x36); if (*(int *)(in_stack_00000004 + 0x26) < *(int *)(in_stack_00000004 + 0x12)) { *(undefined4 *)(in_stack_00000004 + 0x12) = *(undefined4 *)(in_stack_00000004 + 0x26); } } else { if (*(int *)(in_stack_00000004 + 0x22) < *(int *)(in_stack_00000004 + 0x12)) { *(int *)(in_stack_00000004 + 0x12) = *(int *)(in_stack_00000004 + 0x12) + -0x3333; return; } *(int *)(in_stack_00000004 + 0x12) = *(int *)(in_stack_00000004 + 0x12) + *(int *)(in_stack_00000004 + 0x32); if (*(int *)(in_stack_00000004 + 0x22) < *(int *)(in_stack_00000004 + 0x12)) { *(undefined4 *)(in_stack_00000004 + 0x12) = *(undefined4 *)(in_stack_00000004 + 0x22); return; } } return; } undefined4 FUN_00414fcf(undefined4 param_1,undefined4 param_2,undefined4 param_3,ushort *param_4) { ushort uVar1; bool bVar2; undefined4 uVar3; ushort local_6; bVar2 = false; uVar3 = 0; while (!bVar2) { param_4[0xb] = param_4[0xb] + 1; uVar1 = *(ushort *)(*(int *)(param_4 + 0xc) + (short)param_4[0xb] * 6); switch(*(undefined2 *)(*(int *)(param_4 + 0xc) + 4 + (short)param_4[0xb] * 6)) { case 0xfff1: param_4[1] = uVar1; break; case 0xfff2: FUN_00446b08(); break; case 0xfff3: local_6 = (ushort)((uint)param_3 >> 0x10); FUN_004465a5(uVar1,local_6 & 0xff,(short)(char)((uint)param_3 >> 0x18)); break; default: bVar2 = true; break; case 0xfffb: if (param_4[0x10] != 0) { param_4[0x10] = param_4[0x10] - 1; } param_4[0xb] = 0; break; case 0xfffc: param_4[0xe] = 0; break; case 0xfffd: param_4[0xe] = 1; break; case 0xfffe: if (param_4[0x10] == 0) { param_4[0xf] = 1; DAT_00467cf2 = DAT_00467cf2 | *param_4; uVar3 = 1; } } } return uVar3; } void FUN_004150d3(void) { short sVar1; int iVar2; int in_stack_00000004; short *in_stack_00000008; int local_18; int local_14; int local_10; int local_c; iVar2 = 0; local_10 = *(int *)(&DAT_0046055c + _GameState->level * 4); local_14 = 0; local_18 = 0; local_c = local_10; do { if (*in_stack_00000008 == -1) { switch(_GameState->level) { case 0: local_14 = 0x4ccd; break; case 1: local_18 = FUN_00453ffc(); local_14 = local_18; break; case 2: local_10 = local_c; local_18 = FUN_00453ffc(); local_14 = local_18; break; case 3: local_18 = FUN_00453ffc(); local_14 = local_18; break; case 4: local_10 = local_c; local_18 = FUN_00453ffc(); local_14 = local_18; break; case 10: local_18 = local_14; break; case 0xb: case 0xc: case 0xd: case 0xe: if (iVar2 != 0) { local_14 = FUN_00453ffc(); } local_18 = local_14; } *(int *)(in_stack_00000004 + 0x32) = local_18; *(int *)(in_stack_00000004 + 0x36) = local_14; *(int *)(in_stack_00000004 + 0x26) = local_c; if (local_c < local_10) { *(int *)(in_stack_00000004 + 0x22) = local_c; } else { *(int *)(in_stack_00000004 + 0x22) = local_10; } *(undefined2 *)(in_stack_00000004 + 0x1c) = 0; return; } sVar1 = *(short *)&_Level_partDefinitions[*in_stack_00000008].field_0xa; switch(_Level_partDefinitions[*in_stack_00000008].slotId) { case 1: case 0x35: local_c = local_c - *(int *)(&DAT_004604ac + sVar1 * 4); break; case 3: local_10 = *(int *)(&DAT_0046047c + sVar1 * 4); break; case 4: case 0x34: local_14 = local_14 + *(int *)(&DAT_004604ec + sVar1 * 4); break; case 5: iVar2 = *(int *)(&DAT_004604fc + sVar1 * 4); break; case 6: case 0x39: break; case 7: case 0x38: break; case 8: local_c = local_c - *(int *)(&DAT_0046050c + sVar1 * 4); break; case 9: local_c = local_c - *(int *)(&DAT_004604dc + sVar1 * 4); break; case 0x30: local_14 = local_14 + *(int *)(&DAT_0046051c + sVar1 * 4); break; case 0x32: local_c = local_c - *(int *)(&DAT_0046052c + sVar1 * 4); break; case 0x33: local_14 = local_14 + *(int *)(&DAT_0046053c + sVar1 * 4); local_c = local_c - *(int *)(&DAT_0046054c + sVar1 * 4); break; case 0x37: local_14 = local_14 + *(int *)(&DAT_0046049c + sVar1 * 4); case 0: local_c = local_c - *(int *)(&DAT_0046048c + sVar1 * 4); break; case 0x3a: } in_stack_00000008 = in_stack_00000008 + 1; } while( true ); } void FUN_004156ec(void) { undefined4 uVar1; undefined4 uVar2; short sVar3; FUN_00414f80(); uVar1 = DAT_004662a4; if (DAT_004662b0 == 0) { for (sVar3 = 0; sVar3 < (short)((uint)uVar1 >> 0x10); sVar3 = sVar3 + 1) { uVar2 = FUN_00414fcf(); if ((short)uVar2 != 0) break; } } FUN_0041395c(DAT_004662cc, CONCAT22((short)((uint)(DAT_004662a8 * 3) >> 0x10), *(undefined2 *)(DAT_004662aa + DAT_004662a8 * 6)), CONCAT22((short)((uint)(DAT_004662a8 * 3) >> 0x10), *(undefined2 *)(DAT_004662aa + 2 + DAT_004662a8 * 6)),DAT_00466294); FUN_00413d18(); return; } void FUN_00415774(void) { undefined4 uVar1; undefined4 uVar2; short sVar3; FUN_00414f80(); uVar1 = DAT_004662e2; if (DAT_004662ee == 0) { for (sVar3 = 0; sVar3 < (short)((uint)uVar1 >> 0x10); sVar3 = sVar3 + 1) { uVar2 = FUN_00414fcf(); if ((short)uVar2 != 0) break; } } FUN_0041395c(DAT_0046630a, CONCAT22((short)((uint)(DAT_004662e6 * 3) >> 0x10), *(undefined2 *)(DAT_004662e8 + DAT_004662e6 * 6)), CONCAT22((short)((uint)(DAT_004662e6 * 3) >> 0x10), *(undefined2 *)(DAT_004662e8 + 2 + DAT_004662e6 * 6)),DAT_004662d2); FUN_00413d18(); return; } void FUN_00415970(void) { short sVar1; short in_stack_00000010; sVar1 = 0; if (0 < in_stack_00000010) { do { FUN_00413b88(); sVar1 = sVar1 + 1; } while (sVar1 < in_stack_00000010); } return; } void FUN_004159da(void) { FUN_00431b20(); FUN_00431b20(); FUN_00430db4(); return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_00415a24(void) { if (_DAT_00463546 == 0) { FUN_00431b20(); FUN_00431b20(); return; } FUN_00431b20(); FUN_00431b20(); return; } void FUN_00415aa2(void) { uint len; undefined2 local_c; undefined2 local_a; undefined2 local_8; undefined2 local_6; local_c = 0x15d; local_a = 0x13c; local_8 = 0xa3; local_6 = 0x44; len = FUN_00431dde(); DAT_004605d4 = PoolAlloc(len); FUN_0041172c(&local_c,DAT_004605d4); return; } void FUN_00415af1(void) { FUN_0041179f(); Draw::DirtyRect(DAT_004605d4); PoolFree(DAT_004605d4); DAT_004605d4 = (Rect16 *)0x0; return; } void FUN_00415b4f(void) { FUN_00431b20(); return; } void FUN_00415b77(void) { uint in_stack_00000004; if ((in_stack_00000004 & 4) != 0) { FUN_00413b88(); } if ((in_stack_00000004 & 2) != 0) { FUN_00413b88(); } if ((in_stack_00000004 & 1) != 0) { FUN_00413b88(); } return; } void FUN_00415be4(void) { FUN_004164bb(); DAT_004605b6 = DAT_004605b6 | 0x8000; return; } void FUN_00415bf3(void) { int iVar1; PartDefinition *pPVar2; int iVar3; undefined4 extraout_ECX; undefined4 extraout_EDX; int in_stack_00000004; pPVar2 = _Level_partDefinitions; if (DAT_004605ba == 0) { iVar1 = *(int *)(in_stack_00000004 + 0x1e); if (((int)*(short *)&_Level_partDefinitions[iVar1].field_0x36 & 0x8000U) == 0) { FUN_00417255(); DAT_004605b0 = *(undefined2 *)&pPVar2[iVar1].field_0x60; BigThing6Eh::processNodes_(*(undefined4 *)&pPVar2[iVar1].field_0x44); iVar3 = FUN_0043b58e(); FUN_0043b4e2(iVar3,extraout_EDX,extraout_ECX,iVar3); PickapuzzleHitTest_(0,0x13c,0x200,0x44,0xf,FUN_00415be4); FUN_00417206(); if (_RoomIndex != 0) { PickapuzzleHitTest_(0x132,0x14a,0x23,0x2e,0x14,FUN_004164da); FUN_00417206(); } FUN_0043b318(); FUN_004465a5(*(undefined2 *)(DAT_00466314 + 4),5,0); } DAT_004605b6 = DAT_004605b6 | 0x10; DAT_00466324 = *(undefined4 *)&pPVar2[iVar1].field_0x5a; } return; } int FUN_00415d01(void) { PartDefinition *pPVar1; undefined4 extraout_EDX; int in_stack_00000004; int iVar2; if (*(short *)(in_stack_00000004 + 0x1c) == -1) { iVar2 = in_stack_00000004; pPVar1 = (PartDefinition *)FUN_0043d9c0(); if (pPVar1 == (PartDefinition *)0x0) { FUN_0043d9e3(0,extraout_EDX,iVar2,in_stack_00000004); } } else { pPVar1 = _Level_partDefinitions + ((int)*(short *)(in_stack_00000004 + 0x1c) & 0x7fff); } return (int)pPVar1; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void __stdcall FUN_00415d3e(void) { uint in_EAX; undefined4 uVar1; uint in_ECX; undefined4 in_EDX; short sVar2; DAT_00466314 = FUN_004474c6(in_EAX,in_EDX,in_ECX,200); sVar2 = 0; do { uVar1 = FUN_00412ac4(sVar2 + 0x708); (&DAT_00466334)[sVar2] = uVar1; sVar2 = sVar2 + 1; } while (sVar2 < 5); uVar1 = FUN_00412ac4(0x70c); (&DAT_00466334)[sVar2] = uVar1; FUN_0041395c(DAT_00466334,0x15d,0x13d,10); FUN_0041395c(DAT_00466338,0x15d,0x153,10); FUN_0041395c(DAT_0046633c,0x15d,0x168,10); FUN_0041395c(DAT_00466340,0x132,0x14a,10); FUN_0041395c(DAT_00466344,3,0x14c,10); FUN_004129d4(DAT_00466348,1); FUN_0041395c(DAT_00466348,0x11d,0x14c,10); sVar2 = 0; do { uVar1 = FUN_00412ac4(sVar2 + 0x70e); (&DAT_00466318)[sVar2] = uVar1; sVar2 = sVar2 + 1; } while (sVar2 < 3); DAT_004605ba = 0; _DAT_00466354 = 0; _DAT_00466356 = 0; return; } void FUN_00415e4f(void) { uint uVar1; undefined4 uVar2; uint uVar3; int extraout_EDX; int iVar4; short sVar5; uVar3 = DAT_00466314; FUN_0044751f(); sVar5 = 0; iVar4 = extraout_EDX; do { uVar1 = (&DAT_00466334)[sVar5]; uVar2 = FUN_00412d0c((int)sVar5,iVar4,uVar3,(&DAT_00466334)[sVar5]); uVar3 = uVar1; iVar4 = (int)sVar5; (&DAT_00466334)[iVar4] = uVar2; sVar5 = sVar5 + 1; } while (sVar5 < 6); sVar5 = 0; do { uVar1 = (&DAT_00466318)[sVar5]; uVar2 = FUN_00412d0c((int)sVar5,iVar4,uVar3,(&DAT_00466318)[sVar5]); uVar3 = uVar1; iVar4 = (int)sVar5; (&DAT_00466318)[iVar4] = uVar2; sVar5 = sVar5 + 1; } while (sVar5 < 3); return; } void FUN_00415ea2(void) { undefined2 extraout_var; undefined4 uVar1; undefined4 uVar2; undefined4 extraout_EDX; undefined2 in_stack_00000004; DAT_004605ba = 0; FUN_004159da(); uVar1 = CONCAT22(extraout_var,in_stack_00000004); uVar2 = FUN_00415b77(); FUN_00430db4(uVar2,extraout_EDX,uVar1,0,0x13c,0x200,0x44); return; } void FUN_00415ed6(void) { FUN_00415970(); FUN_00415970(); FUN_00415970(); return; } void FUN_00415f35(undefined4 param_1,undefined4 param_2,PartDefinition *param_3, PartDefinition *param_4,short param_5) { bool bVar1; PartDefinition *pPVar2; PartDefinition *pPVar3; int iVar4; DlistNode *pDVar5; PartDefinition *pPVar6; uint uVar7; short sVar8; PartDefinition *pPVar9; if (-1 < *(short *)¶m_4->field_0x1c) { param_4 = _Level_partDefinitions + *(short *)¶m_4->field_0x1c; } *(undefined2 *)¶m_4->field_0x3a = 0; sVar8 = *(short *)¶m_4->field_0x3e; if (param_5 == 2) { pPVar9 = (PartDefinition *)0x0; } else { param_3 = param_4; pPVar9 = (PartDefinition *)FUN_0043d9e3(); } if (param_5 == 1) { pPVar3 = (PartDefinition *)0x0; } else { param_3 = param_4; pPVar3 = (PartDefinition *)FUN_0043d9c0(); } if ((pPVar9 == (PartDefinition *)0x0) && (pPVar3 == (PartDefinition *)0x0)) { bVar1 = true; } else { bVar1 = false; } while (!bVar1) { if (pPVar9 != (PartDefinition *)0x0) { pPVar6 = (PartDefinition *)(int)sVar8; iVar4 = (int)&(pPVar6->field0_0x0).next + (int)*(short *)&pPVar9->field_0x3e; if (iVar4 < 0xf8) { *(undefined2 *)&pPVar9->field_0x3a = 0; sVar8 = sVar8 + *(short *)&pPVar9->field_0x3e + 6; } else { *(undefined2 *)&pPVar9->field_0x3a = 0xffff; pPVar2 = _Level_partDefinitions; if (*(short *)&pPVar9->field_0x1c != -1) { uVar7 = (int)*(short *)&pPVar9->field_0x1c & 0x7fff; iVar4 = uVar7 * 0x31; *(undefined2 *)&_Level_partDefinitions[uVar7].field_0x3a = 0xffff; pPVar6 = pPVar2; } } pPVar2 = pPVar9; pPVar9 = (PartDefinition *)FUN_0043d9e3(iVar4,pPVar6,param_3); param_3 = pPVar2; } if (pPVar3 != (PartDefinition *)0x0) { if ((int)*(short *)&pPVar3->field_0x3e + (int)sVar8 < 0xf8) { *(undefined2 *)&pPVar3->field_0x3a = 0; sVar8 = sVar8 + *(short *)&pPVar3->field_0x3e + 6; } else { *(undefined2 *)&pPVar3->field_0x3a = 0xffff; if (*(short *)&pPVar3->field_0x1c != -1) { *(undefined2 *) &_Level_partDefinitions[(int)*(short *)&pPVar3->field_0x1c & 0x7fff].field_0x3a = 0xffff; } } param_3 = pPVar3; pPVar3 = (PartDefinition *)FUN_0043d9c0(); } if ((pPVar9 == (PartDefinition *)0x0) && (pPVar3 == (PartDefinition *)0x0)) { bVar1 = true; } else { bVar1 = false; } } sVar8 = 0x20; DAT_0046634c = (DlistNode *)0x0; DAT_00466350 = (DlistNode *)0x0; pDVar5 = DlistHead((Dlist *)_Actors[0]._114_4_); while (pDVar5 != (DlistNode *)0x0) { if (*(short *)((int)&pDVar5[7].next + 2) == 0) { *(short *)((int)&pDVar5[7].next + 2) = sVar8; *(undefined2 *)&pDVar5[7].prev = 0x143; pPVar9 = _Level_partDefinitions; if (DAT_0046634c == (DlistNode *)0x0) { DAT_0046634c = pDVar5; } DAT_00466350 = pDVar5; if ((*(short *)&pDVar5[3].prev != -1) && (((uint)pDVar5[3].prev & 0x8000) != 0)) { uVar7 = (int)*(short *)&pDVar5[3].prev & 0x7fff; *(short *)&_Level_partDefinitions[uVar7].field_0x3a = sVar8; *(undefined2 *)&pPVar9[uVar7].field_0x3c = 0x161; } sVar8 = sVar8 + *(short *)((int)&pDVar5[7].prev + 2) + 6; } pDVar5 = (DlistNode *)FUN_0043d9c0(); } return; } void FUN_004160e5(void) { DlistNode *node; for (node = DlistHead((Dlist *)_Actors[0]._114_4_); node != (DlistNode *)0x0; node = DlistNext(node)) { BigThing6Eh::processNodes_(node[8].prev); } return; } // WARNING: Heritage AFTER dead removal. Example location: EAX : 0x00416187 // WARNING: Globals starting with '_' overlap smaller symbols at the same address // WARNING: Restarted to delay deadcode elimination for space: register void FUN_00416115(void) { DlistNode *node; DlistNode *pDVar1; undefined2 uVar3; undefined4 uVar2; undefined4 extraout_EDX; undefined4 extraout_EDX_00; uVar2 = _Actors[0]._114_4_; node = DlistHead((Dlist *)_Actors[0]._114_4_); FUN_00431b20(node,extraout_EDX,uVar2); pDVar1 = (DlistNode *)0x0; _DAT_004605b8 = 0; _DAT_00466358 = 0; while (node != (DlistNode *)0x0) { if (*(short *)((int)&node[7].next + 2) != -1) { uVar3 = (undefined2)((uint)pDVar1 >> 0x10); uVar2 = CONCAT22(uVar3,*(undefined2 *)((int)&node[7].next + 2)); FUN_0041395c(node[8].prev,uVar2,CONCAT22(uVar3,*(undefined2 *)&node[7].prev),0x32); pDVar1 = node[8].prev; FUN_00412dc8(pDVar1); FUN_00416ed9(uVar2,extraout_EDX_00,pDVar1); FUN_00417206(); FUN_00417216(); } pDVar1 = DlistNext(node); node = pDVar1; } FUN_00412dc8(DAT_00466340); FUN_00412dc8(DAT_00466344); FUN_00412dc8(DAT_00466348); PickapuzzleHitTest_(3,0x14c,0x13,0x2c,10,(ClickHandler *)&LAB_00416429); FUN_00417206(); PickapuzzleHitTest_(0x11d,0x14c,0x13,0x2c,10,(ClickHandler *)&LAB_004163cd); FUN_00417206(); return; } void FUN_00416236(void) { DlistNode *node; uint uVar1; short in_stack_00000008; node = DlistHead((Dlist *)_Actors[0]._114_4_); uVar1 = FUN_0043d820(); for (; (short)uVar1 != *(short *)&node[1].next; node = DlistNext(node)) { } if (*(short *)((int)&node[7].next + 2) == -1) { FUN_00417255(); FUN_00415f35(); DAT_004605b6 = DAT_004605b6 | 1; } DAT_004605b6 = DAT_004605b6 | 0x40; DAT_0046635c = node[8].prev; DAT_00466360 = 0; if (in_stack_00000008 != 0) { DAT_00466360 = *(undefined4 *) &_Level_partDefinitions[(int)*(short *)&node[3].prev & 0x7fff].field_0x44; } return; } void FUN_004162c9(void) { undefined4 in_stack_00000004; DAT_00466324 = in_stack_00000004; DAT_004605b6 = DAT_004605b6 | 0x10; return; } void __stdcall FUN_004162de(undefined4 param_1) { ushort uVar1; int iVar2; iVar2 = DlistTail((Dlist *)_Actors[0]._114_4_); FUN_00417255(); *(undefined2 *)(iVar2 + 0x42) = 0; *(undefined4 *)(iVar2 + 0x44) = *(undefined4 *)&_Level_partDefinitions[(short)param_1].field_0x56; uVar1 = FUN_00413774(*(undefined4 *)&_Level_partDefinitions[(short)param_1].field_0x56, *(undefined2 *)(iVar2 + 0x10)); *(ushort *)(iVar2 + 0x3e) = uVar1; uVar1 = FUN_00413794(*(undefined4 *)&_Level_partDefinitions[(short)param_1].field_0x56, *(undefined2 *)(iVar2 + 0x10)); *(ushort *)(iVar2 + 0x40) = uVar1; *(undefined2 *)(iVar2 + 0x3a) = 0xffff; FUN_004162c9(); FUN_00415f35(); return; } void FUN_00416378(void) { FUN_004160e5(); FUN_00415d01(); return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_00416396(void) { undefined4 uVar1; undefined4 extraout_EDX; int in_stack_00000004; undefined4 uVar2; if (_DAT_00463546 == 0) { DAT_004605b6 = DAT_004605b6 | 0x8000; } uVar2 = 200; uVar1 = FUN_00417255(); if (in_stack_00000004 != 0) { FUN_00415f35(uVar1,extraout_EDX,uVar2,in_stack_00000004,0); } return; } // WARNING: Heritage AFTER dead removal. Example location: EAX : 0x004164b2 // WARNING: Globals starting with '_' overlap smaller symbols at the same address // WARNING: Restarted to delay deadcode elimination for space: register void FUN_00416485(void) { undefined4 in_EAX; undefined4 extraout_EDX; undefined4 uVar1; _DAT_004605b4 = 0; FUN_00415a24(); uVar1 = 0; SetCurrentColor(0); FUN_0044d5aa(in_EAX,extraout_EDX,uVar1); return; } void FUN_004164bb(void) { FUN_0043b6bf(); FUN_0043b3e0(); FUN_00417255(); DAT_004605b0 = 0xffff; return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_004164da(void) { int iVar1; uint uVar2; int iVar3; FUN_00417255(); FUN_00417255(); iVar1 = FUN_00415d01(); uVar2 = FUN_0043d87c(); iVar3 = FUN_00434e8a(); FUN_0043b6bf(); FUN_0043b3e0(); *(ushort *)&_Level_partDefinitions[DAT_004605b0].field_0x36 = *(ushort *)&_Level_partDefinitions[DAT_004605b0].field_0x36 | 0x4000; FUN_00414c5a(); DAT_004605b0 = 0xffff; if (iVar1 != 0) { FUN_00415f35(); } _DAT_0046a944 = 1; if (((short)iVar3 == 0) && ((short)uVar2 != 0)) { _GameState->missingCriticalSlots = _GameState->missingCriticalSlots + 1; } DAT_004605b6 = DAT_004605b6 | 0x8000; FUN_004465a5(*(undefined2 *)(DAT_00466314 + 2),5,0); FUN_0043c382(); return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_004165c3(void) { short sVar1; undefined4 uVar2; undefined4 extraout_EDX; bool bVar3; ushort in_stack_00000004; undefined4 uVar4; DAT_004605b6 = DAT_004605b6 & ~in_stack_00000004; if ((_DAT_004605b4 == 0) && (_DAT_0046a944 != 0)) { _DAT_004605b4 = 1; if (DAT_004605b0 != -1) { FUN_004164bb(); DAT_004605b6 = DAT_004605b6 | 1; } FUN_00415b77(); FUN_00415ed6(); } _DAT_0046a944 = 0; if (DAT_004605b6 != 0) { if ((DAT_004605b6 & 0x8000) != 0) { DAT_004605ba = 0; FUN_004160e5(); FUN_00417255(); FUN_004159da(); FUN_00415b77(); FUN_00415ed6(); FUN_00416115(); DAT_004605b6 = 0; } if ((DAT_004605b6 & 0x20) != 0) { FUN_004160e5(); uVar4 = 200; uVar2 = FUN_00417255(); FUN_00415b77(uVar2,extraout_EDX,uVar4,7); FUN_00415ed6(); DAT_004605b6 = 0; } if ((DAT_004605b6 & 0x4000) != 0) { FUN_004159da(); FUN_00415b77(); DAT_004605b6 = 4; } bVar3 = (DAT_004605b6 & 1) != 0; if (bVar3) { FUN_004160e5(); FUN_00416115(); DAT_004605b6 = DAT_004605b6 & 0xfffe; } if ((DAT_004605b6 & 0x40) != 0) { if (DAT_004605ba == 0) { if ((!bVar3) && (sVar1 = FUN_00413ed0(DAT_0046635c), sVar1 == 0x10)) { FUN_00412e18(DAT_0046635c); FUN_00412e18(DAT_00466360); DAT_004605ba = 1; } } else if ((DAT_004605ba == 1) && (sVar1 = FUN_00413ed0(DAT_0046635c), sVar1 == 0x10)) { DAT_004605ba = 0; DAT_004605b6 = DAT_004605b6 & 0xffbf; } } if ((DAT_004605b6 & 8) != 0) { FUN_004465a5(DAT_00466314[3],5,0); FUN_00415970(); DAT_004605b6 = DAT_004605b6 & 0xfff7; } if ((DAT_004605b6 & 0x10) != 0) { FUN_00416485(); DAT_004605b6 = DAT_004605b6 & 0xffef; } if ((DAT_004605b6 & 2) != 0) { FUN_00415970(); DAT_004605b6 = DAT_004605b6 & 0xfffd; } if ((DAT_004605b6 & 4) != 0) { FUN_00415970(); FUN_004465a5(*DAT_00466314,5,0); DAT_004605b6 = DAT_004605b6 & 0xfffb; } } return; } void FUN_004167de(void) { FUN_0042fc9c(); FUN_00415970(); FUN_00430bbc(); return; } void FUN_00416815(void) { if (-1 < DAT_004605b0) { FUN_00415be4(); FUN_004165c3(); } return; } void FUN_00416835(void) { return; } void FUN_0041683a(void) { return; } void FUN_0041683f(uint param_1,undefined4 param_2,uint param_3,undefined4 param_4,undefined4 param_5 ,ushort *param_6) { undefined4 uVar1; undefined2 uVar2; uVar1 = FUN_00412ac4(*param_6); *(undefined4 *)(param_6 + 8) = uVar1; param_6[2] = 1; param_6[3] = 0; uVar2 = (undefined2)((uint)uVar1 >> 0x10); FUN_0041395c(*(undefined4 *)(param_6 + 8),CONCAT22(uVar2,(undefined2)param_4), CONCAT22(uVar2,(undefined2)param_5),5); return; } void FUN_00416874(uint param_1,undefined4 param_2,uint param_3,int param_4) { undefined4 uVar1; uVar1 = FUN_00412d0c(param_1,param_2,param_3,*(uint *)(param_4 + 0x10)); *(undefined4 *)(param_4 + 0x10) = uVar1; return; } void FUN_0041688a(void) { undefined2 uVar1; int in_stack_00000004; BigThing6Eh::processNodes_(*(undefined4 *)(in_stack_00000004 + 0x10)); uVar1 = 0; if (*(int *)(in_stack_00000004 + 4) == 0) { uVar1 = 2; } FUN_004129d4(*(undefined4 *)(in_stack_00000004 + 0x10),uVar1); FUN_00412dc8(*(undefined4 *)(in_stack_00000004 + 0x10)); return; } void FUN_004168bd(void) { return; } void FUN_004168c2(void) { undefined4 uVar1; ushort uVar2; ushort uVar3; short sVar4; short sVar5; int iVar6; undefined4 extraout_EDX; int in_stack_00000004; undefined4 uVar7; undefined2 uVar8; code *onClick; uVar1 = *(undefined4 *)(in_stack_00000004 + 0x10); uVar2 = FUN_00413774(uVar1,0); uVar3 = FUN_00413794(uVar1,0); onClick = FUN_00443f0b; uVar8 = 5; uVar7 = uVar1; sVar4 = FUN_004137e8(); sVar5 = FUN_004137b4(sVar4,extraout_EDX,uVar7,uVar1); iVar6 = PickapuzzleHitTest_(sVar5,sVar4,uVar2,uVar3,uVar8,onClick); *(int *)(in_stack_00000004 + 0x14) = iVar6; FUN_00417216(); if (*(int *)(in_stack_00000004 + 8) == 0) { *(undefined4 *)(in_stack_00000004 + 0x18) = 0; } return; } void FUN_00416932(void) { int in_stack_00000004; if (*(int *)(in_stack_00000004 + 0x14) != 0) { FUN_00416e35(); *(undefined4 *)(in_stack_00000004 + 0x14) = 0; } if (*(int *)(in_stack_00000004 + 0x18) != 0) { *(undefined4 *)(in_stack_00000004 + 0x18) = 0; } return; } // WARNING: Heritage AFTER dead removal. Example location: EAX : 0x00416996 // WARNING: Restarted to delay deadcode elimination for space: register void FUN_0041695b(undefined4 param_1,undefined4 param_2,undefined4 param_3,int param_4) { undefined4 extraout_EDX; undefined4 uVar1; BigThing6Eh::processNodes_(*(undefined4 *)(param_4 + 0x10)); FUN_004129d4(*(undefined4 *)(param_4 + 0x10),1); uVar1 = *(undefined4 *)(param_4 + 0x10); FUN_00412dc8(uVar1); DAT_00466364 = FUN_00416ea3(param_1,extraout_EDX,uVar1); FUN_00417216(); return; } void FUN_004169b7(void) { int in_stack_00000004; FUN_00416e51(); BigThing6Eh::processNodes_(*(undefined4 *)(in_stack_00000004 + 0x10)); FUN_004129d4(*(undefined4 *)(in_stack_00000004 + 0x10),0); FUN_00412dc8(*(undefined4 *)(in_stack_00000004 + 0x10)); return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_004169ec(void) { short sVar1; short sVar2; short sVar3; bool bVar4; DlistNode *node; int iVar5; short in_stack_00000004; short in_stack_00000008; Dlist *in_stack_0000000c; FUN_0043ba43(); bVar4 = false; node = DlistHead(in_stack_0000000c); while( true ) { if (node == (DlistNode *)0x0) { return; } sVar1 = *(short *)((int)&node[1].next + 2); sVar2 = *(short *)&node[1].prev; sVar3 = *(short *)((int)&node[3].next + 2); if (sVar3 == 0) { if ((((sVar1 <= in_stack_00000004) && (in_stack_00000004 < *(short *)((int)&node[1].prev + 2)) ) && (sVar2 <= in_stack_00000008)) && (in_stack_00000008 < *(short *)&node[2].next)) { bVar4 = true; } } else if (sVar3 == 1) { iVar5 = (int)*(short *)((int)&node[1].prev + 2) - (int)sVar1; if ((uint)(((int)in_stack_00000004 - (int)sVar1) * ((int)in_stack_00000004 - (int)sVar1) + ((int)in_stack_00000008 - (int)sVar2) * ((int)in_stack_00000008 - (int)sVar2)) < (uint)(iVar5 * iVar5)) { bVar4 = true; } } else if ((sVar3 == 2) && (iVar5 = FUN_00413fdc(), iVar5 != 0)) { bVar4 = true; } if (bVar4) break; node = DlistNext(node); } _DAT_00466368 = in_stack_00000004 - sVar1; _DAT_0046636a = in_stack_00000008 - sVar2; DAT_0046636c = in_stack_00000004; DAT_0046636e = in_stack_00000008; if (DAT_004605e4 != (code *)0x0) { (*DAT_004605e4)(); } if (*(int *)((int)&node[2].next + 2) != 0) { (**(code **)((int)&node[2].next + 2))(); return; } FUN_00426848(); return; } void FUN_00416b73(void) { FUN_004169ec(); return; } void FUN_00416b90(void) { FUN_004169ec(); return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_00416bad(void) { if (_DAT_004605e0 == 0) { _DAT_004605e0 = 1; DAT_00466370 = 0; DAT_00466390 = 0; DAT_004605dc = DlistNew(); DAT_004605d8 = DlistNew(); _HitTestThing = DlistNew(); Game::onWmLbuttondown = FUN_00416b73; Game::onWmLbuttonup = FUN_00416b90; } return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_00416c01(void) { if (_DAT_004605e0 != 0) { FUN_00416f98(); PoolFreeIfNotNull(DAT_004605dc); PoolFreeIfNotNull(DAT_004605d8); PoolFreeIfNotNull(_HitTestThing); _DAT_004605e0 = 0; } return; } uint FUN_00416c3e(void) { int in_stack_00000004; int in_stack_00000008; return CONCAT22((short)((uint)in_stack_00000004 >> 0x10), *(short *)(in_stack_00000004 + 0x18) - *(short *)(in_stack_00000008 + 0x18)); } // WARNING: Globals starting with '_' overlap smaller symbols at the same address int __cdecl PickapuzzleHitTest(short param_1,short param_2,short param_3,short param_4,short param_5, ClickHandler *onClick) { undefined2 uVar1; DlistNode *node; node = PoolAlloc(0x26); *(ushort *)((int)&node[3].next + 2) = (ushort)(param_4 == 0); *(short *)((int)&node[1].next + 2) = param_1; *(short *)&node[1].prev = param_2; *(short *)((int)&node[1].prev + 2) = param_1 + param_3; *(short *)&node[2].next = param_2 + param_4; if (param_5 == -1) { *(undefined2 *)&node[3].next = DAT_004605e8; _DAT_004605e8 = _DAT_004605e8 + 1; } else { *(short *)&node[3].next = param_5; } if (((uint)onClick & 0xffff0000) == 0) { *(short *)((int)&node[4].next + 2) = (short)onClick; *(undefined4 *)((int)&node[2].next + 2) = 0; } else { *(undefined2 *)((int)&node[4].next + 2) = 0; *(ClickHandler **)((int)&node[2].next + 2) = onClick; } *(undefined2 *)&node[1].next = 0; *(short *)((int)&node[2].prev + 2) = DAT_00466390; DAT_00466390 = DAT_00466390 + 1; *(undefined2 *)&node[3].prev = 0; *(undefined4 *)((int)&node[3].prev + 2) = 0; uVar1 = FUN_00435355(); *(undefined2 *)&node[4].prev = uVar1; DlistInsert(_HitTestThing,node,-1); return (int)node; } void __cdecl FUN_00416d19(DlistNode *param_1) { if ((param_1 != (DlistNode *)0x0) && (*(short *)¶m_1[1].next == 0)) { *(undefined2 *)¶m_1[1].next = 1; DlistRemove(_HitTestThing,param_1); FUN_00435151(DAT_004605dc,param_1,FUN_00416c3e); } return; } void FUN_00416d57(void) { DlistNode *in_stack_00000004; if ((in_stack_00000004 != (DlistNode *)0x0) && (*(short *)&in_stack_00000004[1].next == 0)) { *(undefined2 *)&in_stack_00000004[1].next = 1; DlistRemove(_HitTestThing,in_stack_00000004); FUN_00435151(DAT_004605d8,in_stack_00000004,FUN_00416c3e); } return; } void FUN_00416d95(void) { DlistNode *in_stack_00000004; if ((in_stack_00000004 != (DlistNode *)0x0) && (*(short *)&in_stack_00000004[1].next != 0)) { *(undefined2 *)&in_stack_00000004[1].next = 0; DlistRemove(DAT_004605dc,in_stack_00000004); DlistInsert(_HitTestThing,in_stack_00000004,-1); } return; } void FUN_00416dd3(void) { DlistNode *in_stack_00000004; if ((in_stack_00000004 != (DlistNode *)0x0) && (*(short *)&in_stack_00000004[1].next != 0)) { *(undefined2 *)&in_stack_00000004[1].next = 0; DlistRemove(DAT_004605d8,in_stack_00000004); DlistInsert(_HitTestThing,in_stack_00000004,-1); } return; } void FUN_00416e11(void) { DlistNode *in_stack_00000004; if (in_stack_00000004 != (DlistNode *)0x0) { DlistRemove(_HitTestThing,in_stack_00000004); PoolFree(in_stack_00000004); } return; } void FUN_00416e35(void) { undefined4 uVar1; undefined4 extraout_EDX; int in_stack_00000004; int iVar2; if (in_stack_00000004 != 0) { iVar2 = in_stack_00000004; uVar1 = FUN_00416d95(); FUN_00416e11(uVar1,extraout_EDX,iVar2,in_stack_00000004); } return; } void FUN_00416e51(void) { undefined4 uVar1; undefined4 extraout_EDX; int in_stack_00000004; int iVar2; if (in_stack_00000004 != 0) { iVar2 = in_stack_00000004; uVar1 = FUN_00416dd3(); FUN_00416e11(uVar1,extraout_EDX,iVar2,in_stack_00000004); } return; } int __cdecl PickapuzzleHitTest_(undefined2 param_1,undefined2 param_2,undefined2 param_3,undefined2 param_4, undefined2 param_5,ClickHandler *onClick) { int iVar1; iVar1 = PickapuzzleHitTest(param_1,param_2,param_3,param_4,param_5,onClick); FUN_00416d19(iVar1); return iVar1; } int FUN_00416ea3(void) { int iVar1; undefined2 in_stack_00000004; undefined2 in_stack_00000008; undefined2 in_stack_0000000c; undefined2 in_stack_00000010; undefined2 in_stack_00000014; ClickHandler *in_stack_00000018; iVar1 = PickapuzzleHitTest(in_stack_00000004,in_stack_00000008,in_stack_0000000c,in_stack_00000010 ,in_stack_00000014,in_stack_00000018); FUN_00416d57(); return iVar1; } int FUN_00416ed9(void) { int iVar1; undefined2 *in_stack_00000004; undefined2 in_stack_00000008; ClickHandler *in_stack_0000000c; iVar1 = PickapuzzleHitTest(*in_stack_00000004,in_stack_00000004[1],in_stack_00000004[2], in_stack_00000004[3],in_stack_00000008,in_stack_0000000c); FUN_00416d19(iVar1); return iVar1; } int FUN_00416f13(void) { int iVar1; undefined2 *in_stack_00000004; undefined2 in_stack_00000008; ClickHandler *in_stack_0000000c; iVar1 = PickapuzzleHitTest(*in_stack_00000004,in_stack_00000004[1],in_stack_00000004[2], in_stack_00000004[3],in_stack_00000008,in_stack_0000000c); FUN_00416d57(); return iVar1; } void FUN_00416f4d(void) { *(Dlist **)(&DAT_00466374 + DAT_00466370 * 4) = DAT_004605dc; DAT_00466370 = DAT_00466370 + 1; *(Dlist **)(&DAT_00466374 + DAT_00466370 * 4) = DAT_004605d8; DAT_00466370 = DAT_00466370 + 1; DAT_004605dc = DlistNew(); DAT_004605d8 = DlistNew(); return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_00416f98(void) { DlistNode *pDVar1; DlistNode *pDVar2; undefined4 extraout_EDX; undefined4 extraout_EDX_00; DlistNode *pDVar3; pDVar1 = DlistHead(DAT_004605dc); while (pDVar1 != (DlistNode *)0x0) { pDVar3 = pDVar1; pDVar2 = DlistNext(pDVar1); FUN_00416e35(pDVar2,extraout_EDX,pDVar3,pDVar1); pDVar1 = pDVar2; } pDVar1 = DlistHead(DAT_004605d8); while (pDVar1 != (DlistNode *)0x0) { pDVar3 = pDVar1; pDVar2 = DlistNext(pDVar1); FUN_00416e51(pDVar2,extraout_EDX_00,pDVar3,pDVar1); pDVar1 = pDVar2; } DAT_00466390 = 0; _DAT_004605e8 = 0; return; } void FUN_00416ffd(void) { short sVar1; FUN_00416f98(); PoolFreeIfNotNull(DAT_004605dc); PoolFreeIfNotNull(DAT_004605d8); sVar1 = DAT_00466370; DAT_00466370 = DAT_00466370 + -1; DAT_004605d8 = *(undefined4 *)(&DAT_00466374 + DAT_00466370 * 4); DAT_00466370 = sVar1 + -2; DAT_004605dc = *(undefined4 *)(&DAT_00466374 + DAT_00466370 * 4); return; } void FUN_0041704f(void) { ClickHandler *in_stack_00000004; PickapuzzleHitTest_(0,0,0x200,0x180,0,in_stack_00000004); return; } void FUN_0041706f(void) { FUN_00416ea3(); return; } void FUN_00417096(void) { short sVar1; undefined4 uVar2; Dlist *pDVar3; undefined4 extraout_EDX; uint uVar4; uint uVar5; undefined4 extraout_EDX_00; Dlist *pDVar6; Dlist *node; pDVar6 = DAT_004605dc; pDVar3 = (Dlist *)DlistHead(DAT_004605dc); uVar2 = extraout_EDX; while (node = pDVar3, node != (Dlist *)0x0) { sVar1 = *(short *)((int)&node[1].head + 2); uVar4 = CONCAT22((short)((uint)uVar2 >> 0x10),*(short *)((int)&node[1].tail + 2) - sVar1) - 1; uVar5 = CONCAT22((short)(uVar4 >> 0x10),*(short *)&node[2].head - *(short *)&node[1].tail) - 1; FUN_00431b60(sVar1,uVar5,pDVar6,sVar1,*(short *)&node[1].tail,uVar4 & 0xffff,uVar5 & 0xffff, *(undefined2 *)&node[3].head); pDVar3 = (Dlist *)DlistNext((DlistNode *)node); uVar2 = extraout_EDX_00; pDVar6 = node; } FUN_00430bbc(); return; } void FUN_00417112(void) { FUN_00431b60(); FUN_00430bbc(); return; } void FUN_0041716d(void) { short sVar1; short sVar2; int in_stack_00000004; undefined2 in_stack_00000008; undefined2 in_stack_0000000c; sVar1 = *(short *)(in_stack_00000004 + 10); sVar2 = *(short *)(in_stack_00000004 + 0xc); *(undefined2 *)(in_stack_00000004 + 10) = in_stack_00000008; *(undefined2 *)(in_stack_00000004 + 0xc) = in_stack_0000000c; *(short *)(in_stack_00000004 + 0xe) = (*(short *)(in_stack_00000004 + 0xe) - sVar1) + *(short *)(in_stack_00000004 + 10); *(short *)(in_stack_00000004 + 0x10) = (*(short *)(in_stack_00000004 + 0x10) - sVar2) + *(short *)(in_stack_00000004 + 0xc); return; } void FUN_004171a7(void) { DlistNode *in_stack_00000004; undefined2 in_stack_00000008; DlistRemove(DAT_004605dc,in_stack_00000004); *(undefined2 *)&in_stack_00000004[3].next = in_stack_00000008; FUN_00435151(DAT_004605dc,in_stack_00000004,FUN_00416c3e); return; } void FUN_004171dc(void) { int in_stack_00000004; short in_stack_00000008; short in_stack_0000000c; short in_stack_00000010; short in_stack_00000014; if (in_stack_00000004 != 0) { *(short *)(in_stack_00000004 + 10) = in_stack_00000008; *(short *)(in_stack_00000004 + 0xc) = in_stack_0000000c; *(short *)(in_stack_00000004 + 0xe) = in_stack_00000008 + in_stack_00000010; *(short *)(in_stack_00000004 + 0x10) = in_stack_0000000c + in_stack_00000014; } return; } void FUN_00417206(void) { int in_stack_00000004; undefined2 in_stack_00000008; *(undefined2 *)(in_stack_00000004 + 0x1c) = in_stack_00000008; return; } void FUN_00417216(void) { int in_stack_00000004; undefined4 in_stack_00000008; *(undefined4 *)(in_stack_00000004 + 0x1e) = in_stack_00000008; return; } void FUN_00417224(void) { int in_stack_00000004; uint in_stack_00000008; if (in_stack_00000004 != 0) { if ((in_stack_00000008 & 0xffff0000) == 0) { *(short *)(in_stack_00000004 + 0x22) = (short)in_stack_00000008; *(undefined4 *)(in_stack_00000004 + 0x12) = 0; return; } *(undefined2 *)(in_stack_00000004 + 0x22) = 0; *(uint *)(in_stack_00000004 + 0x12) = in_stack_00000008; } return; } void FUN_00417255(void) { DlistNode *pDVar1; DlistNode *pDVar2; undefined4 extraout_EDX; undefined4 extraout_EDX_00; short in_stack_00000004; DlistNode *pDVar3; pDVar2 = DlistHead(DAT_004605dc); while (pDVar1 = pDVar2, pDVar1 != (DlistNode *)0x0) { pDVar3 = pDVar1; pDVar2 = DlistNext(pDVar1); if (in_stack_00000004 == *(short *)&pDVar1[3].prev) { FUN_00416e35(pDVar2,extraout_EDX,pDVar3,pDVar1); } } pDVar2 = DlistHead(DAT_004605d8); while (pDVar1 = pDVar2, pDVar1 != (DlistNode *)0x0) { pDVar3 = pDVar1; pDVar2 = DlistNext(pDVar1); if (in_stack_00000004 == *(short *)&pDVar1[3].prev) { FUN_00416e51(pDVar2,extraout_EDX_00,pDVar3,pDVar1); } } return; } void FUN_004172bf(void) { undefined4 in_stack_00000004; DAT_004605e4 = in_stack_00000004; return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_004172cc(void) { Dlist *list; Dlist *pDVar1; int in_stack_00000004; short in_stack_00000008; Dlist *node; list = DAT_004605d8; if (in_stack_00000008 != 0) { list = DAT_004605dc; } pDVar1 = (Dlist *)DlistHead(list); while( true ) { node = pDVar1; if (node == (Dlist *)0x0) { return; } if (in_stack_00000004 == *(int *)((int)&node[3].tail + 2)) break; pDVar1 = (Dlist *)DlistNext((DlistNode *)node); list = node; } _DAT_00466368 = *(undefined2 *)((int)&node[1].head + 2); _DAT_0046636a = *(undefined2 *)&node[1].tail; if (*(int *)((int)&node[2].head + 2) == 0) { return; } (**(code **)((int)&node[2].head + 2))(node,_DAT_0046636a,list,node); return; } void FUN_00417328(void) { undefined2 *puVar1; uint uVar2; int iVar3; undefined2 uVar4; ClickHandler *in_stack_00000008; short in_stack_0000000c; puVar1 = (undefined2 *)FUN_00413ebc(); uVar2 = FUN_0041381c(); iVar3 = PickapuzzleHitTest(*puVar1,puVar1[1],puVar1[2],puVar1[3],(short)uVar2,in_stack_00000008); uVar4 = 2; if (in_stack_0000000c == 0) { uVar4 = 0; } *(undefined2 *)(iVar3 + 0x1a) = uVar4; return; } undefined4 FUN_00417375(void) { undefined4 uVar1; short in_stack_00000008; uVar1 = FUN_00417328(); if (in_stack_00000008 == 0) { FUN_00416d57(); } else { FUN_00416d19(uVar1); } return uVar1; } void FUN_004173aa(void) { DlistNode *pDVar1; DlistNode *pDVar2; undefined4 extraout_EDX; undefined4 extraout_EDX_00; short in_stack_00000004; DlistNode *pDVar3; pDVar2 = DlistHead(DAT_004605dc); while (pDVar1 = pDVar2, pDVar1 != (DlistNode *)0x0) { pDVar3 = pDVar1; pDVar2 = DlistNext(pDVar1); if (in_stack_00000004 <= *(short *)&pDVar1[4].prev) { FUN_00416e35(pDVar2,extraout_EDX,pDVar3,pDVar1); } } pDVar2 = DlistHead(DAT_004605d8); while (pDVar1 = pDVar2, pDVar1 != (DlistNode *)0x0) { pDVar3 = pDVar1; pDVar2 = DlistNext(pDVar1); if (in_stack_00000004 <= *(short *)&pDVar1[4].prev) { FUN_00416e51(pDVar2,extraout_EDX_00,pDVar3,pDVar1); } } pDVar2 = DlistHead(_HitTestThing); while (pDVar1 = pDVar2, pDVar1 != (DlistNode *)0x0) { pDVar2 = DlistNext(pDVar1); if (in_stack_00000004 <= *(short *)&pDVar1[4].prev) { DlistRemove(_HitTestThing,pDVar1); PoolFree(pDVar1); } } return; } void FUN_004174d3(void) { int iVar1; undefined4 *puVar2; short in_stack_00000004; iVar1 = (int)in_stack_00000004; puVar2 = FUN_0042b476(); if (puVar2 != (undefined4 *)0x0) { FUN_00434e8a(); LoadPartEntity(*(undefined2 *)&_Actors[iVar1].field_0x1a, *(undefined2 *)&_Actors[iVar1].field_0x14, *(undefined2 *)&_Actors[iVar1].field_0x1c,*(undefined2 *)(puVar2 + 0x18),0); } return; } undefined4 FUN_00417532(void) { short sVar1; short sVar2; short *psVar3; bool bVar4; bool bVar5; bool bVar6; ushort uVar7; int iVar8; void *pvVar9; int iVar10; undefined2 extraout_var; undefined2 uVar11; short *psVar12; int *piVar13; short in_stack_00000004; short local_14; short local_10 [2]; short local_c; short local_6; iVar8 = (int)in_stack_00000004; piVar13 = (int *)0x0; bVar5 = false; local_14 = -1; bVar6 = false; sVar1 = *(short *)&_Actors[in_stack_00000004].field_0x48; if (-1 < *(short *)&_Actors[iVar8].field_0x24) { *(short *)&_Actors[iVar8].field_0x24 = *(short *)&_Actors[iVar8].field_0x24 + -1; } psVar3 = (short *)(&PTR_DAT_00460840)[*(short *)&_Actors[iVar8].field_0x18]; pvVar9 = (void *)0x0; *(undefined4 *)&_Actors[iVar8].field_0x96 = 0; if (psVar3 != (short *)0x0) { if (*psVar3 + 2 == 0) { local_14 = *(short *)&_Actors[iVar8].field_0x18; pvVar9 = (void *)0x0; } else { local_14 = psVar3[4]; sVar2 = psVar3[3]; pvVar9 = (void *)CONCAT22((short)((uint)(*psVar3 + 2) >> 0x10),sVar2); for (local_6 = 0; (psVar12 = psVar3 + 6, !bVar5 && (pvVar9 = (void *)CONCAT22((short)((uint)pvVar9 >> 0x10),local_6), local_6 < sVar2)); local_6 = local_6 + 1) { bVar4 = false; pvVar9 = Memcpy(local_10,_Actors + iVar8,10); if (psVar3[7] == 4) { iVar10 = (int)local_c >> 1; if (iVar10 < 0) { iVar10 = iVar10 + (uint)(((int)local_c & 1U) != 0); } local_10[0] = (short)iVar10 + local_10[0] + -2; pvVar9 = (void *)CONCAT22((short)((uint)iVar10 >> 0x10),local_10[0]); local_c = 4; if (*(short *)&_Actors[iVar8].field_0x24 < 0) goto LAB_00417611; } else { LAB_00417611: if (*psVar12 == -1) { bVar4 = true; } else { if (*(short *)&_Actors[in_stack_00000004].field_0x4c < 0) { local_10[0] = local_10[0] - *psVar12; } else { local_c = local_c + *psVar12; } uVar7 = FUN_0041907c(); pvVar9 = (void *)(CONCAT22(extraout_var,uVar7) & (int)psVar3[7]); if ((pvVar9 != (void *)0x0) && (psVar3[0xb] == 0)) { bVar4 = true; } } if (bVar4) { iVar10 = Random(); pvVar9 = (void *)(int)psVar3[9]; if (iVar10 % 1000 < (int)pvVar9) { local_14 = psVar3[10]; pvVar9 = (void *)CONCAT22(psVar3[9] >> 0xf,local_14); bVar5 = true; } } } psVar3 = psVar12; } } } if (local_14 == 0x1c) { FUN_00414efe(); pvVar9 = (void *)FUN_004352c9(); if ((short)pvVar9 != 0) { local_14 = 2; } } if (local_14 == 0x1d) { FUN_00414efe(); pvVar9 = (void *)FUN_004352c9(); if ((short)pvVar9 != 0) { local_14 = 3; } } if (local_14 != -1) { pvVar9 = (void *)(int)local_14; piVar13 = *(int **)((int)pvVar9 * 4 + 0x460a78); } uVar11 = (undefined2)((uint)pvVar9 >> 0x10); if (piVar13 != (int *)0x0) { for (; (uVar11 = (undefined2)((uint)pvVar9 >> 0x10), !bVar6 && (*piVar13 != -1)); piVar13 = piVar13 + 3) { pvVar9 = (void *)(~piVar13[1] & (int)sVar1 << 0x10); if ((pvVar9 == (void *)*piVar13) || (*piVar13 == 0)) { bVar6 = true; local_14 = (short)piVar13[2]; pvVar9 = (void *)CONCAT22((short)((uint)pvVar9 >> 0x10),local_14); } } } if ((local_14 == 2) && (*(short *)&_Actors[iVar8].field_0x32 < 0)) { local_14 = 10; } if ((local_14 == 3) && (0 < *(short *)&_Actors[iVar8].field_0x32)) { local_14 = 0xb; } *(undefined2 *)&_Actors[iVar8].field_0x98 = *(undefined2 *)&_Actors[iVar8].field_0x48; return CONCAT22(uVar11,local_14); } void FUN_00417792(void) { short sVar1; bool bVar2; ushort obverse; short sVar3; int iVar4; int iVar5; short *psVar6; short sVar7; short in_stack_00000004; iVar4 = (int)in_stack_00000004; bVar2 = _GameState->levelInBuilding < 3; *(short *)(&DAT_00466398 + *(short *)&_Actors[iVar4].field_0x1a * 2) = *(short *)(&DAT_00466398 + *(short *)&_Actors[iVar4].field_0x1a * 2) + 1; obverse = RoomIsObverse(*(short *)&_Actors[iVar4].field_0x1a); ActorUpdateDynamics(in_stack_00000004,obverse); if (*(short *)&_Actors[iVar4].field_0x2c != -1) { sVar3 = *(short *)&_Actors[iVar4].field_0x2c; if (sVar3 == 0x15) { iVar5 = FUN_0044ca1c(); *(short *)&_Actors[iVar4].field_0x24 = (short)iVar5; } *(undefined2 *)&_Actors[iVar4].field_0x2c = 0xffff; *(undefined2 *)&_Actors[iVar4].field_0x10 = 0; *(short *)&_Actors[iVar4].field_0x18 = sVar3; FUN_0043426d(); *(undefined2 *)&_Actors[iVar4].field_0x22 = 0; if (((sVar3 == 0x15) || (sVar3 == 0x18)) || (sVar3 == 0x19)) { FUN_00414eb6(); psVar6 = (short *)FUN_0041469e(); if (obverse == 0) { if (bVar2) { sVar3 = 0x10; sVar7 = 0x23; } else { sVar3 = 0x10; sVar7 = 0x1b; } } else if (bVar2) { sVar3 = 6; sVar7 = 0xc; } else { sVar3 = 6; sVar7 = 10; } sVar1 = *psVar6; *(short *)&_Actors[iVar4].field_0x14 = sVar3 + sVar1; *(short *)(_Actors + iVar4) = sVar3 + sVar1; sVar3 = psVar6[1]; *(short *)&_Actors[iVar4].field_0x16 = sVar7 + sVar3; *(short *)&_Actors[iVar4].field_0x2 = sVar7 + sVar3; } } return; } void FUN_004178b8(undefined4 param_1,undefined4 param_2,uint param_3,short param_4) { short sVar1; ushort uVar2; undefined2 uVar3; undefined2 uVar4; int iVar5; int iVar6; int iVar7; undefined4 local_8; iVar5 = (int)param_4; iVar6 = FUN_00414eb6(); sVar1 = *(short *)(iVar6 + 0x10); iVar7 = (int)sVar1; if (iVar7 == 6) { uVar3 = *(undefined2 *)(iVar6 + 0x12); *(undefined2 *)&_Actors[param_4].field_0x22 = 0; uVar4 = 0x23; if (*(short *)&_Actors[param_4].field_0x4c < 0) { uVar4 = 0x22; } local_8 = CONCAT22(uVar4,uVar3); } else if (iVar7 == 9) { uVar2 = *(ushort *)(iVar6 + 0x12); *(undefined2 *)&_Actors[param_4].field_0x22 = 0; local_8 = CONCAT22(0x15,uVar2 & 0xf); } else { local_8 = param_3; if (iVar7 - 10U < 2) { uVar3 = *(undefined2 *)(iVar6 + 0x12); *(undefined2 *)&_Actors[param_4].field_0x22 = 0; uVar4 = 0x19; if (sVar1 != 10) { uVar4 = 0x18; } local_8 = CONCAT22(uVar4,uVar3) & 0xffff000f; } } *(undefined4 *)&_Actors[iVar5].field_0x96 = 0; *(undefined2 *)&_Actors[iVar5].field_0x20 = local_8._2_2_; *(undefined2 *)&_Actors[iVar5].field_0x2c = local_8._2_2_; *(short *)(&DAT_00466398 + *(short *)&_Actors[iVar5].field_0x1a * 2) = *(short *)(&DAT_00466398 + *(short *)&_Actors[iVar5].field_0x1a * 2) + -1; *(undefined2 *)&_Actors[iVar5].field_0x3c = *(undefined2 *)&_Actors[iVar5].field_0x1a; *(undefined2 *)&_Actors[iVar5].field_0x1a = (undefined2)local_8; return; } void __stdcall DoSomethingWithEseqResources_(void) { bool bVar1; ushort uVar2; short sVar3; bVar1 = _GameState->levelInBuilding < 3; if (DAT_004663c8 == (short *)0x0) { uVar2 = 0x1198; if (bVar1) { uVar2 = 0x119a; } DAT_004663c8 = GetEseqResource_(uVar2,0x4663d0,(short **)&DAT_004663b8,(short **)&DAT_004663bc); } if (DAT_004663cc == (short *)0x0) { uVar2 = 0x1199; if (bVar1) { uVar2 = 0x119b; } DAT_004663cc = GetEseqResource_(uVar2,0x46647c,(short **)&DAT_004663c0,(short **)&DAT_004663c4); } sVar3 = 2; do { *(undefined4 *)&_Actors[sVar3].field_0x76 = DAT_004663c0; *(undefined4 *)&_Actors[sVar3].field_0x7a = DAT_004663b8; *(undefined4 *)&_Actors[sVar3].field_0x7e = DAT_004663c4; *(undefined4 *)&_Actors[sVar3].field_0x82 = DAT_004663bc; sVar3 = sVar3 + 1; } while (sVar3 < 0xc); return; } void FUN_00417a84(void) { if (DAT_004663c8 != 0) { FUN_0044073c(); DAT_004663c8 = 0; } if (DAT_004663cc != 0) { FUN_0044073c(); DAT_004663cc = 0; } return; } void FUN_00417abd(void) { short sVar1; short sVar2; undefined2 uVar3; DAT_00466394 = DlistNew(); sVar1 = _GameState->levelInBuilding; DoSomethingWithEseqResources_(); sVar2 = 2; do { *(short *)&_Actors[sVar2].field_0x42 = sVar2; *(undefined2 *)&_Actors[sVar2].field_0x10 = 0; *(undefined2 *)&_Actors[sVar2].field_0x3e = 0; *(undefined2 *)&_Actors[sVar2].field_0x12 = 2; *(undefined1 **)&_Actors[sVar2].field_0x66 = &LAB_00417454; *(undefined2 *)&_Actors[sVar2].field_0x2e = 1; *(undefined2 *)&_Actors[sVar2].field_0x30 = 1; *(Dlist **)&_Actors[sVar2].field_0x72 = DAT_00466394; _Actors[sVar2].obverseDynamics = &DAT_004663d0; _Actors[sVar2].reverseDynamics = &DAT_0046647c; uVar3 = 0x119a; if (sVar1 < 3) { uVar3 = 0x1198; } *(undefined2 *)&_Actors[sVar2].field_0x9a = uVar3; *(undefined4 *)&_Actors[sVar2].field_0x76 = DAT_004663c0; *(undefined4 *)&_Actors[sVar2].field_0x7a = DAT_004663b8; *(undefined4 *)&_Actors[sVar2].field_0x7e = DAT_004663c4; *(undefined4 *)&_Actors[sVar2].field_0x82 = DAT_004663bc; *(code **)&_Actors[sVar2].field_0x88 = FUN_004178b8; *(undefined2 *)&_Actors[sVar2].field_0x20 = 0xffff; *(undefined2 *)&_Actors[sVar2].field_0xe = 0xffff; *(undefined2 *)&_Actors[sVar2].field_0x2c = 0xffff; *(code **)&_Actors[sVar2].field_0x8c = FUN_00417792; *(undefined4 *)&_Actors[sVar2].field_0x90 = 0; *(code **)&_Actors[sVar2].field_0x62 = FUN_00417532; *(undefined2 *)&_Actors[sVar2].field_0x24 = 0xffff; *(undefined4 *)&_Actors[sVar2].field_0x6a = 0; sVar2 = sVar2 + 1; } while (sVar2 < 0xc); return; } void FUN_00417c57(void) { FUN_00417a84(); PoolFreeIfNotNull(DAT_00466394); return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_00417c69(void) { short sVar1; ushort obverse; int iVar2; uint uVar3; int iVar4; short actorIndex; short *psVar5; short local_e; short local_c; iVar4 = 0x468738; sVar1 = *(short *)_LevelLut1_[_GameState->level]; psVar5 = (short *)((int)_LevelLut1_[_GameState->level] + 2); if (_DAT_00467cf0 == 2) { iVar2 = (int)*psVar5 >> 1; if (iVar2 < 0) { iVar2 = iVar2 + (uint)(((int)*psVar5 & 1U) != 0); } *psVar5 = (short)iVar2; } Memset(&DAT_00466398,0,0x20); actorIndex = 2; do { if (actorIndex + -2 < (int)sVar1) { *(ushort *)(iVar4 + 0x2a) = (ushort)(*(short *)&_GameState->field_0x16 == 0); *(undefined2 *)(iVar4 + 0x48) = 0; *(undefined2 *)(iVar4 + 0x22) = 0; *(undefined2 *)(iVar4 + 0x70) = 0; *(undefined4 *)(iVar4 + 0x96) = 0; *(undefined2 *)(iVar4 + 0x6e) = 0xffff; *(undefined2 *)(iVar4 + 0x3c) = 0xffff; *(short *)(&DAT_00466398 + *psVar5 * 2) = *(short *)(&DAT_00466398 + *psVar5 * 2) + 1; *(short *)(iVar4 + 0x1a) = *psVar5; psVar5 = psVar5 + 1; uVar3 = FUN_00414700(); obverse = RoomIsObverse(*(short *)(iVar4 + 0x1a)); if (*(short *)(iVar4 + 0x9a) == 0x119a) { local_c = 0x1b; local_e = 0x2e; } else { local_c = 0x1d; local_e = 0x36; } if (obverse == 0) { iVar2 = Random(); *(short *)(iVar4 + 0x1c) = (short)(iVar2 % 3); *(short *)(iVar4 + 0x16) = *(short *)(iVar4 + 0x1c) * 100 + local_e; if ((uVar3 & 2) != 0) { *(short *)(iVar4 + 0x1c) = *(short *)(iVar4 + 0x1c) + 3; } } else { iVar2 = Random(); *(short *)(iVar4 + 0x1c) = (short)(iVar2 % 6); *(short *)(iVar4 + 0x16) = *(short *)(iVar4 + 0x1c) * 0x32 + local_c; } *(undefined2 *)(iVar4 + 0x1e) = 0xffff; *(undefined2 *)(iVar4 + 0x18) = 0; iVar2 = Random(); if (iVar2 % 100 < 0x32) { *(undefined2 *)(iVar4 + 0x14) = 0x10; *(undefined4 *)(iVar4 + 0x96) = 2; } else { *(undefined2 *)(iVar4 + 0x14) = 0x1e0; *(undefined4 *)(iVar4 + 0x96) = 1; } ActorUpdateDynamics(actorIndex,obverse); } else { *(undefined2 *)(iVar4 + 0x2a) = 1; } iVar4 = iVar4 + 0xa8; actorIndex = actorIndex + 1; } while (actorIndex < 0xc); return; } void FUN_00417e20(void) { char local_a4 [80]; char local_54 [80]; GetWinapiString(local_54,0x4e3a); GetWinapiString(local_a4,0x4e3b); SetCurrentColor(0xfff); Draw::StringWithCurrentFontAndColor(8,0x3d,local_54); Draw::StringWithCurrentFontAndColor(8,0x4d,local_a4); SetCurrentColor(0xafa); Draw::StringWithCurrentFontAndColor(0x40,0x3d,DAT_004666d8); SetCurrentColor(0x9f9); Draw::StringWithCurrentFontAndColor(0x40,0x4d,DAT_004666dc); return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_00417eba(uint param_1,undefined4 param_2,uint param_3) { bool bVar1; uint uVar2; uint uVar3; char *src; GameState *pGVar4; uint uVar5; uint extraout_ECX; uint extraout_ECX_00; uint extraout_ECX_01; uint extraout_ECX_02; uint extraout_ECX_03; char *extraout_ECX_04; undefined4 extraout_EDX; GameState *extraout_EDX_00; undefined4 extraout_EDX_01; GameState *extraout_EDX_02; undefined4 extraout_EDX_03; GameState *extraout_EDX_04; undefined4 extraout_EDX_05; undefined4 extraout_EDX_06; GameState *extraout_EDX_07; GameState *pGVar6; bVar1 = false; _DAT_004666d4 = 0; _DAT_004666d2 = 0; FUN_00431024(param_1,param_2,param_3,0x1004); uVar2 = FUN_00412ac4(0x1006); uVar3 = FUN_00413b88(); FUN_00412d0c(uVar3,extraout_EDX,extraout_ECX,uVar2); uVar2 = FUN_00412ac4(0x1008); src = GetWinapiStringAlloc(0x4e39); Strcpy(&DAT_00466682,src); TurboFree_(src); if (DAT_00467cf2 == 0) { DAT_004666d8 = _GameState; DAT_004666dc = (GameState *)&DAT_00466682; if (_GameState->buildingCompletedLevels[_GameState->building] < 4) { _DAT_004666d2 = 1; } pGVar6 = _GameState; if (*(short *)_GameState->field46_0x175e == 0xf) { _DAT_004666d2 = 0; bVar1 = true; } } else { DAT_004666d8 = (GameState *)&DAT_00466682; DAT_004666dc = _GameState; _DAT_004666d4 = 1; pGVar6 = extraout_EDX_00; } pGVar4 = _GameState; if (_DAT_004666d2 == 0) { FUN_00413b88(); src = (char *)FUN_00412ac4(0x100a); uVar3 = FUN_00413b88(); pGVar4 = (GameState *)FUN_00412d0c(uVar3,extraout_EDX_01,extraout_ECX_00,(uint)src); pGVar6 = extraout_EDX_02; } if (_DAT_004666d4 == 0) { FUN_00413b88(); src = (char *)FUN_00412ac4(0x100b); uVar3 = FUN_00413b88(); pGVar4 = (GameState *)FUN_00412d0c(uVar3,extraout_EDX_03,extraout_ECX_01,(uint)src); pGVar6 = extraout_EDX_04; } if (bVar1) { FUN_00413b88(); uVar3 = FUN_00412ac4(0x100c); uVar5 = FUN_00413b88(); FUN_00412d0c(uVar5,extraout_EDX_05,extraout_ECX_02,uVar3); uVar3 = FUN_00412ac4(0x1009); uVar5 = FUN_00413b88(); FUN_00412d0c(uVar5,extraout_EDX_06,extraout_ECX_03,uVar3); pGVar4 = (GameState *)FUN_00415aa2(); src = extraout_ECX_04; pGVar6 = extraout_EDX_07; } FUN_00412d0c((uint)pGVar4,pGVar6,(uint)src,uVar2); FUN_00417e20(); DAT_004605b6 = DAT_004605b6 | 0x20; FUN_004165c3(); return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_004180c2(void) { uint uVar1; int iVar2; undefined4 extraout_EDX; uVar1 = *(uint *)&_GameState->field_0x10; iVar2 = FUN_0042b4e4(); if ((short)iVar2 < 7) { _DAT_004601ac = 1; FUN_0044c8c2(iVar2 + 0x1004U,extraout_EDX,uVar1,(ushort)(iVar2 + 0x1004U)); _DAT_004601ac = 0; } return; } void FUN_0041879f(uint param_1,undefined4 param_2,uint param_3,ushort param_4) { Resource::Load(param_4,&_DDLT); return; } void FUN_00418c0d(undefined4 param_1,undefined4 param_2,undefined4 param_3,int param_4) { FUN_0044d73f(); FUN_00410408(); return; } uint FUN_00418ea1(void) { bool bVar1; short sVar2; int iVar3; byte *pbVar4; uint uVar5; ushort uVar6; Rect16 *q; short sVar7; short in_stack_00000004; Rect16 *in_stack_00000008; short in_stack_0000000c; short local_1e; ushort local_8; bVar1 = false; iVar3 = (int)in_stack_00000004; pbVar4 = (byte *)FUN_00414c47(); local_8 = 0; if (*(short *)&_Actors[iVar3].field_0x32 == 0) { local_1e = *(short *)(*(int *)(_Actors[iVar3].currentDynamics + *(short *)&_Actors[iVar3].field_0x18 * 4) + 2); } else { local_1e = *(short *)&_Actors[iVar3].field_0x32; } sVar2 = *(short *)&_Actors[iVar3].field_0x1c; if (((*pbVar4 & 1) == 0) && (2 < sVar2)) { sVar2 = sVar2 + -3; } q = *(Rect16 **)(pbVar4 + sVar2 * 4 + 0x1e); sVar2 = *(short *)(pbVar4 + sVar2 * 2 + 0x12); sVar7 = 0; while ((sVar7 < sVar2 && (!bVar1))) { uVar5 = Rect16::checkCollision(in_stack_00000008,q); if ((ushort)uVar5 != 0) { uVar6 = (ushort)uVar5 & 3; switch(uVar6) { case 1: if (in_stack_0000000c == 1) { *(short *)&_Actors[iVar3].field_0x4e = q->x; bVar1 = true; } else { *(short *)&_Actors[iVar3].field_0x4e = q->x; bVar1 = true; } break; case 2: uVar6 = 2; if (in_stack_0000000c == -1) { *(short *)&_Actors[iVar3].field_0x4e = q->x + q->w + -1; bVar1 = true; } else { *(short *)&_Actors[iVar3].field_0x4e = q->x; bVar1 = true; } break; case 3: if (local_1e < 0) { uVar6 = 2; *(short *)&_Actors[iVar3].field_0x4e = q->x + q->w + -1; bVar1 = true; } else { uVar6 = 1; *(short *)&_Actors[iVar3].field_0x4e = q->x; bVar1 = true; } } local_8 = local_8 | uVar6; } q = (Rect16 *)&q[1].y; sVar7 = sVar7 + 1; } *(ushort *)&_Actors[iVar3].field_0x4a = local_8; return CONCAT22((short)((uint)(_Actors + iVar3) >> 0x10),local_8); } ushort FUN_0041907c(void) { short sVar1; ushort uVar2; short sVar3; int iVar4; DlistNode *node; uint uVar5; short sVar6; short in_stack_00000004; Rect16 *in_stack_00000008; ushort *local_1c; Rect16 local_18; ushort local_10; ushort local_e; Room *local_c; Actor *local_8; iVar4 = (int)in_stack_00000004; local_8 = _Actors + iVar4; local_c = _Rooms[*(short *)&_Actors[iVar4].field_0x1a]; local_e = 0; sVar3 = *(short *)&_Actors[iVar4].field_0x1c; if (((local_c->flags & 1) == 0) && (2 < sVar3)) { sVar3 = sVar3 + -3; } sVar1 = local_c->field13_0xa4[sVar3]; sVar3 = local_c->field14_0xb0[sVar3]; node = DlistHead(local_c->partEntities); sVar6 = 0; do { if (local_c->partEntityCount <= sVar6) { LAB_00419140: local_1c = local_c->field15_0xbc + sVar3; sVar3 = 0; if (0 < sVar1) { do { uVar2 = *local_1c; if ((uVar2 & 0x8000) == 0) { if ((uVar2 & 0x4000) == 0) { Memcpy(&local_18, &local_c->structuralEntityGroups[uVar2 & 3][(int)(uVar2 & 0x3fff) >> 2]. activation_,10); } else { Memcpy(&local_18, &local_c->ladderEntityGroups[uVar2 & 3][(int)(uVar2 & 0x3fff) >> 2].collision_, 10); } uVar5 = Rect16::checkCollision(&local_18,in_stack_00000008); if (((short)uVar5 != 0) && (local_e = local_e | local_10, (local_10 & 0x780) != 0)) { *(short *)&local_8->field_0x38 = (short)((int)(uVar2 & 0x3fff) >> 2); } } local_1c = local_1c + 1; sVar3 = sVar3 + 1; } while (sVar3 < sVar1); } return local_e; } uVar5 = Rect16::checkCollision((Rect16 *)&node[1].prev,in_stack_00000008); if ((short)uVar5 != 0) { *(undefined2 *)&local_8->field_0x48 = 0x800; local_e = 0x800; *(short *)&local_8->field_0x40 = sVar6; goto LAB_00419140; } sVar6 = sVar6 + 1; node = DlistNext(node); } while( true ); } void FUN_00419223(void) { Room *pRVar1; short sVar2; ushort uVar3; short sVar4; undefined2 uVar5; int iVar6; DlistNode *node; uint uVar7; short *psVar8; Actor *q; short in_stack_00000004; ushort *local_20; Rect16 local_18; ushort local_10; OtherEntity *local_c; short local_8; short local_6; iVar6 = (int)in_stack_00000004; q = _Actors + iVar6; pRVar1 = _Rooms[*(short *)&_Actors[iVar6].field_0x1a]; sVar2 = *(short *)&_Actors[iVar6].field_0x1c; if (((pRVar1->flags & 1) == 0) && (2 < sVar2)) { sVar2 = sVar2 + -3; } local_6 = pRVar1->field13_0xa4[sVar2]; local_8 = pRVar1->field14_0xb0[sVar2]; *(undefined2 *)&_Actors[iVar6].field_0x48 = 0; node = DlistHead(pRVar1->partEntities); for (sVar2 = 0; sVar2 < pRVar1->partEntityCount; sVar2 = sVar2 + 1) { local_c = (OtherEntity *)&node[1].prev; uVar7 = Rect16::checkCollision((Rect16 *)local_c,(Rect16 *)q); if ((short)uVar7 != 0) { *(ushort *)&_Actors[iVar6].field_0x48 = *(ushort *)&_Actors[iVar6].field_0x48 | 0x800; *(short *)&_Actors[iVar6].field_0x40 = sVar2; break; } node = DlistNext(node); } if (*(short *)&_Actors[iVar6].field_0x30 != 0) { if (in_stack_00000004 == 0) { psVar8 = &DAT_00460b70; } else if (in_stack_00000004 == 1) { psVar8 = &DAT_00460b86; } else { psVar8 = &DAT_00460b9c; } for (; *psVar8 != -1; psVar8 = psVar8 + 1) { sVar2 = *psVar8; if ((((*(short *)&_Actors[sVar2].field_0x2a == 0) && (*(short *)&_Actors[sVar2].field_0x30 != 0)) && (*(short *)&_Actors[sVar2].field_0x1a == *(short *)&_Actors[iVar6].field_0x1a)) && ((*(short *)&_Actors[sVar2].field_0x1c == *(short *)&_Actors[iVar6].field_0x1c && (uVar7 = Rect16::checkCollision((Rect16 *)q,(Rect16 *)(_Actors + sVar2)), (short)uVar7 != 0)))) { uVar3 = 0x1000; if (-1 < *(short *)&_Actors[sVar2].field_0x4c) { uVar3 = 0x2000; } *(ushort *)&_Actors[iVar6].field_0x48 = *(ushort *)&_Actors[iVar6].field_0x48 | uVar3; *(undefined2 *)&_Actors[iVar6].field_0x6e = *(undefined2 *)&_Actors[sVar2].field_0x42; break; } } } local_20 = pRVar1->field15_0xbc + local_8; sVar2 = 0; if (0 < local_6) { do { uVar3 = *local_20; if ((uVar3 & 0x8000) == 0) { if ((uVar3 & 0x4000) == 0) { local_c = pRVar1->structuralEntityGroups[uVar3 & 3] + ((int)(uVar3 & 0x3fff) >> 2); Memcpy(&local_18,&local_c->activation_,10); } else { Memcpy(&local_18, &pRVar1->ladderEntityGroups[uVar3 & 3][(int)(uVar3 & 0x3fff) >> 2].collision_,10); } uVar7 = Rect16::checkCollision(&local_18,(Rect16 *)q); sVar4 = (short)uVar7; if (sVar4 != 0) { *(ushort *)&_Actors[iVar6].field_0x48 = *(ushort *)&_Actors[iVar6].field_0x48 | local_10; if ((local_10 & 0x4c) != 0) { *(short *)&_Actors[iVar6].field_0x36 = (short)((int)(uVar3 & 0x3fff) >> 2); return; } if ((local_10 & 0x30) != 0) { *(short *)&_Actors[iVar6].field_0x36 = (short)((int)(uVar3 & 0x3fff) >> 2); return; } if ((local_10 & 0x780) != 0) { *(short *)&_Actors[iVar6].field_0x38 = (short)((int)(uVar3 & 0x3fff) >> 2); return; } if ((local_10 & 1) != 0) { *(short *)&_Actors[iVar6].field_0x3a = (short)((int)(uVar3 & 0x3fff) >> 2); if ((sVar4 != 2) || (*(short *)&_Actors[iVar6].field_0x4c != -1)) { if (sVar4 != 1) { return; } if (*(short *)&_Actors[iVar6].field_0x4c != 1) { return; } } *(ushort *)&_Actors[iVar6].field_0x48 = *(ushort *)&_Actors[iVar6].field_0x48 & 1; return; } if ((local_10 & 2) != 0) { uVar5 = (undefined2)((int)(uVar3 & 0x3fff) >> 2); *(undefined2 *)&_Actors[iVar6].field_0x36 = uVar5; *(undefined2 *)&_Actors[iVar6].field_0x3a = uVar5; return; } } } local_20 = local_20 + 1; sVar2 = sVar2 + 1; } while (sVar2 < local_6); } return; } void FUN_004195bd(void) { short sVar1; sVar1 = 0; do { BigThing6Eh::processNodes_(*(undefined4 *)((int)&DAT_00466748 + sVar1 * 0xe)); if ((((&DAT_00466750)[sVar1 * 7] == 1) || ((&DAT_00466750)[sVar1 * 7] == 2)) || ((&DAT_00466750)[sVar1 * 7] == 4)) { FUN_004129d4(*(undefined4 *)((int)&DAT_00466748 + sVar1 * 0xe),0); FUN_00412dc8(*(undefined4 *)((int)&DAT_00466748 + sVar1 * 0xe)); } else { FUN_004129d4(*(undefined4 *)((int)&DAT_00466748 + sVar1 * 0xe),1); FUN_00412dc8(*(undefined4 *)((int)&DAT_00466748 + sVar1 * 0xe)); } sVar1 = sVar1 + 1; } while (sVar1 < 8); return; } void FUN_004196ef(void) { short sVar1; sVar1 = 0; do { _GameState->puzzles[sVar1].mode = (&DAT_00466750)[sVar1 * 7]; sVar1 = sVar1 + 1; } while (sVar1 < 8); return; } void FUN_00419723(void) { ushort uVar1; ushort uVar2; int iVar3; short sVar4; undefined2 uVar5; code *pcVar6; sVar4 = 0; do { if ((&DAT_00466750)[sVar4 * 7] != 2) { pcVar6 = FUN_00419873; uVar5 = 0xcd; uVar1 = FUN_00413794(*(undefined4 *)((int)&DAT_00466748 + sVar4 * 0xe),0); uVar2 = FUN_00413774(*(undefined4 *)((int)&DAT_00466748 + sVar4 * 0xe),0); iVar3 = PickapuzzleHitTest_((&DAT_00466744)[sVar4 * 7],(&DAT_00466746)[sVar4 * 7],uVar2,uVar1, uVar5,pcVar6); *(int *)((int)&DAT_0046674c + sVar4 * 0xe) = iVar3; *(int *)(*(int *)((int)&DAT_0046674c + sVar4 * 0xe) + 0x1e) = (int)sVar4; } sVar4 = sVar4 + 1; } while (sVar4 < 8); pcVar6 = FUN_00419873; uVar5 = 0xcd; uVar1 = FUN_00413794(DAT_004667b8,0); uVar2 = FUN_00413774(DAT_004667b8,0); DAT_004667bc = PickapuzzleHitTest_(DAT_004667b4,DAT_004667b6,uVar2,uVar1,uVar5,pcVar6); *(undefined4 *)(DAT_004667bc + 0x1e) = 8; pcVar6 = FUN_00419873; uVar5 = 0xcd; uVar1 = FUN_00413794(DAT_004667c6,0); uVar2 = FUN_00413774(DAT_004667c6,0); DAT_004667ca = PickapuzzleHitTest_(DAT_004667c2,DAT_004667c4,uVar2,uVar1,uVar5,pcVar6); *(undefined4 *)(DAT_004667ca + 0x1e) = 9; return; } void FUN_00419873(void) { uint uVar1; undefined4 uVar2; int in_stack_00000004; uVar1 = *(uint *)(in_stack_00000004 + 0x1e); if (uVar1 < 8) { uVar2 = FUN_00419e02(); if ((short)uVar2 != 0) { FUN_004195bd(); Puzzles::Customization::Draw(); return; } } else { if (uVar1 == 8) { FUN_00412dc8(DAT_004667b8); FUN_00412784(); DAT_00466734 = 5; DAT_00460ba8 = 0; return; } if (uVar1 != 9) { return; } FUN_00412dc8(DAT_004667c6); FUN_00412784(); FUN_004196ef(); DAT_00466734 = 5; DAT_00460ba8 = 0; } return; } void FUN_004198f8(void) { undefined4 uVar1; undefined2 uVar2; short sVar3; sVar3 = 0; do { (&DAT_00466744)[sVar3 * 7] = 0x11; (&DAT_00466746)[sVar3 * 7] = (&DAT_00460bac)[sVar3]; uVar1 = FUN_00412ac4(sVar3 + 0x4a39); *(undefined4 *)((int)&DAT_00466748 + sVar3 * 0xe) = uVar1; (&DAT_00466750)[sVar3 * 7] = _GameState->puzzles[sVar3].mode; FUN_0041395c(*(undefined4 *)((int)&DAT_00466748 + sVar3 * 0xe), CONCAT22((short)((uint)(sVar3 * 7) >> 0x10),(&DAT_00466744)[sVar3 * 7]), CONCAT22((short)((uint)(sVar3 * 7) >> 0x10),(&DAT_00466746)[sVar3 * 7]),0xcd); *(undefined2 *)(*(int *)((int)&DAT_00466748 + sVar3 * 0xe) + 0x4e) = 1; sVar3 = sVar3 + 1; } while (sVar3 < 8); DAT_004667b4 = 0x1a8; DAT_004667b6 = 0x152; DAT_004667b8 = FUN_00412ac4(0x4a42); uVar2 = (undefined2)((uint)DAT_004667b8 >> 0x10); FUN_0041395c(DAT_004667b8,CONCAT22(uVar2,DAT_004667b4),CONCAT22(uVar2,DAT_004667b6),0xcd); *(undefined2 *)(DAT_004667b8 + 0x4e) = 1; DAT_004667c2 = 0x1a8; DAT_004667c4 = 0x128; DAT_004667c6 = FUN_00412ac4(0x4a41); uVar2 = (undefined2)((uint)DAT_004667c6 >> 0x10); FUN_0041395c(DAT_004667c6,CONCAT22(uVar2,DAT_004667c2),CONCAT22(uVar2,DAT_004667c4),0xcd); *(undefined2 *)(DAT_004667c6 + 0x4e) = 1; return; } void FUN_00419a55(undefined4 param_1,undefined4 param_2,uint param_3) { int iVar1; uint uVar2; undefined4 extraout_EDX; undefined4 extraout_EDX_00; short sVar3; uint uVar4; sVar3 = 0; do { iVar1 = (int)sVar3; uVar4 = *(uint *)((int)&DAT_00466748 + iVar1 * 0xe); uVar2 = FUN_00412d0c(iVar1 * 7,iVar1,param_3,uVar4); param_3 = uVar4; sVar3 = sVar3 + 1; } while (sVar3 < 8); uVar4 = DAT_004667b8; uVar2 = FUN_00412d0c(uVar2,extraout_EDX,param_3,DAT_004667b8); FUN_00412d0c(uVar2,extraout_EDX_00,uVar4,DAT_004667c6); return; } void FUN_00419ac0(void) { Puzzles::Customization::Draw(); return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address undefined2 FUN_00419aca(void) { bool bVar1; ushort uVar2; ushort uVar3; short sVar4; uint uVar5; BOOL BVar6; undefined2 extraout_var; undefined2 extraout_var_00; undefined4 uVar7; int iVar8; uint extraout_ECX; uint extraout_ECX_00; uint extraout_ECX_01; uint uVar9; uint extraout_ECX_02; undefined4 extraout_EDX; undefined4 extraout_EDX_00; undefined4 extraout_EDX_01; undefined4 extraout_EDX_02; undefined4 extraout_EDX_03; undefined4 extraout_EDX_04; ushort *in_stack_00000004; tagMSG local_20; bVar1 = false; _DAT_004634c8 = 1; if (DAT_00469544 != (code *)0x0) { (*DAT_00469544)(); } FUN_00413838(); FUN_00416f4d(); _DAT_00466738 = FUN_0044ca04(); FUN_0043be66(); FUN_004102ee(); FUN_00446bc3(); FUN_00446e68(); DAT_0046673c = SetCurrentColor(0); FUN_0041029e(); DAT_00466730 = in_stack_00000004; DAT_00460ba8 = 0xffff; FUN_0043b9f5(); FUN_00412784(); DAT_00466740 = FUN_00412ac4(*DAT_00466730); uVar2 = FUN_00413774(DAT_00466740,0); DAT_00466730[3] = uVar2; uVar3 = FUN_00413794(DAT_00466740,0); DAT_00466730[4] = uVar3; _DAT_00466736 = uVar3 - 4; if (DAT_00466730[1] == 0xffff) { iVar8 = (int)(0x200U - (int)(short)uVar2) >> 1; if (iVar8 < 0) { iVar8 = iVar8 + (uint)((0x200U - (int)(short)uVar2 & 1) != 0); } DAT_00466730[1] = (ushort)iVar8; } uVar2 = DAT_00466730[1]; uVar9 = (uint)DAT_00466730 >> 0x10; if (DAT_00466730[2] == 0xffff) { iVar8 = (int)(0x180U - (int)(short)uVar3) >> 1; if (iVar8 < 0) { iVar8 = iVar8 + (uint)((0x180U - (int)(short)uVar3 & 1) != 0); } DAT_00466730[2] = (ushort)iVar8; } uVar3 = DAT_00466730[2]; uVar5 = (uint)DAT_00466730 >> 0x10; *(undefined2 *)(DAT_00466740 + 0x4e) = 1; FUN_0041395c(DAT_00466740,CONCAT22((short)uVar9,uVar2),CONCAT22((short)uVar5,uVar3),200); FUN_00412dc8(DAT_00466740); FUN_00413b24(); FUN_004198f8(); FUN_004195bd(); Puzzles::Customization::Draw(); DAT_00466734 = 3; _DAT_004634c8 = 1; _DAT_00460baa = 1; FUN_0043139c(); uVar5 = FUN_00419723(); uVar9 = extraout_ECX; uVar7 = extraout_EDX; while (!bVar1) { FUN_00412784(); BVar6 = PeekMessageA(&local_20,(HWND)0x0,0,0,1); uVar9 = extraout_ECX_00; uVar7 = extraout_EDX_00; if (BVar6 != 0) { TranslateMessage(&local_20); DispatchMessageA(&local_20); uVar9 = extraout_ECX_01; uVar7 = extraout_EDX_01; } iVar8 = (int)DAT_00466734; uVar5 = 0; if (iVar8 != 3) { if (iVar8 == 4) { uVar9 = *(uint *)(DAT_00466730 + 0xb); sVar4 = FUN_00413ed0(uVar9); uVar5 = CONCAT22(extraout_var,sVar4); uVar7 = extraout_EDX_02; if (sVar4 == 0x10) { uVar9 = *(uint *)(DAT_00466730 + 0xd); sVar4 = FUN_00413ed0(uVar9); uVar5 = CONCAT22(extraout_var_00,sVar4); uVar7 = extraout_EDX_03; if (sVar4 == 0x10) { bVar1 = true; } } } else { uVar5 = iVar8 - 5; if (uVar5 == 0) { bVar1 = true; } } } } DAT_00466740 = FUN_00412d0c(uVar5,uVar7,uVar9,DAT_00466740); FUN_0043ba1d(); SetCurrentColor(DAT_0046673c); uVar7 = FUN_0041030c(); FUN_00419a55(uVar7,extraout_EDX_04,extraout_ECX_02); FUN_00413868(); FUN_00416ffd(); FUN_0043bfee(0xff,0xffff,0); FUN_00446ed9(); DAT_00466730 = (ushort *)0x0; _DAT_004634c8 = 0; return DAT_00460ba8; } void FUN_00419d3d(void) { void *pvVar1; pvVar1 = PoolAlloc(0x3e); *(undefined2 *)((int)pvVar1 + 2) = 0xffff; *(undefined2 *)((int)pvVar1 + 4) = 0xffff; *(undefined2 *)((int)pvVar1 + 0xc) = 0; *(undefined2 *)((int)pvVar1 + 0x12) = 0; *(undefined2 *)((int)pvVar1 + 0x14) = 0; *(undefined4 *)((int)pvVar1 + 0x2a) = 0; *(undefined4 *)((int)pvVar1 + 0x22) = 0; *(undefined4 *)((int)pvVar1 + 0x26) = 0; *(undefined4 *)((int)pvVar1 + 0x1e) = 0; *(undefined2 *)((int)pvVar1 + 0x32) = 0; *(undefined2 *)((int)pvVar1 + 10) = 0; *(undefined4 *)((int)pvVar1 + 0x3a) = 0; *(undefined4 *)((int)pvVar1 + 0x36) = 0; return; } void FUN_00419d84(void) { undefined2 *object; uint uVar1; uint extraout_ECX; uint extraout_ECX_00; uint extraout_ECX_01; undefined4 extraout_EDX; undefined4 extraout_EDX_00; undefined4 extraout_EDX_01; object = (undefined2 *)FUN_00419d3d(); FUN_004310d0((uint)object,extraout_EDX,extraout_ECX,0); uVar1 = FUN_00431348(); FUN_00431024(uVar1,extraout_EDX_00,extraout_ECX_00,19000); *object = 19000; object[5] = 2; FUN_00419aca(); PoolFree(object); uVar1 = FUN_00431348(); FUN_004310d0(uVar1,extraout_EDX_01,extraout_ECX_01,1); FUN_0043139c(); FUN_00430de8(0,0,0x200,0x180); FUN_00430abc(0,0,0x200,0x180); FUN_0044c95d(); return; } undefined4 FUN_00419e02(void) { short sVar1; undefined4 uVar2; int iVar3; short sVar4; short in_stack_00000004; sVar4 = 0; sVar1 = 0; do { if ((((&DAT_00466750)[sVar1 * 7] == 0) || ((&DAT_00466750)[sVar1 * 7] == 3)) && (in_stack_00000004 != sVar1)) { sVar4 = sVar4 + 1; } sVar1 = sVar1 + 1; } while (sVar1 < 8); if (sVar4 == 0) { uVar2 = 0; } else { iVar3 = (int)(short)(&DAT_00466750)[in_stack_00000004 * 7]; if (iVar3 == 0) { iVar3 = in_stack_00000004 * 7; (&DAT_00466750)[in_stack_00000004 * 7] = 1; } else if (iVar3 == 1) { iVar3 = in_stack_00000004 * 7; (&DAT_00466750)[in_stack_00000004 * 7] = 0; } else if (iVar3 == 3) { iVar3 = in_stack_00000004 * 7; (&DAT_00466750)[in_stack_00000004 * 7] = 4; } else { iVar3 = iVar3 + -4; if (iVar3 == 0) { iVar3 = in_stack_00000004 * 7; (&DAT_00466750)[in_stack_00000004 * 7] = 3; } } uVar2 = CONCAT22((short)((uint)iVar3 >> 0x10),1); } return uVar2; } undefined4 __stdcall Game::dialogProc(HWND dialog,short msg,ushort wparam) { bool bVar1; short sVar2; short sVar3; uint uVar4; int iVar5; CHAR local_64 [80]; tagRECT rect; if (msg == WM_DESTROY) { if (*(short *)(DAT_00460be0 + 0x16) == 0) { return 0; } } else { if (msg == WM_WINDOWPOSCHANGED) { return 0; } if (msg == WM_INITDIALOG) { GetWindowRect(dialog,&rect); if (*(short *)(DAT_00460be0 + 10) == -1) { uVar4 = 0x200 - (int)(short)(((short)rect.right - (short)rect.left) + 1); iVar5 = (int)uVar4 >> 1; if (iVar5 < 0) { iVar5 = iVar5 + (uint)((uVar4 & 1) != 0); } sVar3 = (short)iVar5; } else { sVar3 = *(short *)(DAT_00460be0 + 10); } if (*(short *)(DAT_00460be0 + 0xc) == -1) { uVar4 = 0x180 - (int)(short)(((short)rect.bottom - (short)rect.top) + 1); iVar5 = (int)uVar4 >> 1; if (iVar5 < 0) { iVar5 = iVar5 + (uint)((uVar4 & 1) != 0); } sVar2 = (short)iVar5; } else { sVar2 = *(short *)(DAT_00460be0 + 0xc); } SetWindowPos(dialog,(HWND)0x0,(int)(short)(sVar3 + (short)mouseInputRect.left), (int)(short)(sVar2 + (short)mouseInputRect.top),0,0,5); if ((*DAT_00460be0 & 1) != 0) { bVar1 = false; sVar3 = 1; while (!bVar1) { GetDlgItemTextA(dialog,(int)sVar3,local_64,3); iVar5 = FUN_0044ff50(); if (iVar5 == 0) { SetDlgItemTextA(dialog,(int)sVar3,*(LPCSTR *)(DAT_00460be0 + 6)); bVar1 = true; } sVar3 = sVar3 + 1; } } return 1; } if (msg == WM_COMMAND) { if (wparam == 1) { EndDialog(dialog,1); return 1; } if (wparam == 2) { EndDialog(dialog,0); return 1; } if ((ushort)(wparam - 3) < 3) { EndDialog(dialog,(uint)wparam); return 1; } } } return 0; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_0041a08d(void) { undefined2 in_stack_00000004; DAT_00460be0 = &DAT_004667d0; if ((_DAT_004667d0 & 2) == 0) { DAT_004667da = 0xffff; } if ((_DAT_004667d0 & 4) == 0) { DAT_004667dc = 0xffff; } if ((_DAT_004667d0 & 8) == 0) { DAT_004667e6 = 0xffff; } Game::createDialog(in_stack_00000004); _DAT_004667d0 = 0; return; } void FUN_0041a0d0(void) { undefined4 in_stack_00000004; DAT_00460be0 = in_stack_00000004; return; } void FUN_0041a0dd(void) { return; } void FUN_0041a0e2(void) { return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_0041a0e7(void) { undefined4 in_stack_00000004; _DAT_004667d6 = in_stack_00000004; _DAT_004667d0 = _DAT_004667d0 | 1; return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_0041a0fc(void) { undefined2 in_stack_00000004; undefined2 in_stack_00000008; DAT_004667da = in_stack_00000004; DAT_004667dc = in_stack_00000008; _DAT_004667d0 = _DAT_004667d0 | 6; return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_0041a11d(void) { undefined2 in_stack_00000008; DAT_004667e6 = in_stack_00000008; _DAT_004667d0 = _DAT_004667d0 | 8; FUN_0041a08d(); return; } // WARNING: Heritage AFTER dead removal. Example location: EAX : 0x0041a37d // WARNING: Restarted to delay deadcode elimination for space: register void FUN_0041a32f(void) { short sVar1; int iVar2; undefined4 *puVar3; uint uVar4; int iVar5; int iVar6; short sVar7; int in_stack_00000004; sVar1 = *(short *)(in_stack_00000004 + 0x6e); FUN_00416815(); _Actors[0]._62_2_ = 0x96; iVar5 = *(int *)(in_stack_00000004 + 0x72); iVar2 = FUN_004352c9(); sVar7 = (short)iVar2; if (sVar7 != 0) { if (sVar7 == 0) { iVar6 = 0; } else { iVar2 = Random(); iVar5 = (int)sVar7; iVar6 = iVar2 % iVar5; } puVar3 = FUN_0042b476(iVar2,iVar6,iVar5); if (puVar3 != (undefined4 *)0x0) { FUN_0043d820(); iVar5 = FUN_0043d90c(); if ((short)iVar5 == 2) { FUN_0043d94c(); FUN_00434e8a(); FUN_00414c5a(); } uVar4 = FUN_0043d87c(); FUN_00416378(); iVar5 = FUN_00434e8a(); FUN_00434ddd(sVar1); FUN_00416396(); if ((short)iVar5 == 0) { if ((short)uVar4 != 0) { _GameState->missingCriticalSlots = _GameState->missingCriticalSlots + 1; } } } } return; } void FUN_0041a42a(undefined4 param_1,undefined4 param_2,uint param_3,short param_4) { ushort uVar1; short sVar2; uint uVar3; undefined4 uVar4; undefined4 extraout_EDX; if (DAT_00460bfc != 0xffff) { uVar3 = CONCAT22((short)((uint)param_1 >> 0x10),DAT_00460bfc) & 0xffff8000; uVar1 = DAT_00460bfc & 0x7fff; if (param_4 != 0) { param_3 = CONCAT22((short)(uVar3 >> 0x10),DAT_00460bfc) & 0xffff7fff; DAT_00460bfc = DAT_00460bfc & 0x7fff; FUN_00446b96(); uVar3 = 0; uVar1 = DAT_00460bfc; param_2 = extraout_EDX; } DAT_00460bfc = uVar1; if ((short)uVar3 != 0) { FUN_00446778(); return; } if (DAT_00460bfc != 0) { uVar4 = CONCAT22((short)(uVar3 >> 0x10),DAT_00460bfc); sVar2 = FUN_0044705a(uVar4,param_2,param_3,uVar4); if (sVar2 == 0) { FUN_00446367(DAT_00460bfc); DAT_00460bfc = 0xffff; } } } return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address uint FUN_0041a491(void) { short sVar1; bool bVar2; short *psVar3; short sVar4; uint uVar5; undefined2 uVar6; uint *puVar7; uint local_c; bVar2 = false; uVar5 = 0xffffffff; local_c = FUN_004341b9(); FUN_0041a42a(); if (_Actors[0]._62_2_ != 0) { _Actors[0]._62_2_ = _Actors[0]._62_2_ + -1; local_c = local_c & 0xcfffffff; } if (_DAT_00461a9e != 0) { local_c = local_c & 0xcfffffff; } if (_GameState->field28_0x1c == 0) { local_c = local_c & 0xffffffdf; } puVar7 = (uint *)(&PTR_DAT_004613d8)[(short)_Actors[0]._24_2_]; if (puVar7 != (uint *)0x0) { for (; (!bVar2 && (*puVar7 != 0xffffffff)); puVar7 = puVar7 + 3) { if ((*puVar7 == (~puVar7[1] & local_c)) || (*puVar7 == 0)) { bVar2 = true; sVar1 = (short)puVar7[2]; uVar6 = (undefined2)(uVar5 >> 0x10); uVar5 = CONCAT22(uVar6,sVar1); if ((sVar1 < 0xc) || (0xf < sVar1)) { if ((sVar1 == 0x10) || (sVar1 == 0x11)) { psVar3 = *(short **)(&DAT_004602e0 + (short)_Actors[0]._28_2_ * 4); for (sVar4 = 0; sVar4 < *(short *)(&DAT_004602d4 + (short)_Actors[0]._28_2_ * 2); sVar4 = sVar4 + 1) { if (((sVar1 == psVar3[4]) && ((short)_Actors[0]._0_2_ < (short)(*psVar3 + psVar3[2]))) && (*psVar3 < (short)(_Actors[0]._0_2_ + _Actors[0]._4_2_))) { uVar5 = CONCAT22(uVar6,psVar3[1]); _Actors[0]._56_2_ = psVar3[3]; break; } psVar3 = psVar3 + 5; } } } else { psVar3 = *(short **)(&DAT_004602bc + (short)_Actors[0]._28_2_ * 4); for (sVar4 = 0; sVar4 < *(short *)(&DAT_004602b0 + (short)_Actors[0]._28_2_ * 2); sVar4 = sVar4 + 1) { if (((sVar1 == psVar3[4]) && ((short)_Actors[0]._0_2_ < (short)(*psVar3 + psVar3[2]))) && (*psVar3 < (short)(_Actors[0]._0_2_ + _Actors[0]._4_2_))) { uVar5 = CONCAT22(uVar6,psVar3[1]); _Actors[0]._56_2_ = psVar3[3]; break; } psVar3 = psVar3 + 5; } } } } } return uVar5; } undefined2 FUN_0041a62a(void) { return 0xffff; } void FUN_0041a633(void) { undefined2 uVar1; ushort obverse; short *psVar2; short sVar3; short sVar4; obverse = RoomIsObverse(_Actors[0]._26_2_); DAT_00462550 = 0; ActorUpdateDynamics(0,obverse); uVar1 = _Actors[0]._44_2_; _Actors[0]._16_2_ = 0; _Actors[1]._26_2_ = _Actors[0]._26_2_; if (_Actors[0]._44_2_ != -1) { _Actors[0]._44_2_ = 0xffff; _Actors[0]._24_2_ = uVar1; FUN_0043426d(); _Actors[0]._34_2_ = 0; if (((uVar1 == 0x21) || (uVar1 == 0x2c)) || (uVar1 == 0x2d)) { FUN_00414eb6(); psVar2 = (short *)FUN_0041469e(); if (obverse == 0) { sVar4 = 0x10; sVar3 = 0x1c; } else { sVar4 = 5; sVar3 = 0xb; } _Actors[0]._0_2_ = sVar4 + *psVar2; _Actors[0]._2_2_ = sVar3 + psVar2[1]; _Actors[0]._20_2_ = _Actors[0]._0_2_; _Actors[0]._22_2_ = _Actors[0]._2_2_; } if (uVar1 == 0x35) { _Actors[0]._28_2_ = 5; } } return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_0041a70e(void) { int iVar1; undefined2 unaff_SI; ushort unaff_DI; iVar1 = FUN_00414eb6(); FUN_0041a42a(); if (iVar1 == 0) { unaff_DI = _GameState->field29_0x1e; unaff_SI = 0x35; } else { _DAT_00461ab2 = 0; switch(*(short *)(iVar1 + 0x10)) { case 6: unaff_DI = *(ushort *)(iVar1 + 0x12); unaff_SI = 0x29; if ((short)_Actors[0]._76_2_ < 1) { unaff_SI = 0x28; } break; case 7: *(undefined2 *)&_GameState->field_0x2a = 1; unaff_SI = 0x21; _DAT_00461ab2 = 1; unaff_DI = _RoomIndex; break; case 8: _GameState->field29_0x1e = _Actors[0]._26_2_; unaff_DI = 0; unaff_SI = 0; break; case 9: *(undefined2 *)&_GameState->field_0x2a = 1; unaff_DI = *(ushort *)(iVar1 + 0x12) & 0xf; unaff_SI = 0x21; break; case 10: case 0xb: unaff_DI = *(ushort *)(iVar1 + 0x12) & 0xf; unaff_SI = 0x2d; if (*(short *)(iVar1 + 0x10) != 10) { unaff_SI = 0x2c; } } } _Actors[0]._32_2_ = unaff_SI; _Actors[0]._60_2_ = _Actors[0]._26_2_; _Actors[0]._26_2_ = unaff_DI; _Actors[0]._44_2_ = unaff_SI; return; } void __stdcall FUN_0041a823(void) { short *local_14; short *local_10; short *local_c; short *local_8; if (DAT_00460bec == (short *)0x0) { DAT_00460bec = GetEseqResource_(0x1194,0x466904,&local_8,&local_c); _Actors[0]._122_4_ = local_8; _Actors[0]._130_4_ = local_c; } if (DAT_00460bf0 == (short *)0x0) { DAT_00460bf0 = GetEseqResource_(0x1195,0x4667f0,&local_10,&local_14); _Actors[0]._118_4_ = local_10; _Actors[0]._126_4_ = local_14; } if (DAT_00460bf4 == (short *)0x0) { DAT_00460bf4 = GetEseqResource_(0x1196,0x466a2c,&local_8,&local_c); _Actors[1]._122_4_ = local_8; _Actors[1]._130_4_ = local_c; } if (DAT_00460bf8 == (short *)0x0) { DAT_00460bf8 = GetEseqResource_(0x1197,0x466a18,&local_10,&local_14); _Actors[1]._118_4_ = local_10; _Actors[1]._126_4_ = local_14; } return; } void FUN_0041a8fe(void) { short sVar1; sVar1 = 0; do { if ((&DAT_00460bec)[sVar1] != 0) { FUN_0044073c(); (&DAT_00460bec)[sVar1] = 0; } sVar1 = sVar1 + 1; } while (sVar1 < 4); return; } void FUN_0041a92e(void) { ushort obverse; obverse = RoomIsObverse(_Actors[1]._26_2_); ActorUpdateDynamics(1,obverse); _Actors[1]._16_2_ = 0; return; } void FUN_0041a954(void) { _Actors[0]._66_2_ = 0; _Actors[0]._42_2_ = 0; _Actors[0]._16_2_ = 0; _Actors[0]._26_2_ = 0; _Actors[0]._18_2_ = 2; _Actors[0]._102_4_ = &LAB_0041a140; _Actors[0]._46_2_ = 1; _Actors[0]._48_2_ = 1; _Actors[0]._114_4_ = DlistNew(); _Actors[0].obverseDynamics = &DAT_00466904; _Actors[0].reverseDynamics = &DAT_004667f0; _Actors[0]._136_4_ = FUN_0041a70e; _Actors[0]._32_2_ = 0xffff; _Actors[0]._14_2_ = 0xffff; _Actors[0]._44_2_ = 0; _Actors[0]._140_4_ = FUN_0041a633; _Actors[0]._50_2_ = 0; _Actors[0]._144_4_ = &PTR_DAT_004613d8; _Actors[0]._98_4_ = FUN_0041a491; _Actors[0]._154_2_ = 0x1194; _Actors[0]._106_4_ = FUN_0041a32f; ActorUpdateDynamics(0,0); _Actors[1]._42_2_ = 1; _Actors[1]._66_2_ = 1; _Actors[1]._16_2_ = 0; _Actors[1]._18_2_ = 2; _Actors[1]._14_2_ = 0xffff; _Actors[1]._154_2_ = 0x1196; _Actors[1]._32_2_ = 0xffff; _Actors[1]._44_2_ = 0xffff; _Actors[1]._102_4_ = 0; _Actors[1]._46_2_ = 1; _Actors[1]._48_2_ = 1; _Actors[1]._114_4_ = 0; _Actors[1].obverseDynamics = &DAT_00466a2c; _Actors[1].reverseDynamics = &DAT_00466a18; _Actors[1]._136_4_ = 0; _Actors[1]._140_4_ = FUN_0041a92e; _Actors[1]._50_2_ = 0; _Actors[1]._144_4_ = &DAT_004613c8; _Actors[1]._98_4_ = FUN_0041a62a; _Actors[1]._106_4_ = 0; return; } void FUN_0041aab9(void) { ushort obverse; short sVar1; short in_stack_00000008; if (_GameState->field28_0x1c != 0) { _Actors[1]._42_2_ = 0; _Actors[1]._0_2_ = _Actors[0]._20_2_ + in_stack_00000008; _Actors[1]._22_2_ = _Actors[0]._22_2_; _Actors[1]._28_2_ = _Actors[0]._28_2_; _Actors[1]._32_2_ = 0xffff; _Actors[1]._44_2_ = 0xffff; _Actors[1]._26_2_ = _Actors[0]._26_2_; _Actors[1]._34_2_ = 0; _Actors[1]._16_2_ = 0; _Actors[1]._72_2_ = 0; _Actors[1]._50_2_ = 0; _Actors[1]._30_2_ = 0xffff; _Actors[1]._52_2_ = 0xffff; _Actors[1]._48_2_ = 1; _Actors[1]._20_2_ = _Actors[1]._0_2_; obverse = RoomIsObverse(_Actors[0]._26_2_); ActorUpdateDynamics(1,obverse); FUN_0043426d(); _GameState->field28_0x1c = _GameState->field28_0x1c + -1; DAT_004605b6 = DAT_004605b6 | 8; if ((_GameState->field28_0x1c == 0) && (_ActualBananaPartsCount == 0)) { for (sVar1 = 0; sVar1 < _InitialBananaPartsCount; sVar1 = sVar1 + 1) { FUN_00414c5a(); } _ActualBananaPartsCount = _InitialBananaPartsCount; } } return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_0041abd6(void) { _DAT_00460bea = 0; _Actors[0]._28_2_ = 0; _Actors[0]._62_2_ = 0; _Actors[0]._60_2_ = 0xffff; _Actors[0]._26_2_ = 0; _Actors[1]._42_2_ = 1; _Actors[0]._112_2_ = 0; _Actors[0]._72_2_ = 0; DlistInit((Dlist *)_Actors[0]._114_4_); return; } void FUN_0041ac6b(void) { HDC hdc; int c; short in_stack_00000004; short in_stack_00000008; char *in_stack_0000000c; char local_1f8 [500]; Sprintf_(local_1f8,in_stack_0000000c,&stack0x00000010); hdc = GetDC(Game::window); c = FUN_0044ffac(); TextOutA(hdc,(int)in_stack_00000004,(int)in_stack_00000008,local_1f8,c); ReleaseDC(Game::window,hdc); return; } void __stdcall FUN_0041acce(char *param_1,undefined1 param_2) { char *lpCaption; char local_1f8 [500]; Sprintf_(local_1f8,param_1,¶m_2); lpCaption = GetWinapiStringAlloc(0x4e87); MessageBoxA((HWND)0x0,local_1f8,lpCaption,0x30); TurboFree_(lpCaption); DoSomethingThenExit_(1); return; } // WARNING: Heritage AFTER dead removal. Example location: EAX : 0x0041ae49 // WARNING: Globals starting with '_' overlap smaller symbols at the same address // WARNING: Restarted to delay deadcode elimination for space: register void Puzzles::SetParametersForElectricity_(void) { uint uVar1; undefined4 uVar2; int iVar3; uint extraout_ECX; uint extraout_ECX_00; undefined4 extraout_EDX; undefined4 extraout_EDX_00; undefined4 extraout_EDX_01; short sVar4; int iVar5; undefined1 *puVar6; _DAT_00466a46 = 0; DAT_00469742 = 0x1f73; DAT_00469744 = 0x4a54; DAT_00469746 = 0x1f9a; DAT_00469748 = 0x1f9b; DAT_0046974a = 0x4a74; DAT_0046974c = 0x1f5c; DAT_0046974e = 0x4a77; DAT_00469750 = 0xffff; FUN_0043ff91(&DAT_00469742); puVar6 = &LAB_00421cea; uVar1 = FUN_0044c950(); uVar1 = FUN_00440113(uVar1,extraout_EDX,(uint)puVar6); FUN_00431024(uVar1,extraout_EDX_00,extraout_ECX,10000); DAT_004673dc = FUN_00412ac4(10000); uVar1 = FUN_00413cf4(); FUN_00412d0c(uVar1,extraout_EDX_01,extraout_ECX_00,DAT_004673dc); SetParametersForElectricity(currentPuzzle); FUN_0043fef9(DAT_00461536); FUN_0041b115(); FUN_0041f6da(); FUN_004212fe(); FUN_0043fef9(DAT_00461536); FUN_0041029e(); DAT_004673f8 = FUN_00412ac4(0x3aa1); FUN_0041395c(DAT_004673f8,0x18e,0x143,10); iVar5 = 0; do { iVar3 = iVar5 + 0x271d; uVar2 = FUN_00412ac4((ushort)iVar3); sVar4 = (short)iVar5; (&DAT_004673fc)[sVar4] = uVar2; iVar3 = FUN_0043b58e(uVar2,(int)sVar4,iVar3); (&DAT_00467414)[sVar4] = iVar3; *(undefined2 *)((&DAT_00467414)[sVar4] + 0x12) = 0; iVar5 = iVar5 + 1; } while ((short)iVar5 < 6); iVar5 = 0; do { iVar3 = iVar5 + 0x2713; uVar2 = FUN_00412ac4((ushort)iVar3); sVar4 = (short)iVar5; (&DAT_0046742c)[sVar4] = uVar2; iVar3 = FUN_0043b58e(uVar2,(int)sVar4,iVar3); (&DAT_00467444)[sVar4] = iVar3; iVar5 = iVar5 + 1; } while ((short)iVar5 < 4); DAT_0046743c = FUN_00412ac4(0x2717); DAT_00467454 = FUN_0043b58e(); DAT_00467440 = FUN_00412ac4(0x271a); DAT_00467458 = FUN_0043b58e(); DAT_004673f4 = FUN_00412ac4(0x3a9d); FUN_0041395c(DAT_004673f4,0x2a,0x19,1); FUN_00421dfc(); DAT_00469544 = &LAB_00421f28; FUN_0043139c(); return; } // WARNING: Heritage AFTER dead removal. Example location: EAX : 0x0041af83 // WARNING: Restarted to delay deadcode elimination for space: register void FUN_0041af2d(void) { uint uVar1; undefined4 uVar2; uint extraout_ECX; uint extraout_ECX_00; undefined4 extraout_EDX; undefined4 extraout_EDX_00; undefined4 extraout_EDX_01; undefined4 extraout_EDX_02; undefined4 extraout_EDX_03; short sVar3; uint uVar4; DAT_00469544 = 0; FUN_0043ffba(); uVar4 = 0; uVar1 = FUN_0044c950(); FUN_004400eb(uVar1,extraout_EDX,uVar4); DAT_0046976a = DAT_00461536; sVar3 = 0; uVar1 = extraout_ECX; uVar2 = extraout_EDX_00; do { uVar4 = (&DAT_004673fc)[sVar3]; uVar2 = FUN_00412d0c((int)sVar3,uVar2,uVar1,uVar4); (&DAT_004673fc)[sVar3] = uVar2; uVar1 = (&DAT_00467414)[sVar3]; FUN_0043b69e((int)sVar3,(int)sVar3,uVar4); uVar4 = (&DAT_0046742c)[sVar3]; uVar2 = FUN_00412d0c((int)sVar3,extraout_EDX_01,uVar1,uVar4); (&DAT_0046742c)[sVar3] = uVar2; uVar1 = (&DAT_00467444)[sVar3]; FUN_0043b69e((int)sVar3,(int)sVar3,uVar4); sVar3 = sVar3 + 1; uVar2 = extraout_EDX_02; } while (sVar3 < 6); PoolFree(DAT_00466a40); FUN_0043b9d2(); uVar2 = FUN_00416f98(); FUN_0041f782(uVar2,extraout_EDX_03,extraout_ECX_00); FUN_004102d7(); FUN_00440695(DAT_0046977e,&_TEXT1); FUN_00431348(); if (DAT_0046976c != 0) { FUN_00446367(DAT_0046976c); DAT_0046976c = 0; } return; } void FUN_0041b115(void) { bool bVar1; bool bVar2; ushort uVar3; ushort uVar4; int iVar5; short sVar6; undefined2 uVar7; code *pcVar8; FUN_00416f98(); DAT_0046710c = PickapuzzleHitTest_(10,0x80,0x7c,0xb5,1,FUN_0041b393); *(undefined4 *)(DAT_0046710c + 0x1e) = 1000; DAT_00467110 = PickapuzzleHitTest_(0x9a,0x24,0x15a,0x104,1,FUN_0041b393); *(undefined4 *)(DAT_00467110 + 0x1e) = 0x3e9; PickapuzzleHitTest_(0x18e,0x144,0x1f5,0x165,5,(ClickHandler *)&LAB_0041b0f0); PickapuzzleHitTest_(0x29,0x1b,0x3a,0x1e,5,FUN_00421bc5); sVar6 = 0; do { if (0 < (short)(&DAT_00466a54)[sVar6]) { pcVar8 = FUN_0041b393; uVar7 = 5; uVar3 = FUN_00413794((&DAT_004673e0)[sVar6],0); uVar4 = FUN_00413774((&DAT_004673e0)[sVar6],0); iVar5 = PickapuzzleHitTest_((&DAT_004614f8)[sVar6 * 6],(&DAT_004614fa)[sVar6 * 6],uVar4,uVar3, uVar7,pcVar8); (&DAT_004670cc)[sVar6] = iVar5; *(int *)((&DAT_004670cc)[sVar6] + 0x1e) = (int)sVar6; } sVar6 = sVar6 + 1; } while (sVar6 < 5); sVar6 = 0; do { if (((&DAT_00466f90)[sVar6 * 10] == 1) && ((&DAT_00466f94)[sVar6 * 10] == 0)) { bVar1 = true; } else { bVar1 = false; } if (((&DAT_00466f8a)[sVar6 * 10] == 2) && ((&DAT_00466f90)[sVar6 * 10] == 1)) { bVar2 = true; } else { bVar2 = false; } if (bVar1 || bVar2) { pcVar8 = FUN_0041b393; uVar7 = 5; uVar3 = FUN_00413794((&DAT_00466f96)[sVar6 * 5],0); uVar4 = FUN_00413774((&DAT_00466f96)[sVar6 * 5],0); iVar5 = PickapuzzleHitTest_((&DAT_00466f8c)[sVar6 * 10],(&DAT_00466f8e)[sVar6 * 10],uVar4, uVar3,uVar7,pcVar8); (&DAT_00466f9a)[sVar6 * 5] = iVar5; *(int *)((&DAT_00466f9a)[sVar6 * 5] + 0x1e) = sVar6 + 2000; } sVar6 = sVar6 + 1; } while (sVar6 < 0x10); if (DAT_00461536 != 0) { PickapuzzleHitTest_(10,300,0x14e,0x50,0x19,FUN_0041b33a); } return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_0041b33a(void) { if (DAT_0046153c == 5) { _DAT_00466a5c = _DAT_00466a5c + 1; FUN_00413f88(); (&DAT_00466abc)[DAT_00466a60 * 0x27 + DAT_00466a62 * 0xd] = 99; FUN_00421f1f(); } _DAT_004697b2 = 1; DAT_0046153c = 4; return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address uint FUN_0041b393(void) { short sVar1; int iVar2; uint uVar3; undefined4 uVar4; undefined2 extraout_var; uint uVar5; undefined2 extraout_var_00; undefined2 extraout_var_01; int in_stack_00000004; iVar2 = (int)DAT_0046153c; if (iVar2 == 0) { uVar5 = *(uint *)(in_stack_00000004 + 0x1e); if (uVar5 < 5) { uVar5 = FUN_00420a36(); return uVar5; } if (uVar5 == 0x3e9) { FUN_0042035e(); sVar1 = FUN_0042197d(); uVar3 = CONCAT22(extraout_var_01,sVar1); if ((sVar1 != 0) && (DAT_00461536 == 0)) { FUN_0043fdaa(); FUN_0043fd88(); FUN_0041b115(); DAT_0046153c = 0; uVar5 = FUN_00421f1f(); return uVar5; } } else { uVar3 = uVar5 - 0x7e0; if (uVar5 - 2000 < 0x10) { if ((*(short *)(*(int *)(in_stack_00000004 + 0x1e) * 0x14 + 0x45d34a) != 2) || (uVar4 = FUN_004207dd(), (short)uVar4 == 0)) { uVar5 = FUN_004208c9(); return uVar5; } sVar1 = FUN_0042197d(); if ((sVar1 != 0) && (DAT_00461536 == 0)) { DAT_00461536 = 1; FUN_0043fdaa(); FUN_0043fd88(); FUN_0041b115(); uVar5 = FUN_00421f1f(); return uVar5; } if (*(short *)(*(int *)(in_stack_00000004 + 0x1e) * 0x14 + 0x45d352) == 0) { uVar5 = FUN_004465a5(0x1f9b,5,0); return uVar5; } uVar5 = FUN_004465a5(0x1f9a,5,0); return uVar5; } } } else if (iVar2 == 2) { uVar5 = *(uint *)(in_stack_00000004 + 0x1e); if ((uVar5 < 5) || (uVar5 == 1000)) { FUN_00421f12(); DAT_0046153c = 0; sVar1 = (&DAT_00466a54)[DAT_00466a64]; (&DAT_00466a54)[DAT_00466a64] = (&DAT_00466a54)[DAT_00466a64] + 1; if (sVar1 == 0) { FUN_00412e70(); } FUN_0041b115(); FUN_0041f6da(); DAT_00466a64 = 99; uVar5 = FUN_00421f1f(); return uVar5; } if ((uVar5 == 0x3e9) || (uVar3 = uVar5 - 0x7e0, uVar5 - 2000 < 0x10)) { if (DAT_00466a64 == 4) { uVar5 = FUN_00421aef(); return uVar5; } if (DAT_00466a64 != 99) { uVar5 = FUN_00420ab7(); return uVar5; } FUN_0042035e(); sVar1 = FUN_0042197d(); uVar3 = CONCAT22(extraout_var_00,sVar1); if ((sVar1 != 0) && (DAT_00461536 == 0)) { FUN_0043fdaa(); FUN_0043fd88(); FUN_0041b115(); DAT_0046153c = 0; uVar5 = FUN_00421f1f(); DAT_00461536 = 1; return uVar5; } } } else { uVar3 = iVar2 - 5; if (uVar3 == 0) { if ((*(int *)(in_stack_00000004 + 0x1e) == 0x3e9) || (*(int *)(in_stack_00000004 + 0x1e) - 2000U < 0x10)) { FUN_00413f88(); uVar4 = FUN_0042114d(); if ((short)uVar4 == 0) { FUN_00421f12(); (&DAT_00466abc)[DAT_00466a60 * 0x27 + DAT_00466a62 * 0xd] = 99; _DAT_00466a5c = _DAT_00466a5c + 1; DAT_0046153c = 0; FUN_004212fe(); FUN_0041f6da(); FUN_0041b115(); FUN_004212fe(); FUN_00421f1f(); DAT_00466a64 = 99; } else if ((DAT_00466a66 == DAT_00466a60) && (DAT_00466a68 == DAT_00466a62)) { (&DAT_00466abc)[DAT_00466a60 * 0x27 + DAT_00466a62 * 0xd] = 99; FUN_004212fe(); FUN_0041b115(); FUN_0041f6da(); } else if ((&DAT_00466abc)[DAT_00466a60 * 0x27 + DAT_00466a62 * 0xd] == 99) { FUN_00421f12(); FUN_004212fe(); (&DAT_00466abc)[DAT_00466a60 * 0x27 + DAT_00466a62 * 0xd] = DAT_00466a66; (&DAT_00466abe)[DAT_00466a60 * 0x27 + DAT_00466a62 * 0xd] = DAT_00466a68; (&DAT_00466ac0)[DAT_00466a60 * 0x27 + DAT_00466a62 * 0xd] = 0; (&DAT_00466abc)[DAT_00466a66 * 0x27 + DAT_00466a68 * 0xd] = DAT_00466a60; (&DAT_00466abe)[DAT_00466a66 * 0x27 + DAT_00466a68 * 0xd] = DAT_00466a62; (&DAT_00466ac0)[DAT_00466a66 * 0x27 + DAT_00466a68 * 0xd] = 1; DAT_0046153c = 0; FUN_0041b115(); DAT_00466a64 = 99; FUN_004465a5(0x4a74,5,0); FUN_0041f6da(); FUN_004212fe(); FUN_00421f1f(); } else { FUN_004212fe(); } } sVar1 = FUN_0042197d(); uVar3 = CONCAT22(extraout_var,sVar1); if ((sVar1 != 0) && (DAT_00461536 == 0)) { DAT_0046153c = 0; DAT_00461536 = 1; FUN_0043fdaa(); FUN_00421f1f(); FUN_0043fd88(); uVar5 = FUN_0041b115(); return uVar5; } } } return uVar3; } void FUN_0041b86a(void) { short in_stack_00000004; short in_stack_00000008; short in_stack_0000000c; short in_stack_00000010; if (in_stack_00000004 < in_stack_0000000c) { Is256Color(); FUN_0041ba44(); Is256Color(); FUN_0041ba44(); Is256Color(); FUN_0041ba44(); } else if (in_stack_0000000c < in_stack_00000004) { Is256Color(); FUN_0041ba44(); Is256Color(); FUN_0041ba44(); Is256Color(); FUN_0041ba44(); } if (in_stack_00000008 < in_stack_00000010) { Is256Color(); FUN_0041bac3(); Is256Color(); FUN_0041bac3(); Is256Color(); FUN_0041bac3(); } else if (in_stack_00000010 < in_stack_00000008) { Is256Color(); FUN_0041bac3(); Is256Color(); FUN_0041bac3(); Is256Color(); FUN_0041bac3(); } return; } void FUN_0041ba44(void) { short sVar1; short sVar2; short in_stack_00000004; undefined2 in_stack_00000008; short in_stack_0000000c; sVar1 = in_stack_00000004; if (in_stack_0000000c < in_stack_00000004) { sVar1 = in_stack_0000000c; in_stack_0000000c = in_stack_00000004; } sVar2 = 0; if (0 < (short)(in_stack_0000000c - sVar1)) { do { FUN_00431588(); sVar2 = sVar2 + 1; } while (sVar2 < (short)(in_stack_0000000c - sVar1)); } FUN_00430abc(sVar1,in_stack_00000008,(in_stack_0000000c - sVar1) + 1,1); return; } void FUN_0041bac3(void) { short sVar1; undefined2 in_stack_00000004; short in_stack_00000008; short in_stack_0000000c; short local_a; short local_8; local_8 = in_stack_00000008; local_a = in_stack_0000000c; if (in_stack_0000000c < in_stack_00000008) { local_a = local_8; local_8 = in_stack_0000000c; } if (in_stack_00000008 < in_stack_0000000c) { in_stack_0000000c = in_stack_0000000c - in_stack_00000008; } else { in_stack_0000000c = in_stack_00000008 - in_stack_0000000c; } sVar1 = 0; if (0 < in_stack_0000000c) { do { FUN_00431588(); sVar1 = sVar1 + 1; } while (sVar1 < in_stack_0000000c); } FUN_00430abc(in_stack_00000004,local_8,1,(local_a - local_8) + 1); return; } void FUN_0041bb49(void) { short in_stack_00000004; short in_stack_00000008; if (DAT_00461538 < in_stack_00000004) { FUN_00430de8(DAT_00461538,DAT_0046153a + -1,(in_stack_00000004 - DAT_00461538) + 1,3); FUN_00430abc(DAT_00461538,DAT_0046153a + -1,(in_stack_00000004 - DAT_00461538) + 1,3); } else if (in_stack_00000004 < DAT_00461538) { FUN_00430de8(in_stack_00000004,DAT_0046153a + -1,(DAT_00461538 - in_stack_00000004) + 1,3); FUN_00430abc(in_stack_00000004,DAT_0046153a + -1,(DAT_00461538 - in_stack_00000004) + 1,3); } if (DAT_0046153a < in_stack_00000008) { FUN_00430de8(in_stack_00000004 + -1,DAT_0046153a,3,(in_stack_00000008 - DAT_0046153a) + 1); FUN_00430abc(in_stack_00000004 + -1,DAT_0046153a,3,(in_stack_00000008 - DAT_0046153a) + 1); } else if (in_stack_00000008 < DAT_0046153a) { FUN_00430de8(in_stack_00000004 + -1,in_stack_00000008,3,(DAT_0046153a - in_stack_00000008) + 1); FUN_00430abc(in_stack_00000004 + -1,in_stack_00000008,3,(DAT_0046153a - in_stack_00000008) + 1); } return; } void FUN_0041bc51(void) { short in_stack_00000004; short in_stack_00000008; if (DAT_00461538 < in_stack_00000004) { Is256Color(); FUN_0041ba44(); Is256Color(); FUN_0041ba44(); Is256Color(); FUN_0041ba44(); } else if (in_stack_00000004 < DAT_00461538) { Is256Color(); FUN_0041ba44(); Is256Color(); FUN_0041ba44(); Is256Color(); FUN_0041ba44(); } if (DAT_0046153a < in_stack_00000008) { Is256Color(); FUN_0041bac3(); Is256Color(); FUN_0041bac3(); Is256Color(); FUN_0041bac3(); } else if (in_stack_00000008 < DAT_0046153a) { Is256Color(); FUN_0041bac3(); Is256Color(); FUN_0041bac3(); Is256Color(); FUN_0041bac3(); } return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void __cdecl Puzzles::SetParametersForElectricity(PuzzleNumberOneBased puzzle) { undefined4 uVar1; short sVar2; DAT_00461536 = 0; DAT_0046153c = 0; Memset(&DAT_00466aaa,0xff,0x4e0); Memset(&DAT_00466f8a,0xff,0x140); if (40 < puzzle) { puzzle = 1; } sVar2 = 0; do { (&DAT_00466a54)[sVar2] = 0; uVar1 = FUN_00412ac4(sVar2 + 0x2713); (&DAT_004673e0)[sVar2] = uVar1; sVar2 = sVar2 + 1; } while (sVar2 < 5); sVar2 = 0; do { (&DAT_00466f90)[sVar2 * 10] = 0; (&DAT_00466f96)[sVar2 * 5] = 0; (&DAT_00466f92)[sVar2 * 10] = 0; (&DAT_00466f94)[sVar2 * 10] = 0; sVar2 = sVar2 + 1; } while (sVar2 < 0x10); sVar2 = 0; do { (&DAT_004672ae)[sVar2 * 3] = 1; uVar1 = FUN_00412ac4(0x271b); *(undefined4 *)((int)&DAT_004672b0 + sVar2 * 6) = uVar1; sVar2 = sVar2 + 1; } while (sVar2 < 0x32); switch(puzzle) { case 1: DAT_0046977e = 10000; DAT_00469780 = 10000; DAT_00469778 = 1; _DAT_0046977a = 6; _DAT_0046977c = 1; DAT_0046978a = 0x2726; DAT_0046978c = 0x2727; DAT_0046978e = 0x2728; DAT_00469790 = 0x2729; DAT_00469792 = 0x272a; DAT_00469794 = 0x272b; _DAT_00469796 = 0xffff; DAT_004697a8 = 0x2724; DAT_00466f8a = 1; DAT_00466f90 = 1; DAT_00466f8c = 0x15b; DAT_00466f8e = 0x37; DAT_00466f94 = 1; DAT_00466f96 = FUN_00412ac4(0x2714); FUN_00421490(0,1); DAT_00466abc = 1; DAT_00466abe = 0; DAT_00466ac0 = 0; DAT_00466f9e = 0; DAT_00466fa4 = 1; DAT_00466fa0 = 0xfe; DAT_00466fa2 = 0x92; DAT_00466fa8 = 1; DAT_00466faa = FUN_00412ac4(0x2713); FUN_00421490(1,0); _DAT_00466b0a = 0; _DAT_00466b0c = 0; _DAT_00466b0e = 1; _DAT_00466a5c = 1; break; case 2: _DAT_0046977a = 6; _DAT_0046977c = 1; DAT_0046978a = 0x275b; DAT_0046978c = 0x275c; DAT_0046978e = 0x275d; DAT_00469790 = 0x275e; DAT_00469792 = 0x275f; DAT_00469794 = 0x2760; _DAT_00469796 = 0xffff; DAT_004697a8 = 0x2736; DAT_0046977e = 0x2720; DAT_00469780 = 0x271f; DAT_00469778 = 1; DAT_00466f8a = 1; DAT_00466f90 = 1; DAT_00466f8c = 0x15b; DAT_00466f8e = 0x37; DAT_00466f94 = 1; DAT_00466f96 = FUN_00412ac4(0x2714); FUN_00421490(0,1); DAT_00466ad6 = 1; _DAT_00466ad8 = 1; _DAT_00466ada = 0; FUN_00421490(1,0); DAT_00466f9e = 0; DAT_00466fa4 = 1; DAT_00466fa0 = 0xfe; DAT_00466fa2 = 0x92; DAT_00466fa8 = 1; DAT_00466faa = FUN_00412ac4(0x2713); _DAT_00466b24 = 0; _DAT_00466b26 = 1; _DAT_00466b28 = 1; _DAT_00466a5c = 1; break; case 3: _DAT_0046977a = 6; _DAT_0046977c = 1; DAT_0046978a = 0x275b; DAT_0046978c = 0x275c; DAT_0046978e = 0x275d; DAT_00469790 = 0x275e; DAT_00469792 = 0x275f; DAT_00469794 = 0x2760; _DAT_00469796 = 0xffff; DAT_004697a8 = 0x2736; DAT_0046977e = 0x2720; DAT_00469778 = 1; DAT_00469780 = 0x271f; DAT_00466f8a = 1; DAT_00466f90 = 1; DAT_00466f8c = 0xca; DAT_00466f8e = 0x32; DAT_00466f94 = 1; DAT_00466f96 = FUN_00412ac4(0x2714); FUN_00421490(0,1); DAT_00466abc = 1; DAT_00466abe = 1; DAT_00466ac0 = 0; FUN_00421490(1,0); DAT_00466f9e = 0; DAT_00466fa4 = 1; DAT_00466fa0 = 0x18e; DAT_00466fa2 = 0x98; DAT_00466fa8 = 1; DAT_00466faa = FUN_00412ac4(0x2713); _DAT_00466b24 = 0; _DAT_00466b26 = 0; _DAT_00466b28 = 1; _DAT_00466a5c = 1; break; case 4: _DAT_0046977a = 6; _DAT_0046977c = 1; DAT_0046978a = 0x2726; DAT_0046978c = 0x2727; DAT_0046978e = 0x2728; DAT_00469790 = 0x2729; DAT_00469792 = 0x272a; DAT_00469794 = 0x272b; _DAT_00469796 = 0xffff; DAT_004697a8 = 0x2724; DAT_0046977e = 10000; DAT_00469778 = 1; DAT_00469780 = 10000; DAT_00466f8a = 1; DAT_00466f90 = 1; DAT_00466f8c = 0x15b; DAT_00466f8e = 0x37; DAT_00466f94 = 1; DAT_00466f96 = FUN_00412ac4(0x2714); FUN_00421490(0,1); DAT_00466f9e = 0; DAT_00466fa4 = 1; DAT_00466fa0 = 0xfe; DAT_00466fa2 = 0x92; DAT_00466fa8 = 1; DAT_00466faa = FUN_00412ac4(0x2713); FUN_00421490(1,0); _DAT_00466a5c = 2; break; case 5: _DAT_0046977a = 5; _DAT_0046977c = 1; DAT_0046978a = 0x2761; DAT_0046978c = 0x2762; DAT_0046978e = 0x2729; DAT_00469790 = 0x272a; DAT_00469792 = 0x272b; DAT_00469794 = 0xffff; DAT_004697a8 = 0x273c; DAT_0046977e = 10000; DAT_00469778 = 1; DAT_00469780 = 10000; DAT_00466f8a = 1; DAT_00466f90 = 1; DAT_00466f8c = 0x15b; DAT_00466f8e = 0x37; DAT_00466f94 = 1; DAT_00466f96 = FUN_00412ac4(0x2714); FUN_00421490(0,1); _DAT_00466a5c = 2; DAT_00466a54 = 1; break; case 6: _DAT_0046977a = 5; _DAT_0046977c = 1; DAT_0046978a = 0x2768; DAT_0046978c = 0x2769; DAT_0046978e = 0x2729; DAT_00469790 = 0x272a; DAT_00469792 = 0x272b; DAT_00469794 = 0xffff; DAT_004697a8 = 0x2725; DAT_0046977e = 10000; DAT_00469778 = 1; DAT_00469780 = 10000; DAT_00466f8a = 0; DAT_00466f90 = 1; DAT_00466f8c = 0xfe; DAT_00466f8e = 0x92; DAT_00466f94 = 1; DAT_00466f96 = FUN_00412ac4(0x2713); FUN_00421490(0,0); DAT_00466a56 = 1; _DAT_00466a5c = 2; break; case 7: _DAT_0046977a = 4; _DAT_0046977c = 1; DAT_0046978a = 0x2770; DAT_0046978c = 0x2771; DAT_0046978e = 0x2772; DAT_00469790 = 0x2773; DAT_00469792 = 0xffff; DAT_004697a8 = 0x2726; DAT_0046977e = 0x2711; DAT_00469778 = 1; DAT_00469780 = 0x2725; DAT_00466f8a = 1; DAT_00466f90 = 1; DAT_00466f8c = 0x15b; DAT_00466f8e = 0x37; DAT_00466f94 = 1; DAT_00466f96 = FUN_00412ac4(0x2714); FUN_00421490(0,1); DAT_00466abc = 1; DAT_00466abe = 0; DAT_00466ac0 = 0; DAT_00466f9e = 0; DAT_00466fa4 = 1; DAT_00466fa0 = 0xfe; DAT_00466fa2 = 0x92; DAT_00466fa8 = 1; DAT_00466faa = FUN_00412ac4(0x2713); FUN_00421490(1,0); _DAT_00466b0a = 0; _DAT_00466b0c = 0; _DAT_00466b0e = 1; _DAT_00466b24 = 2; _DAT_00466b26 = 1; _DAT_00466b28 = 1; DAT_00466fb2 = 2; DAT_00466fb8 = 1; DAT_00466fb4 = 0x1b0; DAT_00466fb6 = 0x8e; DAT_00466fbc = 1; DAT_00466fbe = FUN_00412ac4(0x2715); FUN_00421490(2,2); _DAT_00466b72 = 1; _DAT_00466b74 = 1; _DAT_00466b76 = 0; _DAT_00466a5c = 1; break; case 8: _DAT_0046977a = 4; _DAT_0046977c = 1; DAT_0046978a = 0x2770; DAT_0046978c = 0x2771; DAT_0046978e = 0x2772; DAT_00469790 = 0x2773; DAT_00469792 = 0xffff; DAT_004697a8 = 0x2726; DAT_0046977e = 0x2711; DAT_00469778 = 1; DAT_00469780 = 0x2725; DAT_00466f8a = 1; DAT_00466f90 = 1; DAT_00466f8c = 0xdc; DAT_00466f8e = 0x3c; DAT_00466f94 = 1; DAT_00466f96 = FUN_00412ac4(0x2714); FUN_00421490(0,1); DAT_00466abc = 2; DAT_00466abe = 0; DAT_00466ac0 = 0; DAT_00466f9e = 0; DAT_00466fa4 = 1; DAT_00466fa0 = 0x184; DAT_00466fa2 = 0x92; DAT_00466fa8 = 1; DAT_00466faa = FUN_00412ac4(0x2713); FUN_00421490(1,0); DAT_00466fb2 = 2; DAT_00466fb8 = 1; DAT_00466fb4 = 0x123; DAT_00466fb6 = 0x8e; DAT_00466fbc = 1; DAT_00466fbe = FUN_00412ac4(0x2715); FUN_00421490(2,2); _DAT_00466b58 = 0; _DAT_00466b5a = 0; _DAT_00466b5c = 1; _DAT_00466a5c = 2; break; case 9: _DAT_0046977a = 4; _DAT_0046977c = 1; DAT_0046978a = 0x2770; DAT_0046978c = 0x2771; DAT_0046978e = 0x2772; DAT_00469790 = 0x2773; DAT_00469792 = 0xffff; DAT_004697a8 = 0x2726; DAT_0046977e = 0x2711; DAT_00469778 = 1; DAT_00469780 = 0x2725; DAT_00466f8a = 1; DAT_00466f90 = 1; DAT_00466f8c = 0x184; DAT_00466f8e = 0x37; DAT_00466f94 = 1; DAT_00466f96 = FUN_00412ac4(0x2714); FUN_00421490(0,1); DAT_00466f9e = 0; DAT_00466fa4 = 1; DAT_00466fa0 = 0xd6; DAT_00466fa2 = 0x92; DAT_00466fa8 = 1; DAT_00466faa = FUN_00412ac4(0x2713); FUN_00421490(1,0); DAT_00466fb2 = 2; DAT_00466fb8 = 1; DAT_00466fb4 = 0x139; DAT_00466fb6 = 0x8e; DAT_00466fbc = 1; DAT_00466fbe = FUN_00412ac4(0x2715); FUN_00421490(2,2); _DAT_00466a5c = 3; break; case 10: _DAT_0046977a = 4; _DAT_0046977c = 1; DAT_0046978a = 0x2770; DAT_0046978c = 0x2771; DAT_0046978e = 0x2772; DAT_00469790 = 0x2773; DAT_00469792 = 0xffff; DAT_004697a8 = 0x2726; DAT_0046977e = 0x2711; DAT_00469778 = 1; DAT_00469780 = 0x2725; DAT_00466f8a = 1; DAT_00466f90 = 1; DAT_00466f8c = 0x15b; DAT_00466f8e = 0x37; DAT_00466f94 = 1; DAT_00466f96 = FUN_00412ac4(0x2714); FUN_00421490(0,1); DAT_00466abc = 1; DAT_00466abe = 0; DAT_00466ac0 = 0; DAT_00466f9e = 0; DAT_00466fa4 = 1; DAT_00466fa0 = 0xfe; DAT_00466fa2 = 0x92; DAT_00466fa8 = 1; DAT_00466faa = FUN_00412ac4(0x2713); FUN_00421490(1,0); _DAT_00466b0a = 0; _DAT_00466b0c = 0; _DAT_00466b0e = 1; _DAT_00466a5c = 2; _DAT_00466a58 = 1; break; case 0xb: _DAT_0046977a = 4; _DAT_0046977c = 1; DAT_0046978a = 0x2770; DAT_0046978c = 0x2771; DAT_0046978e = 0x2772; DAT_00469790 = 0x2773; DAT_00469792 = 0xffff; DAT_004697a8 = 0x2726; DAT_0046977e = 0x2711; DAT_00469778 = 1; DAT_00469780 = 0x2725; DAT_00466f8a = 1; DAT_00466f90 = 1; DAT_00466f8c = 0x15b; DAT_00466f8e = 0x37; DAT_00466f94 = 1; DAT_00466f96 = FUN_00412ac4(0x2714); FUN_00421490(0,1); _DAT_00466a5c = 3; _DAT_00466a58 = 1; DAT_00466a54 = 1; break; case 0xc: _DAT_0046977a = 4; _DAT_0046977c = 1; DAT_0046978a = 0x2770; DAT_0046978c = 0x2771; DAT_0046978e = 0x2772; DAT_00469790 = 0x2773; DAT_00469792 = 0xffff; DAT_004697a8 = 0x2726; DAT_0046977e = 0x2711; DAT_00469778 = 1; DAT_00469780 = 0x2725; _DAT_00466a5c = 3; _DAT_00466a58 = 1; DAT_00466a54 = 1; DAT_00466a56 = 1; break; case 0xd: _DAT_0046977a = 3; _DAT_0046977c = 1; DAT_0046978a = 0x272c; DAT_0046978c = 0x272d; DAT_0046978e = 0x272e; DAT_00469790 = 0xffff; DAT_004697a8 = 0x2727; DAT_0046977e = 0x2712; DAT_00469778 = 1; DAT_00469780 = 0x2711; DAT_00466f8a = 1; DAT_00466f90 = 1; DAT_00466f8c = 0xd2; DAT_00466f8e = 0x28; DAT_00466f94 = 1; DAT_00466f96 = FUN_00412ac4(0x2714); FUN_00421490(0,1); DAT_00466f9e = 0; DAT_00466fa4 = 1; DAT_00466fa0 = 0x138; DAT_00466fa2 = 0x88; DAT_00466fa8 = 1; DAT_00466faa = FUN_00412ac4(0x2713); FUN_00421490(1,0); _DAT_00466b0a = 2; _DAT_00466b0c = 0; _DAT_00466b0e = 1; _DAT_00466b24 = 2; _DAT_00466b26 = 1; _DAT_00466b28 = 0; DAT_00466fb2 = 2; DAT_00466fb8 = 1; DAT_00466fb4 = 0x1ab; DAT_00466fb6 = 0x90; DAT_00466fbc = 1; DAT_00466fbe = FUN_00412ac4(0x2715); FUN_00421490(2,2); _DAT_00466b58 = 1; _DAT_00466b5a = 0; _DAT_00466b5c = 0; _DAT_00466b72 = 1; _DAT_00466b74 = 1; _DAT_00466b76 = 1; _DAT_00466a5c = 1; break; case 0xe: _DAT_0046977a = 2; _DAT_0046977c = 1; DAT_0046978a = 0x2766; DAT_0046978c = 0x2767; DAT_0046978e = 0xffff; DAT_004697a8 = 0x2737; DAT_0046977e = 0x2722; DAT_00469778 = 1; DAT_00469780 = 0x2722; DAT_00466f8a = 1; DAT_00466f90 = 1; DAT_00466f8c = 0xdc; DAT_00466f8e = 0x38; DAT_00466f94 = 1; DAT_00466f96 = FUN_00412ac4(0x2714); FUN_00421490(0,1); DAT_00466abc = 1; DAT_00466abe = 0; DAT_00466ac0 = 3; DAT_00466f9e = 0; DAT_00466fa4 = 1; DAT_00466fa0 = 0xd0; DAT_00466fa2 = 0x85; DAT_00466fa8 = 1; DAT_00466faa = FUN_00412ac4(0x2713); FUN_00421490(1,0); _DAT_00466b0a = 0; _DAT_00466b0c = 0; _DAT_00466b0e = 3; _DAT_00466a5c = 2; _DAT_00466a58 = 1; break; case 0xf: _DAT_0046977a = 2; _DAT_0046977c = 1; DAT_0046978a = 0x2766; DAT_0046978c = 0x2767; DAT_0046978e = 0xffff; DAT_004697a8 = 0x273d; DAT_0046977e = 0x2734; DAT_00469778 = 1; DAT_00469780 = 0x2774; DAT_00466f8a = 2; DAT_00466f90 = 1; DAT_00466f8c = 0x182; DAT_00466f8e = 0x28; DAT_00466f94 = 1; DAT_00466f96 = FUN_00412ac4(0x2715); FUN_00421490(0,2); DAT_00466ad6 = 1; _DAT_00466ad8 = 0; _DAT_00466ada = 3; DAT_00466f9e = 2; DAT_00466fa4 = 1; DAT_00466fa0 = 0x182; DAT_00466fa2 = 0x91; DAT_00466fa8 = 1; DAT_00466faa = FUN_00412ac4(0x2715); FUN_00421490(1,2); _DAT_00466b0a = 0; _DAT_00466b0c = 1; _DAT_00466b0e = 3; _DAT_00466a5c = 3; DAT_00466a54 = 1; DAT_00466a56 = 1; break; case 0x10: _DAT_0046977a = 5; _DAT_0046977c = 1; DAT_0046978a = 0x272c; DAT_0046978c = 0x2757; DAT_0046978e = 0x2758; DAT_00469790 = 0x2759; DAT_00469792 = 0x275a; DAT_00469794 = 0xffff; DAT_004697a8 = 0x2735; DAT_0046977e = 0x2722; DAT_00469778 = 1; DAT_00469780 = 0x2722; DAT_00466f8a = 0; DAT_00466f90 = 1; DAT_00466f8c = 0xb4; DAT_00466f8e = 0x3b; DAT_00466f94 = 1; DAT_00466f96 = FUN_00412ac4(0x2713); FUN_00421490(0,0); DAT_00466ad6 = 1; _DAT_00466ad8 = 0; _DAT_00466ada = 3; DAT_00466f9e = 0; DAT_00466fa4 = 1; DAT_00466fa0 = 0xb4; DAT_00466fa2 = 0xa4; DAT_00466fa8 = 1; DAT_00466faa = FUN_00412ac4(0x2713); FUN_00421490(1,0); _DAT_00466b0a = 0; _DAT_00466b0c = 1; _DAT_00466b0e = 3; _DAT_00466a5c = 3; _DAT_00466a58 = 1; DAT_00466a56 = 1; break; case 0x11: _DAT_0046977a = 5; _DAT_0046977c = 1; DAT_0046978a = 0x272c; DAT_0046978c = 0x2757; DAT_0046978e = 0x2758; DAT_00469790 = 0x2759; DAT_00469792 = 0x275a; DAT_00469794 = 0xffff; DAT_004697a8 = 0x2735; DAT_0046977e = 0x271f; DAT_00469778 = 1; DAT_00469780 = 0x271e; DAT_00466f8a = 0; DAT_00466f90 = 1; DAT_00466f8c = 0xe6; DAT_00466f8e = 0x45; DAT_00466f94 = 1; DAT_00466f96 = FUN_00412ac4(0x2713); FUN_00421490(0,0); DAT_00466ad6 = 1; _DAT_00466ad8 = 0; _DAT_00466ada = 0; DAT_00466f9e = 0; DAT_00466fa4 = 1; DAT_00466fa0 = 0xb4; DAT_00466fa2 = 0xac; DAT_00466fa8 = 1; DAT_00466faa = FUN_00412ac4(0x2713); FUN_00421490(1,0); _DAT_00466b0a = 0; _DAT_00466b0c = 1; _DAT_00466b0e = 1; DAT_00466fb2 = 2; DAT_00466fb8 = 1; DAT_00466fb4 = 0x139; DAT_00466fb6 = 0x8e; DAT_00466fbc = 1; DAT_00466fbe = FUN_00412ac4(0x2715); FUN_00421490(2,2); _DAT_00466a5c = 3; DAT_00466a56 = 1; break; case 0x12: _DAT_0046977a = 4; _DAT_0046977c = 1; DAT_0046978a = 0x2730; DAT_0046978c = 0x2731; DAT_0046978e = 0x2732; DAT_00469790 = 0x2733; DAT_00469792 = 0xffff; DAT_004697a8 = 0x2728; DAT_0046977e = 0x2713; DAT_00469778 = 1; DAT_00469780 = 0x2712; DAT_00466f8a = 0; DAT_00466f90 = 1; DAT_00466f8c = 0xb4; DAT_00466f8e = 0x3b; DAT_00466f94 = 1; DAT_00466f96 = FUN_00412ac4(0x2713); FUN_00421490(0,0); DAT_00466ad6 = 1; _DAT_00466ad8 = 0; _DAT_00466ada = 0; DAT_00466f9e = 0; DAT_00466fa4 = 1; DAT_00466fa0 = 0xb4; DAT_00466fa2 = 0xac; DAT_00466fa8 = 1; DAT_00466faa = FUN_00412ac4(0x2713); FUN_00421490(1,0); _DAT_00466b0a = 0; _DAT_00466b0c = 1; _DAT_00466b0e = 1; DAT_00466fb2 = 2; DAT_00466fb8 = 1; DAT_00466fb4 = 0x19d; DAT_00466fb6 = 0x48; DAT_00466fbc = 1; DAT_00466fbe = FUN_00412ac4(0x2715); FUN_00421490(2,2); DAT_00466fc6 = 1; DAT_00466fcc = 1; DAT_00466fc8 = 0x139; DAT_00466fca = 0x79; DAT_00466fd0 = 1; DAT_00466fd2 = FUN_00412ac4(0x2714); FUN_00421490(3,1); _DAT_00466a5c = 3; break; case 0x13: _DAT_0046977a = 5; _DAT_0046977c = 1; DAT_0046978a = 0x272c; DAT_0046978c = 0x2757; DAT_0046978e = 0x2758; DAT_00469790 = 0x2759; DAT_00469792 = 0x275a; DAT_00469794 = 0xffff; DAT_004697a8 = 0x2735; DAT_0046977e = 0x271f; DAT_00469778 = 1; DAT_00469780 = 0x271e; DAT_00466f8a = 0; DAT_00466f90 = 1; DAT_00466f8c = 0x15e; DAT_00466f8e = 0x31; DAT_00466f94 = 1; DAT_00466f96 = FUN_00412ac4(0x2713); FUN_00421490(0,0); DAT_00466abc = 2; DAT_00466abe = 0; DAT_00466ac0 = 1; DAT_00466f9e = 0; DAT_00466fa4 = 1; DAT_00466fa0 = 0x17c; DAT_00466fa2 = 0xa2; DAT_00466fa8 = 1; DAT_00466faa = FUN_00412ac4(0x2713); FUN_00421490(1,0); _DAT_00466b24 = 3; _DAT_00466b26 = 1; _DAT_00466b28 = 1; DAT_00466fb2 = 2; DAT_00466fb8 = 1; DAT_00466fb4 = 0xaf; DAT_00466fb6 = 0x48; DAT_00466fbc = 1; DAT_00466fbe = FUN_00412ac4(0x2715); FUN_00421490(2,2); _DAT_00466b58 = 0; _DAT_00466b5a = 0; _DAT_00466b5c = 0; DAT_00466fc6 = 1; DAT_00466fcc = 1; DAT_00466fc8 = 0x139; DAT_00466fca = 0x79; DAT_00466fd0 = 1; DAT_00466fd2 = FUN_00412ac4(0x2714); FUN_00421490(3,1); _DAT_00466bc0 = 1; _DAT_00466bc2 = 1; _DAT_00466bc4 = 0; _DAT_00466a5c = 2; break; case 0x14: _DAT_0046977a = 5; _DAT_0046977c = 1; DAT_0046978a = 0x272f; DAT_0046978c = 0x2730; DAT_0046978e = 0x2731; DAT_00469790 = 0x2732; DAT_00469792 = 0x2733; DAT_00469794 = 0xffff; DAT_004697a8 = 0x2739; DAT_0046977e = 0x2714; DAT_00469778 = 1; DAT_00469780 = 0x2713; DAT_00466f8a = 1; DAT_00466f90 = 1; DAT_00466f8c = 0x18e; DAT_00466f8e = 0x4c; DAT_00466f94 = 1; DAT_00466f96 = FUN_00412ac4(0x2714); FUN_00421490(0,1); DAT_00466abc = 2; DAT_00466abe = 1; DAT_00466ac0 = 0; DAT_00466ad6 = 1; _DAT_00466ad8 = 1; _DAT_00466ada = 0; DAT_00466f9e = 0; DAT_00466fa4 = 1; DAT_00466fa0 = 0xc2; DAT_00466fa2 = 0xaa; DAT_00466fa8 = 1; DAT_00466faa = FUN_00412ac4(0x2713); FUN_00421490(1,0); _DAT_00466b0a = 2; _DAT_00466b0c = 0; _DAT_00466b0e = 0; _DAT_00466b24 = 0; _DAT_00466b26 = 1; _DAT_00466b28 = 1; DAT_00466fb2 = 2; DAT_00466fb8 = 1; DAT_00466fb4 = 0x126; DAT_00466fb6 = 0x6a; DAT_00466fbc = 1; DAT_00466fbe = FUN_00412ac4(0x2715); FUN_00421490(2,2); _DAT_00466b58 = 1; _DAT_00466b5a = 0; _DAT_00466b5c = 1; _DAT_00466b72 = 0; _DAT_00466b74 = 0; _DAT_00466b76 = 1; _DAT_00466a5c = 1; DAT_00466a54 = 1; break; case 0x15: _DAT_0046977a = 4; _DAT_0046977c = 1; DAT_0046978a = 0x2734; DAT_0046978c = 0x2735; DAT_0046978e = 0x2736; DAT_00469790 = 0x2737; DAT_00469792 = 0xffff; DAT_004697a8 = 0x2729; DAT_0046977e = 0x2714; DAT_00469778 = 1; DAT_00469780 = 0x2713; DAT_00466f8a = 0; DAT_00466f90 = 1; DAT_00466f8c = 0xb8; DAT_00466f8e = 0x71; DAT_00466f94 = 1; DAT_00466f96 = FUN_00412ac4(0x2713); FUN_00421490(0,0); DAT_00466abc = 1; DAT_00466abe = 0; DAT_00466ac0 = 0; DAT_00466ad6 = 2; _DAT_00466ad8 = 1; _DAT_00466ada = 0; DAT_00466f9e = 0; DAT_00466fa4 = 1; DAT_00466fa0 = 0xf3; DAT_00466fa2 = 0x32; DAT_00466fa8 = 1; DAT_00466faa = FUN_00412ac4(0x2713); FUN_00421490(1,0); _DAT_00466b0a = 0; _DAT_00466b0c = 0; _DAT_00466b0e = 1; _DAT_00466b24 = 3; _DAT_00466b26 = 0; _DAT_00466b28 = 1; DAT_00466fb2 = 2; DAT_00466fb8 = 1; DAT_00466fb4 = 0x19d; DAT_00466fb6 = 0xa0; DAT_00466fbc = 1; DAT_00466fbe = FUN_00412ac4(0x2715); FUN_00421490(2,2); _DAT_00466b58 = 3; _DAT_00466b5a = 1; _DAT_00466b5c = 0; _DAT_00466b72 = 0; _DAT_00466b74 = 1; _DAT_00466b76 = 1; DAT_00466fc6 = 1; DAT_00466fcc = 1; DAT_00466fc8 = 0x15b; DAT_00466fca = 0x4d; DAT_00466fd0 = 1; DAT_00466fd2 = FUN_00412ac4(0x2714); FUN_00421490(3,1); _DAT_00466ba6 = 1; _DAT_00466ba8 = 1; _DAT_00466baa = 0; _DAT_00466bc0 = 2; _DAT_00466bc2 = 0; _DAT_00466bc4 = 1; break; case 0x16: _DAT_0046977a = 4; _DAT_0046977c = 1; DAT_0046978a = 0x2738; DAT_0046978c = 0x2739; DAT_0046978e = 0x273a; DAT_00469790 = 0x273b; DAT_00469792 = 0xffff; DAT_004697a8 = 0x272a; DAT_0046977e = 0x2715; DAT_00469778 = 1; DAT_00469780 = 0x2714; DAT_00466f8a = 1; DAT_00466f90 = 1; DAT_00466f8c = 0x15b; DAT_00466f8e = 0x4c; DAT_00466f94 = 1; DAT_00466f96 = FUN_00412ac4(0x2714); FUN_00421490(0,1); DAT_00466abc = 1; DAT_00466abe = 0; DAT_00466ac0 = 0; DAT_00466ad6 = 2; _DAT_00466ad8 = 0; _DAT_00466ada = 1; DAT_00466f9e = 0; DAT_00466fa4 = 1; DAT_00466fa0 = 0xb8; DAT_00466fa2 = 0xa0; DAT_00466fa8 = 1; DAT_00466faa = FUN_00412ac4(0x2713); FUN_00421490(1,0); _DAT_00466b0a = 0; _DAT_00466b0c = 0; _DAT_00466b0e = 1; _DAT_00466b24 = 2; _DAT_00466b26 = 1; _DAT_00466b28 = 0; DAT_00466fb2 = 2; DAT_00466fb8 = 1; DAT_00466fb4 = 0x1a8; DAT_00466fb6 = 0xaa; DAT_00466fbc = 1; DAT_00466fbe = FUN_00412ac4(0x2715); FUN_00421490(2,2); _DAT_00466b58 = 0; _DAT_00466b5a = 1; _DAT_00466b5c = 0; _DAT_00466b72 = 1; _DAT_00466b74 = 1; _DAT_00466b76 = 1; _DAT_00466a5c = 1; DAT_00466a56 = 1; break; case 0x17: _DAT_0046977a = 4; _DAT_0046977c = 1; DAT_0046978a = 0x2738; DAT_0046978c = 0x2739; DAT_0046978e = 0x273a; DAT_00469790 = 0x273b; DAT_00469792 = 0xffff; DAT_004697a8 = 0x272a; DAT_0046977e = 0x2716; DAT_00469778 = 1; DAT_00469780 = 0x2715; _DAT_00466a5c = 4; DAT_00466a56 = 2; DAT_00466a54 = 1; _DAT_00466a58 = 1; break; case 0x18: _DAT_0046977a = 5; _DAT_0046977c = 1; DAT_0046978a = 0x273c; DAT_0046978c = 0x273d; DAT_0046978e = 0x273e; DAT_00469790 = 0x273f; DAT_00469792 = 0x2740; DAT_00469794 = 0xffff; DAT_004697a8 = 0x272b; DAT_0046977e = 0x2717; DAT_00469778 = 1; DAT_00469780 = 0x2716; DAT_00466f8a = 1; DAT_00466f90 = 1; DAT_00466f8c = 0x15b; DAT_00466f8e = 0x4c; DAT_00466f94 = 1; DAT_00466f96 = FUN_00412ac4(0x2714); FUN_00421490(0,1); DAT_00466abc = 1; DAT_00466abe = 0; DAT_00466ac0 = 1; DAT_00466ad6 = 2; _DAT_00466ad8 = 0; _DAT_00466ada = 1; DAT_00466f9e = 0; DAT_00466fa4 = 1; DAT_00466fa0 = 0xb8; DAT_00466fa2 = 0xa0; DAT_00466fa8 = 1; DAT_00466faa = FUN_00412ac4(0x2713); FUN_00421490(1,0); _DAT_00466b0a = 0; _DAT_00466b0c = 0; _DAT_00466b0e = 0; _DAT_00466b24 = 2; _DAT_00466b26 = 1; _DAT_00466b28 = 0; DAT_00466fb2 = 2; DAT_00466fb8 = 1; DAT_00466fb4 = 0x1a8; DAT_00466fb6 = 0xaa; DAT_00466fbc = 1; DAT_00466fbe = FUN_00412ac4(0x2715); FUN_00421490(2,2); _DAT_00466b58 = 0; _DAT_00466b5a = 1; _DAT_00466b5c = 0; _DAT_00466b72 = 1; _DAT_00466b74 = 1; _DAT_00466b76 = 1; _DAT_00466a5c = 2; DAT_00466a56 = 1; DAT_00466a54 = 1; break; case 0x19: DAT_0046977e = 0x2722; _DAT_0046977a = 2; _DAT_0046977c = 1; DAT_0046978a = 0x2766; DAT_0046978c = 0x2767; DAT_0046978e = 0xffff; DAT_004697a8 = 0x2737; DAT_00469778 = 1; DAT_00469780 = 0x2722; _DAT_00466a5c = 2; DAT_00466a56 = 1; DAT_00466a54 = 1; _DAT_00466a58 = 1; break; case 0x1a: DAT_0046977e = 0x2734; _DAT_0046977a = 2; _DAT_0046977c = 1; DAT_0046978a = 0x2766; DAT_0046978c = 0x2767; DAT_0046978e = 0xffff; DAT_004697a8 = 0x273d; DAT_00469778 = 1; DAT_00469780 = 0x2774; _DAT_00466a5c = 3; DAT_00466a56 = 1; DAT_00466a54 = 1; _DAT_00466a58 = 2; break; case 0x1b: _DAT_0046977a = 2; _DAT_0046977c = 1; DAT_0046978a = 0x2766; DAT_0046978c = 0x2767; DAT_0046978e = 0xffff; DAT_004697a8 = 0x2737; DAT_0046977e = 0x2719; DAT_00469778 = 1; DAT_00469780 = 0x2718; _DAT_00466a5c = 3; DAT_00466a56 = 1; DAT_00466a54 = 2; _DAT_00466a58 = 1; break; case 0x1c: DAT_0046977e = 0x2734; _DAT_0046977a = 2; _DAT_0046977c = 1; DAT_0046978a = 0x2766; DAT_0046978c = 0x2767; DAT_0046978e = 0xffff; DAT_004697a8 = 0x273d; DAT_00469778 = 1; DAT_00469780 = 0x2774; _DAT_00466a5c = 2; DAT_00466a56 = 1; DAT_00466a54 = 1; _DAT_00466a58 = 2; break; case 0x1d: _DAT_0046977a = 2; _DAT_0046977c = 1; DAT_0046978a = 0x2766; DAT_0046978c = 0x2767; DAT_0046978e = 0xffff; DAT_004697a8 = 0x2737; DAT_0046977e = 0x2719; DAT_00469778 = 1; DAT_00469780 = 0x2718; _DAT_00466a5c = 2; DAT_00466a56 = 1; DAT_00466a54 = 2; _DAT_00466a58 = 1; break; case 0x1e: _DAT_0046977a = 3; _DAT_0046977c = 1; DAT_0046978a = 0x2757; DAT_0046978c = 0x2758; DAT_0046978e = 0x2776; DAT_00469790 = 0xffff; DAT_004697a8 = 0x2738; DAT_0046977e = 0x273a; DAT_00469778 = 1; DAT_00469780 = 0x2775; _DAT_00466a5c = 3; DAT_00466a56 = 1; DAT_00466a54 = 2; _DAT_00466a58 = 2; break; case 0x1f: _DAT_0046977a = 5; _DAT_0046977c = 1; DAT_0046978a = 0x273c; DAT_0046978c = 0x273d; DAT_0046978e = 0x273e; DAT_00469790 = 0x273f; DAT_00469792 = 0x2740; DAT_00469794 = 0xffff; DAT_004697a8 = 0x272b; DAT_0046977e = 0x2717; DAT_00469778 = 1; DAT_00469780 = 0x2716; DAT_00466f8a = 0; DAT_00466f90 = 1; DAT_00466f8c = 0xa0; DAT_00466f8e = 0xa0; DAT_00466f94 = 1; DAT_00466f96 = FUN_00412ac4(0x2713); FUN_00421490(0,0); DAT_00466abc = 3; DAT_00466abe = 0; DAT_00466ac0 = 1; DAT_00466ad6 = 2; _DAT_00466ad8 = 1; _DAT_00466ada = 1; DAT_00466f9e = 0; DAT_00466fa4 = 1; DAT_00466fa0 = 0xf3; DAT_00466fa2 = 0x9b; DAT_00466fa8 = 1; DAT_00466faa = FUN_00412ac4(0x2713); FUN_00421490(1,0); _DAT_00466b0a = 3; _DAT_00466b0c = 1; _DAT_00466b0e = 0; _DAT_00466b24 = 4; _DAT_00466b26 = 0; _DAT_00466b28 = 1; DAT_00466fb2 = 2; DAT_00466fb8 = 1; DAT_00466fb4 = 0x19d; DAT_00466fb6 = 0xa0; DAT_00466fbc = 1; DAT_00466fbe = FUN_00412ac4(0x2715); FUN_00421490(2,2); _DAT_00466b58 = 4; _DAT_00466b5a = 1; _DAT_00466b5c = 0; _DAT_00466b72 = 0; _DAT_00466b74 = 1; _DAT_00466b76 = 0; DAT_00466fc6 = 1; DAT_00466fcc = 1; DAT_00466fc8 = 0xbe; DAT_00466fca = 0x3c; DAT_00466fd0 = 1; DAT_00466fd2 = FUN_00412ac4(0x2714); FUN_00421490(3,1); _DAT_00466ba6 = 0; _DAT_00466ba8 = 0; _DAT_00466baa = 0; _DAT_00466bc0 = 1; _DAT_00466bc2 = 0; _DAT_00466bc4 = 1; DAT_00466fda = 1; DAT_00466fe0 = 1; DAT_00466fdc = 0x15b; DAT_00466fde = 0x3c; DAT_00466fe4 = 1; DAT_00466fe6 = FUN_00412ac4(0x2714); FUN_00421490(4,1); _DAT_00466bf4 = 1; _DAT_00466bf6 = 1; _DAT_00466bf8 = 0; _DAT_00466c0e = 2; _DAT_00466c10 = 0; _DAT_00466c12 = 1; break; case 0x20: _DAT_0046977a = 6; _DAT_0046977c = 1; DAT_0046978a = 0x2741; DAT_0046978c = 0x2742; DAT_0046978e = 0x2743; DAT_00469790 = 0x2744; DAT_00469792 = 0x2745; DAT_00469794 = 0x2746; _DAT_00469796 = 0xffff; DAT_004697a8 = 0x272c; DAT_0046977e = 0x2718; DAT_00469778 = 1; DAT_00469780 = 0x2717; DAT_00466f8a = 0; DAT_00466f90 = 1; DAT_00466f8c = 0xa0; DAT_00466f8e = 0xa5; DAT_00466f94 = 1; DAT_00466f96 = FUN_00412ac4(0x2713); FUN_00421490(0,0); DAT_00466f9e = 3; DAT_00466fa4 = 1; DAT_00466fa0 = 0xcd; DAT_00466fa2 = 0x77; DAT_00466fa8 = 1; DAT_00466faa = FUN_00412ac4(0x2716); FUN_00421490(1,3); _DAT_00466b0a = 3; _DAT_00466b0c = 0; _DAT_00466b0e = 1; _DAT_00466b24 = 4; _DAT_00466b26 = 0; _DAT_00466b28 = 1; DAT_00466fb2 = 2; DAT_00466fb8 = 1; DAT_00466fb4 = 0x19d; DAT_00466fb6 = 0xa0; DAT_00466fbc = 1; DAT_00466fbe = FUN_00412ac4(0x2715); FUN_00421490(2,2); DAT_00466fc6 = 1; DAT_00466fcc = 1; DAT_00466fc8 = 0xe1; DAT_00466fca = 0x25; DAT_00466fd0 = 1; DAT_00466fd2 = FUN_00412ac4(0x2714); FUN_00421490(3,1); _DAT_00466ba6 = 1; _DAT_00466ba8 = 0; _DAT_00466baa = 0; _DAT_00466bc0 = 5; _DAT_00466bc2 = 0; _DAT_00466bc4 = 1; DAT_00466fda = 1; DAT_00466fe0 = 1; DAT_00466fdc = 0x14c; DAT_00466fde = 0x25; DAT_00466fe4 = 1; DAT_00466fe6 = FUN_00412ac4(0x2714); FUN_00421490(4,1); _DAT_00466bf4 = 1; _DAT_00466bf6 = 1; _DAT_00466bf8 = 0; _DAT_00466c0e = 5; _DAT_00466c10 = 1; _DAT_00466c12 = 0; DAT_00466fee = 3; DAT_00466ff4 = 1; DAT_00466ff0 = 0x13b; DAT_00466ff2 = 0x7d; DAT_00466ff8 = 1; DAT_00466ffa = FUN_00412ac4(0x2716); FUN_00421490(5,3); _DAT_00466c42 = 3; _DAT_00466c44 = 1; _DAT_00466c46 = 0; _DAT_00466c5c = 4; _DAT_00466c5e = 1; _DAT_00466c60 = 1; _DAT_00466a5c = 3; break; case 0x21: _DAT_0046977a = 4; _DAT_0046977c = 1; DAT_0046978a = 0x2747; DAT_0046978c = 0x2748; DAT_0046978e = 0x2749; DAT_00469790 = 0x274a; DAT_00469792 = 0xffff; DAT_004697a8 = 0x272d; DAT_0046977e = 0x2719; DAT_00469778 = 1; DAT_00469780 = 0x2718; DAT_00466f8a = 0; DAT_00466f90 = 1; DAT_00466f8c = 0xa0; DAT_00466f8e = 0x6e; DAT_00466f94 = 1; DAT_00466f96 = FUN_00412ac4(0x2713); FUN_00421490(0,0); DAT_00466abc = 1; DAT_00466abe = 0; DAT_00466ac0 = 0; DAT_00466ad6 = 5; _DAT_00466ad8 = 0; _DAT_00466ada = 1; DAT_00466f9e = 3; DAT_00466fa4 = 1; DAT_00466fa0 = 0xdc; DAT_00466fa2 = 0x2b; DAT_00466fa8 = 1; DAT_00466faa = FUN_00412ac4(0x2716); FUN_00421490(1,3); _DAT_00466b0a = 0; _DAT_00466b0c = 0; _DAT_00466b0e = 1; _DAT_00466b24 = 3; _DAT_00466b26 = 0; _DAT_00466b28 = 1; DAT_00466fb2 = 2; DAT_00466fb8 = 1; DAT_00466fb4 = 0x19d; DAT_00466fb6 = 0xa0; DAT_00466fbc = 1; DAT_00466fbe = FUN_00412ac4(0x2715); FUN_00421490(2,2); DAT_00466fc6 = 0; DAT_00466fcc = 1; DAT_00466fc8 = 0x104; DAT_00466fca = 0x78; DAT_00466fd0 = 1; DAT_00466fd2 = FUN_00412ac4(0x2713); FUN_00421490(3,0); _DAT_00466ba6 = 1; _DAT_00466ba8 = 1; _DAT_00466baa = 0; _DAT_00466bc0 = 5; _DAT_00466bc2 = 1; _DAT_00466bc4 = 1; DAT_00466fda = 1; DAT_00466fe0 = 1; DAT_00466fdc = 0x15b; DAT_00466fde = 0x25; DAT_00466fe4 = 1; DAT_00466fe6 = FUN_00412ac4(0x2714); FUN_00421490(4,1); DAT_00466fee = 3; DAT_00466ff4 = 1; DAT_00466ff0 = 0xdc; DAT_00466ff2 = 0xd7; DAT_00466ff8 = 1; DAT_00466ffa = FUN_00412ac4(0x2716); FUN_00421490(5,3); _DAT_00466c42 = 0; _DAT_00466c44 = 1; _DAT_00466c46 = 0; _DAT_00466c5c = 3; _DAT_00466c5e = 1; _DAT_00466c60 = 0; _DAT_00466a5c = 3; break; case 0x22: _DAT_0046977a = 3; _DAT_0046977c = 1; DAT_0046978a = 0x2757; DAT_0046978c = 0x2758; DAT_0046978e = 0x2776; DAT_00469790 = 0xffff; DAT_004697a8 = 0x2738; DAT_0046977e = 0x271a; DAT_00469778 = 1; DAT_00469780 = 0x2719; DAT_00466f8a = 0; DAT_00466f90 = 1; DAT_00466f8c = 0xa0; DAT_00466f8e = 0x6e; DAT_00466f94 = 1; DAT_00466f96 = FUN_00412ac4(0x2713); FUN_00421490(0,0); DAT_00466ad6 = 5; _DAT_00466ad8 = 0; _DAT_00466ada = 1; DAT_00466f9e = 3; DAT_00466fa4 = 1; DAT_00466fa0 = 0xdc; DAT_00466fa2 = 0x2d; DAT_00466fa8 = 1; DAT_00466faa = FUN_00412ac4(0x2716); FUN_00421490(1,3); _DAT_00466b24 = 3; _DAT_00466b26 = 0; _DAT_00466b28 = 1; _DAT_00466b3e = 6; _DAT_00466b40 = 2; _DAT_00466b42 = 0; DAT_00466fb2 = 2; DAT_00466fb8 = 1; DAT_00466fb4 = 0x19d; DAT_00466fb6 = 0xa0; DAT_00466fbc = 1; DAT_00466fbe = FUN_00412ac4(0x2715); FUN_00421490(2,2); _DAT_00466b72 = 5; _DAT_00466b74 = 2; _DAT_00466b76 = 0; DAT_00466fc6 = 0; DAT_00466fcc = 1; DAT_00466fc8 = 0x104; DAT_00466fca = 0x78; DAT_00466fd0 = 1; DAT_00466fd2 = FUN_00412ac4(0x2713); FUN_00421490(3,0); _DAT_00466ba6 = 1; _DAT_00466ba8 = 1; _DAT_00466baa = 0; DAT_00466fda = 1; DAT_00466fe0 = 1; DAT_00466fdc = 0x15b; DAT_00466fde = 0x25; DAT_00466fe4 = 1; DAT_00466fe6 = FUN_00412ac4(0x2714); FUN_00421490(4,1); _DAT_00466bf4 = 6; _DAT_00466bf6 = 0; _DAT_00466bf8 = 0; DAT_00466fee = 3; DAT_00466ff4 = 1; DAT_00466ff0 = 0xdc; DAT_00466ff2 = 0xd7; DAT_00466ff8 = 1; DAT_00466ffa = FUN_00412ac4(0x2716); FUN_00421490(5,3); _DAT_00466c42 = 0; _DAT_00466c44 = 1; _DAT_00466c46 = 0; _DAT_00466c76 = 2; _DAT_00466c78 = 1; _DAT_00466c7a = 1; DAT_00467002 = 3; DAT_00467008 = 1; DAT_00467004 = 0x140; DAT_00467006 = 0x78; DAT_0046700c = 1; DAT_0046700e = FUN_00412ac4(0x2716); FUN_00421490(6,3); _DAT_00466c90 = 4; _DAT_00466c92 = 0; _DAT_00466c94 = 1; _DAT_00466cc4 = 1; _DAT_00466cc6 = 2; _DAT_00466cc8 = 1; DAT_00466a56 = 1; _DAT_00466a5a = 1; _DAT_00466a5c = 6; break; case 0x23: _DAT_0046977a = 3; _DAT_0046977c = 1; DAT_0046978a = 0x274f; DAT_0046978c = 0x2750; DAT_0046978e = 0x2745; DAT_00469790 = 0xffff; DAT_004697a8 = 0x272f; DAT_0046977e = 0x271b; DAT_00469778 = 1; DAT_00469780 = 0x271a; DAT_00466f8a = 0; DAT_00466f90 = 1; DAT_00466f8c = 0x10e; DAT_00466f8e = 0xa5; DAT_00466f94 = 1; DAT_00466f96 = FUN_00412ac4(0x2713); FUN_00421490(0,0); DAT_00466abc = 1; DAT_00466abe = 2; DAT_00466ac0 = 1; DAT_00466ad6 = 2; _DAT_00466ad8 = 1; _DAT_00466ada = 1; DAT_00466f9e = 3; DAT_00466fa4 = 1; DAT_00466fa0 = 300; DAT_00466fa2 = 0x5f; DAT_00466fa8 = 1; DAT_00466faa = FUN_00412ac4(0x2716); FUN_00421490(1,3); _DAT_00466b0a = 3; _DAT_00466b0c = 1; _DAT_00466b0e = 1; _DAT_00466b24 = 4; _DAT_00466b26 = 0; _DAT_00466b28 = 1; _DAT_00466b3e = 0; _DAT_00466b40 = 0; _DAT_00466b42 = 0; DAT_00466fb2 = 2; DAT_00466fb8 = 1; DAT_00466fb4 = 0x19d; DAT_00466fb6 = 0xa0; DAT_00466fbc = 1; DAT_00466fbe = FUN_00412ac4(0x2715); FUN_00421490(2,2); _DAT_00466b58 = 4; _DAT_00466b5a = 1; _DAT_00466b5c = 0; _DAT_00466b72 = 0; _DAT_00466b74 = 1; _DAT_00466b76 = 0; DAT_00466fc6 = 1; DAT_00466fcc = 1; DAT_00466fc8 = 0xbe; DAT_00466fca = 0x25; DAT_00466fd0 = 1; DAT_00466fd2 = FUN_00412ac4(0x2714); FUN_00421490(3,1); _DAT_00466bc0 = 1; _DAT_00466bc2 = 0; _DAT_00466bc4 = 0; DAT_00466fda = 1; DAT_00466fe0 = 1; DAT_00466fdc = 0x15b; DAT_00466fde = 0x25; DAT_00466fe4 = 1; DAT_00466fe6 = FUN_00412ac4(0x2714); FUN_00421490(4,1); _DAT_00466bf4 = 1; _DAT_00466bf6 = 1; _DAT_00466bf8 = 0; _DAT_00466c0e = 2; _DAT_00466c10 = 0; _DAT_00466c12 = 1; _DAT_00466a5a = 1; _DAT_00466a5c = 2; break; case 0x24: _DAT_0046977a = 1; _DAT_0046977c = 1; DAT_0046978a = 0x2752; DAT_0046978c = 0xffff; DAT_004697a8 = 0x2730; DAT_0046977e = 0x271c; DAT_00469778 = 1; DAT_00469780 = 0x271b; DAT_00466f8a = 0; DAT_00466f90 = 1; DAT_00466f8c = 0xaa; DAT_00466f8e = 100; DAT_00466f94 = 1; DAT_00466f96 = FUN_00412ac4(0x2713); FUN_00421490(0,0); DAT_00466abc = 3; DAT_00466abe = 0; DAT_00466ac0 = 1; DAT_00466ad6 = 1; _DAT_00466ad8 = 0; _DAT_00466ada = 0; DAT_00466f9e = 3; DAT_00466fa4 = 1; DAT_00466fa0 = 0xe6; DAT_00466fa2 = 0xd2; DAT_00466fa8 = 1; DAT_00466faa = FUN_00412ac4(0x2716); FUN_00421490(1,3); _DAT_00466b0a = 0; _DAT_00466b0c = 1; _DAT_00466b0e = 1; _DAT_00466b24 = 4; _DAT_00466b26 = 1; _DAT_00466b28 = 1; _DAT_00466b3e = 2; _DAT_00466b40 = 1; _DAT_00466b42 = 1; DAT_00466fb2 = 2; DAT_00466fb8 = 1; DAT_00466fb4 = 0x140; DAT_00466fb6 = 0xa0; DAT_00466fbc = 1; DAT_00466fbe = FUN_00412ac4(0x2715); FUN_00421490(2,2); _DAT_00466b58 = 3; _DAT_00466b5a = 2; _DAT_00466b5c = 0; _DAT_00466b72 = 1; _DAT_00466b74 = 2; _DAT_00466b76 = 0; DAT_00466fc6 = 3; DAT_00466fcc = 1; DAT_00466fc8 = 300; DAT_00466fca = 0x5f; DAT_00466fd0 = 1; DAT_00466fd2 = FUN_00412ac4(0x2716); FUN_00421490(3,3); _DAT_00466ba6 = 0; _DAT_00466ba8 = 0; _DAT_00466baa = 0; _DAT_00466bc0 = 4; _DAT_00466bc2 = 0; _DAT_00466bc4 = 1; _DAT_00466bda = 2; _DAT_00466bdc = 0; _DAT_00466bde = 1; DAT_00466fda = 1; DAT_00466fe0 = 1; DAT_00466fdc = 0x197; DAT_00466fde = 0x25; DAT_00466fe4 = 1; DAT_00466fe6 = FUN_00412ac4(0x2714); FUN_00421490(4,1); _DAT_00466bf4 = 3; _DAT_00466bf6 = 1; _DAT_00466bf8 = 0; _DAT_00466c0e = 1; _DAT_00466c10 = 1; _DAT_00466c12 = 0; break; case 0x25: _DAT_0046977a = 1; _DAT_0046977c = 1; DAT_0046978a = 0x2753; DAT_0046978c = 0xffff; DAT_004697a8 = 0x2731; DAT_0046977e = 0x271d; DAT_00469778 = 1; DAT_00469780 = 0x271c; DAT_00466f8a = 0; DAT_00466f90 = 1; DAT_00466f8c = 0x96; DAT_00466f8e = 0xa0; DAT_00466f94 = 1; DAT_00466f96 = FUN_00412ac4(0x2713); FUN_00421490(0,0); DAT_00466abc = 1; DAT_00466abe = 0; DAT_00466ac0 = 0; DAT_00466ad6 = 3; _DAT_00466ad8 = 1; _DAT_00466ada = 1; DAT_00466f9e = 3; DAT_00466fa4 = 1; DAT_00466fa0 = 0xdc; DAT_00466fa2 = 0xaa; DAT_00466fa8 = 1; DAT_00466faa = FUN_00412ac4(0x2716); FUN_00421490(1,3); _DAT_00466b0a = 0; _DAT_00466b0c = 0; _DAT_00466b0e = 1; _DAT_00466b24 = 4; _DAT_00466b26 = 0; _DAT_00466b28 = 0; _DAT_00466b3e = 2; _DAT_00466b40 = 1; _DAT_00466b42 = 0; DAT_00466fb2 = 2; DAT_00466fb8 = 1; DAT_00466fb4 = 0x104; DAT_00466fb6 = 0xa0; DAT_00466fbc = 1; DAT_00466fbe = FUN_00412ac4(0x2715); FUN_00421490(2,2); _DAT_00466b58 = 5; _DAT_00466b5a = 2; _DAT_00466b5c = 1; _DAT_00466b72 = 1; _DAT_00466b74 = 2; _DAT_00466b76 = 1; DAT_00466fc6 = 2; DAT_00466fcc = 1; DAT_00466fc8 = 400; DAT_00466fca = 0xaa; DAT_00466fd0 = 1; DAT_00466fd2 = FUN_00412ac4(0x2715); FUN_00421490(3,2); _DAT_00466ba6 = 6; _DAT_00466ba8 = 1; _DAT_00466baa = 0; _DAT_00466bc0 = 0; _DAT_00466bc2 = 1; _DAT_00466bc4 = 0; DAT_00466fda = 1; DAT_00466fe0 = 1; DAT_00466fdc = 0xf0; DAT_00466fde = 0x25; DAT_00466fe4 = 1; DAT_00466fe6 = FUN_00412ac4(0x2714); FUN_00421490(4,1); _DAT_00466bf4 = 1; _DAT_00466bf6 = 1; _DAT_00466bf8 = 1; _DAT_00466c0e = 5; _DAT_00466c10 = 0; _DAT_00466c12 = 1; DAT_00466fee = 3; DAT_00466ff4 = 1; DAT_00466ff0 = 0x140; DAT_00466ff2 = 100; DAT_00466ff8 = 1; DAT_00466ffa = FUN_00412ac4(0x2716); FUN_00421490(5,3); _DAT_00466c42 = 4; _DAT_00466c44 = 1; _DAT_00466c46 = 0; _DAT_00466c5c = 6; _DAT_00466c5e = 0; _DAT_00466c60 = 1; _DAT_00466c76 = 2; _DAT_00466c78 = 0; _DAT_00466c7a = 0; DAT_00467002 = 1; DAT_00467008 = 1; DAT_00467004 = 0x186; DAT_00467006 = 0x25; DAT_0046700c = 1; DAT_0046700e = FUN_00412ac4(0x2714); FUN_00421490(6,1); _DAT_00466c90 = 5; _DAT_00466c92 = 1; _DAT_00466c94 = 0; _DAT_00466caa = 3; _DAT_00466cac = 0; _DAT_00466cae = 1; break; case 0x26: _DAT_0046977a = 3; _DAT_0046977c = 1; DAT_0046978a = 0x2754; DAT_0046978c = 0x2755; DAT_0046978e = 0x2756; DAT_00469790 = 0xffff; DAT_004697a8 = 0x2732; DAT_0046977e = 0x271e; DAT_00469778 = 1; DAT_00469780 = 0x271d; _DAT_00466a5c = 9; DAT_00466a56 = 2; DAT_00466a54 = 3; _DAT_00466a58 = 1; _DAT_00466a5a = 2; break; case 0x27: _DAT_0046977a = 3; _DAT_0046977c = 1; DAT_0046978a = 0x2754; DAT_0046978c = 0x2755; DAT_0046978e = 0x276f; DAT_00469790 = 0xffff; DAT_004697a8 = 0x2733; DAT_0046977e = 0x2721; DAT_00469778 = 2; _DAT_00469782 = 0x2720; DAT_00469780 = 0x2721; _DAT_00466a5c = 0xe; _DAT_00466a58 = 2; DAT_00466a56 = 2; DAT_00466a54 = 3; _DAT_00466a5a = 4; break; case 0x28: _DAT_0046977a = 3; _DAT_0046977c = 1; DAT_0046978a = 0x2754; DAT_0046978c = 0x2755; DAT_0046978e = 0x276f; DAT_00469790 = 0xffff; DAT_004697a8 = 0x2733; DAT_0046977e = 0x2723; DAT_00469778 = 2; _DAT_00469782 = 0x2723; DAT_00469780 = 0x2724; _DAT_00466a5c = 0x14; DAT_00466a56 = 3; DAT_00466a54 = 3; _DAT_00466a58 = 2; _DAT_00466a5a = 8; } DAT_00469770 = Resource::Load(DAT_0046977e,&_TEXT2); return; } void FUN_0041f635(void) { short x; short y; short sVar1; char local_10 [12]; Nfnt::LoadWithCache(15000); sVar1 = 0; do { if (0 < (short)(&DAT_00466a54)[sVar1]) { x = (&DAT_004614fc)[sVar1 * 6]; y = (&DAT_004614fe)[sVar1 * 6]; Sprintf_(local_10,&DAT_00461554,(int)(short)(&DAT_00466a54)[sVar1]); Draw::String(15000,local_10,x,y,0); } sVar1 = sVar1 + 1; } while (sVar1 < 5); FUN_00430abc(10,0x80,0x7c,0xb5); Nfnt::Unload(15000); return; } void FUN_0041f6da(void) { undefined4 extraout_EDX; short sVar1; undefined4 unaff_ESI; undefined4 unaff_EDI; undefined4 this; FUN_00430de8(10,0x80,0x7c,0xb5); sVar1 = 0; do { if (0 < (short)(&DAT_00466a54)[sVar1]) { unaff_ESI = CONCAT22((short)((uint)unaff_ESI >> 0x10),(&DAT_004614f8)[sVar1 * 6]); unaff_EDI = CONCAT22((short)((uint)unaff_EDI >> 0x10),(&DAT_004614fa)[sVar1 * 6]); this = (&DAT_004673e0)[sVar1]; BigThing6Eh::processNodes_(this); FUN_00412e70((int)sVar1,extraout_EDX,this,(&DAT_004673e0)[sVar1]); FUN_0041395c((&DAT_004673e0)[sVar1],unaff_ESI,unaff_EDI,5); } sVar1 = sVar1 + 1; } while (sVar1 < 5); FUN_0041f635(); return; } void FUN_0041f782(undefined4 param_1,undefined4 param_2,uint param_3) { uint uVar1; undefined4 extraout_EDX; undefined4 extraout_EDX_00; undefined4 uVar2; undefined4 extraout_EDX_01; undefined4 extraout_EDX_02; short sVar3; uint uVar4; sVar3 = 0; do { uVar4 = *(uint *)((int)&DAT_004672b0 + sVar3 * 6); FUN_00412d0c(sVar3 * 3,param_2,param_3,uVar4); param_3 = uVar4; sVar3 = sVar3 + 1; param_2 = extraout_EDX; } while (sVar3 < 0x32); sVar3 = 0; uVar2 = extraout_EDX; do { if ((&DAT_00466f90)[sVar3 * 10] == 1) { uVar4 = (&DAT_00466f96)[sVar3 * 5]; FUN_00412d0c(sVar3 * 5,uVar2,param_3,(&DAT_00466f96)[sVar3 * 5]); param_3 = uVar4; uVar2 = extraout_EDX_00; } sVar3 = sVar3 + 1; } while (sVar3 < 0x10); sVar3 = 0; do { uVar4 = (&DAT_004673e0)[sVar3]; uVar1 = FUN_00412d0c((int)sVar3,uVar2,param_3,(&DAT_004673e0)[sVar3]); param_3 = uVar4; sVar3 = sVar3 + 1; uVar2 = extraout_EDX_01; } while (sVar3 < 5); uVar4 = DAT_004673f4; uVar1 = FUN_00412d0c(uVar1,extraout_EDX_01,param_3,DAT_004673f4); FUN_00412d0c(uVar1,extraout_EDX_02,uVar4,DAT_004673f8); return; } undefined4 FUN_0041f800(void) { int iVar1; short in_stack_00000004; int in_stack_00000008; short in_stack_0000000c; iVar1 = 0; if (0 < in_stack_0000000c) { do { if (in_stack_00000004 == *(short *)(in_stack_00000008 + (short)iVar1 * 2)) { return CONCAT22((short)((uint)iVar1 >> 0x10),1); } iVar1 = iVar1 + 1; } while ((short)iVar1 < in_stack_0000000c); } return 0; } undefined4 FUN_0041f830(undefined4 param_1,undefined4 param_2,undefined4 param_3,short param_4,int param_5, short param_6,short param_7,int param_8) { bool bVar1; short sVar2; undefined4 uVar3; bVar1 = false; if (param_4 == 99) { uVar3 = CONCAT22((short)((uint)param_1 >> 0x10),1); } else { sVar2 = 0; if (0 < param_6) { do { if (param_4 == *(short *)(param_5 + sVar2 * 2)) { bVar1 = true; break; } sVar2 = sVar2 + 1; } while (sVar2 < param_6); } if ((bVar1) && (*(short *)(param_8 + -2 + param_6 * 2) != param_7)) { uVar3 = CONCAT22(param_6 >> 0xf,1); } else { uVar3 = 0; } } return uVar3; } undefined4 FUN_0041f88c(void) { int iVar1; short sVar2; int in_stack_00000004; short in_stack_00000008; sVar2 = 0; do { if (DAT_0046711c <= sVar2) { return 0; } iVar1 = 0; if (0 < in_stack_00000008) { do { if (*(short *)(in_stack_00000004 + (short)iVar1 * 2) != (&DAT_0046711e)[sVar2 * 0x14 + (int)(short)iVar1]) break; iVar1 = iVar1 + 1; } while ((short)iVar1 < in_stack_00000008); } if (in_stack_00000008 <= (short)iVar1) { return CONCAT22((short)((uint)iVar1 >> 0x10),1); } sVar2 = sVar2 + 1; } while( true ); } void FUN_0041f8e2(void) { short sVar1; int in_stack_00000004; short in_stack_00000008; undefined2 in_stack_0000000c; sVar1 = 0; if (0 < in_stack_00000008) { do { (&DAT_0046711e)[DAT_0046711c * 0x14 + (int)sVar1] = *(undefined2 *)(in_stack_00000004 + sVar1 * 2); sVar1 = sVar1 + 1; } while (sVar1 < in_stack_00000008); } (&DAT_0046711e)[DAT_0046711c * 0x14 + (int)sVar1] = in_stack_0000000c; DAT_0046711c = DAT_0046711c + 1; return; } // WARNING: Type propagation algorithm not settling uint FUN_0041f93f(void) { short sVar1; ushort uVar2; bool bVar3; short sVar4; uint uVar5; void *pvVar6; undefined4 uVar7; bool bVar8; short sVar9; short sVar10; bool bVar11; short in_stack_00000004; short local_64 [19]; ushort auStack_3e [24]; undefined2 local_e; short local_c; short local_a; short local_8; short local_6; local_8 = 0; if (((&DAT_00466abc)[in_stack_00000004 * 0x27] == 99) || ((&DAT_00466ad6)[in_stack_00000004 * 0x27] == 99)) { uVar5 = 0; } else { DAT_0046711c = 0; pvVar6 = Memset(&DAT_0046711e,0xff,400); while (local_8 == 0) { Memset(local_64,0xff,0x28); Memset(auStack_3e + 1,0xff,0x28); local_64[0] = (&DAT_00466abc)[in_stack_00000004 * 0x27]; auStack_3e[1] = (&DAT_00466abe)[in_stack_00000004 * 0x27]; uVar5 = (uint)auStack_3e[1]; pvVar6 = (void *)0x0; sVar4 = 1; local_6 = 0; sVar9 = local_64[0]; while (local_6 == 0) { do { do { uVar5 = (int)(short)((short)uVar5 + 1) % 3; sVar10 = (short)uVar5; uVar7 = FUN_0041f830(); } while ((short)uVar7 != 0); local_a = 0; if ((&DAT_00466abc)[sVar9 * 0x27 + sVar10 * 0xd] == in_stack_00000004) { if ((&DAT_00466abe)[sVar9 * 0x27 + sVar10 * 0xd] == 0) { local_6 = 1; local_8 = 1; } else { uVar7 = FUN_0041f88c(); if ((short)uVar7 == 0) { FUN_0041f8e2(); local_6 = 1; } else { local_a = 1; } } } } while (local_a != 0); if (((sVar4 < 1) || (sVar9 != local_64[sVar4 + -1])) || (sVar10 != auStack_3e[sVar4])) { sVar1 = (&DAT_00466abc)[sVar9 * 0x27 + sVar10 * 0xd]; uVar2 = (&DAT_00466abe)[sVar9 * 0x27 + sVar10 * 0xd]; uVar5 = (uint)uVar2; pvVar6 = (void *)FUN_0041f800(); sVar9 = sVar1; if ((short)pvVar6 == 0) { local_64[sVar4] = sVar1; pvVar6 = (void *)(int)sVar4; auStack_3e[(int)pvVar6 + 1] = uVar2; sVar4 = sVar4 + 1; } } else { sVar1 = (&DAT_00466abc)[sVar9 * 0x27 + sVar10 * 0xd]; uVar5 = (uint)(ushort)(&DAT_00466abe)[sVar9 * 0x27 + sVar10 * 0xd]; sVar4 = sVar4 + -1; local_64[sVar4] = 0; pvVar6 = (void *)(int)sVar4; auStack_3e[(int)pvVar6 + 1] = 0; sVar9 = sVar1; } } } local_e = 0; for (sVar9 = 0; sVar9 < DAT_0046711c; sVar9 = sVar9 + 1) { bVar8 = false; bVar3 = false; bVar11 = false; local_c = 0; pvVar6 = (void *)0x0; while (sVar4 = (short)pvVar6, (&DAT_0046711e)[sVar9 * 0x14 + (int)sVar4] != in_stack_00000004) { if ((&DAT_00466f8a)[(short)(&DAT_0046711e)[sVar9 * 0x14 + (int)sVar4] * 10] == 1) { bVar3 = true; } else if ((&DAT_00466f8a)[(short)(&DAT_0046711e)[sVar9 * 0x14 + (int)sVar4] * 10] == 0) { bVar3 = true; local_c = local_c + 1; } else if (((&DAT_00466f8a)[(short)(&DAT_0046711e)[sVar9 * 0x14 + (int)sVar4] * 10] == 2) && ((&DAT_00466f92)[(short)(&DAT_0046711e)[sVar9 * 0x14 + (int)sVar4] * 10] == 0)) { bVar8 = true; } if (((&DAT_00466f8a)[(short)(&DAT_0046711e)[sVar9 * 0x14 + (int)sVar4] * 10] != 3) && ((&DAT_00466f8a)[(short)(&DAT_0046711e)[sVar9 * 0x14 + (int)sVar4] * 10] != 0)) { bVar11 = true; } pvVar6 = (void *)((int)pvVar6 + 1); } if ((!bVar3) && (!bVar8)) { local_e = 1; } if ((!bVar11) && (0 < local_c)) { bVar3 = false; pvVar6 = (void *)0x0; bVar8 = false; while (sVar4 = (short)pvVar6, (&DAT_0046711e)[sVar9 * 0x14 + (int)sVar4] != in_stack_00000004) { bVar11 = bVar8; if ((&DAT_00466f8a)[(short)(&DAT_0046711e)[sVar9 * 0x14 + (int)sVar4] * 10] == 0) { if (sVar4 == 0) { bVar11 = (&DAT_00466abc)[(short)(&DAT_0046711e)[sVar9 * 0x14] * 0x27] == in_stack_00000004; } else { bVar11 = (&DAT_00466abc)[(short)(&DAT_0046711e)[sVar9 * 0x14 + (int)sVar4] * 0x27] == (&DAT_0046711c)[sVar9 * 0x14 + (int)sVar4]; } if (bVar11 != bVar8) { bVar3 = true; } } pvVar6 = (void *)((int)pvVar6 + 1); bVar8 = bVar11; } if (!bVar3) { local_e = 1; } } } uVar5 = CONCAT22((short)((uint)pvVar6 >> 0x10),local_e); } return uVar5; } void FUN_0041fdcc(void) { uint uVar1; short sVar2; sVar2 = 0; do { if (((&DAT_00466f90)[sVar2 * 10] != 0) && ((&DAT_00466f8a)[sVar2 * 10] == 0)) { uVar1 = FUN_0041f93f(); (&DAT_00466a8a)[sVar2] = (short)uVar1; } sVar2 = sVar2 + 1; } while (sVar2 < 0x10); return; } // WARNING: Type propagation algorithm not settling undefined4 FUN_0041fe0c(void) { short sVar1; ushort uVar2; bool bVar3; bool bVar4; bool bVar5; short sVar6; undefined4 uVar7; short sVar8; uint uVar9; short sVar10; bool bVar11; short in_stack_00000004; short local_68 [19]; ushort auStack_42 [22]; short local_16; ushort local_14; short local_10; short local_c; short local_a; short local_8; short local_6; local_8 = 0; if (((&DAT_00466abc)[in_stack_00000004 * 0x27] == 99) || ((&DAT_00466ad6)[in_stack_00000004 * 0x27] == 99)) { uVar7 = 0; } else { FUN_0041fdcc(); DAT_0046711c = 0; Memset(&DAT_0046711e,0xff,400); while (local_8 == 0) { Memset(local_68,0xff,0x28); Memset(auStack_42 + 1,0xff,0x28); local_68[0] = (&DAT_00466abc)[in_stack_00000004 * 0x27]; auStack_42[1] = (&DAT_00466abe)[in_stack_00000004 * 0x27]; uVar9 = (uint)auStack_42[1]; sVar6 = 1; local_6 = 0; sVar8 = local_68[0]; while (local_6 == 0) { do { do { uVar9 = (int)(short)((short)uVar9 + 1) % 3; sVar10 = (short)uVar9; uVar7 = FUN_0041f830(); } while ((short)uVar7 != 0); local_a = 0; if ((&DAT_00466abc)[sVar8 * 0x27 + sVar10 * 0xd] == in_stack_00000004) { if ((&DAT_00466abe)[sVar8 * 0x27 + sVar10 * 0xd] == 0) { local_6 = 1; local_8 = 1; } else { uVar7 = FUN_0041f88c(); if ((short)uVar7 == 0) { FUN_0041f8e2(); local_6 = 1; } else { local_a = 1; } } } } while (local_a != 0); if (((sVar6 < 1) || (sVar8 != local_68[sVar6 + -1])) || (sVar10 != auStack_42[sVar6])) { sVar1 = (&DAT_00466abc)[sVar8 * 0x27 + sVar10 * 0xd]; uVar2 = (&DAT_00466abe)[sVar8 * 0x27 + sVar10 * 0xd]; uVar9 = (uint)uVar2; uVar7 = FUN_0041f800(); sVar8 = sVar1; if ((short)uVar7 == 0) { local_68[sVar6] = sVar1; auStack_42[(int)sVar6 + 1] = uVar2; sVar6 = sVar6 + 1; } } else { sVar1 = (&DAT_00466abc)[sVar8 * 0x27 + sVar10 * 0xd]; uVar9 = (uint)(ushort)(&DAT_00466abe)[sVar8 * 0x27 + sVar10 * 0xd]; sVar6 = sVar6 + -1; local_68[sVar6] = 0; auStack_42[(int)sVar6 + 1] = 0; sVar8 = sVar1; } } } local_10 = 0; local_c = 0; local_16 = 0; Memset(&DAT_00466a6a,0,0x20); (&DAT_00466a6a)[in_stack_00000004] = 1; for (sVar8 = 0; sVar8 < DAT_0046711c; sVar8 = sVar8 + 1) { bVar4 = false; bVar5 = false; bVar3 = false; sVar6 = 0; while ((&DAT_0046711e)[sVar8 * 0x14 + (int)sVar6] != in_stack_00000004) { if ((&DAT_00466a6a)[(short)(&DAT_0046711e)[sVar8 * 0x14 + (int)sVar6]] == 0) { (&DAT_00466a6a)[(short)(&DAT_0046711e)[sVar8 * 0x14 + (int)sVar6]] = 1; } if (((&DAT_00466f8a)[(short)(&DAT_0046711e)[sVar8 * 0x14 + (int)sVar6] * 10] == 0) && ((&DAT_00466a8a)[(short)(&DAT_0046711e)[sVar8 * 0x14 + (int)sVar6]] == 0)) { bVar4 = true; if (sVar6 == 0) { bVar11 = (&DAT_00466abc)[(short)(&DAT_0046711e)[sVar8 * 0x14] * 0x27] != in_stack_00000004; } else { bVar11 = (&DAT_00466abc)[(short)(&DAT_0046711e)[sVar8 * 0x14 + (int)sVar6] * 0x27] != (&DAT_0046711c)[sVar8 * 0x14 + (int)sVar6]; } if (local_16 == 0) { local_16 = 1; local_14 = (ushort)bVar11; } else if (bVar11 != local_14) { local_10 = 1; } } else if (((&DAT_00466f8a)[(short)(&DAT_0046711e)[sVar8 * 0x14 + (int)sVar6] * 10] == 2) && ((&DAT_00466f92)[(short)(&DAT_0046711e)[sVar8 * 0x14 + (int)sVar6] * 10] == 0)) { bVar3 = true; } else if ((&DAT_00466f8a)[(short)(&DAT_0046711e)[sVar8 * 0x14 + (int)sVar6] * 10] == 1) { bVar5 = true; } sVar6 = sVar6 + 1; } if (!bVar3) { if (bVar4) { local_c = 1; } else if (!bVar5) { local_10 = 1; } } } if ((local_10 == 0) && (local_c != 0)) { uVar7 = 1; } else { uVar7 = 0; } } return uVar7; } void FUN_004202ac(undefined4 param_1,undefined4 param_2,uint param_3,short param_4,short param_5) { undefined4 uVar1; undefined4 uVar2; if (param_5 != 0) { FUN_00412d0c(param_4 * 5,param_2,param_3,(&DAT_00466f96)[param_4 * 5]); uVar2 = 0x2718; uVar1 = FUN_00412ac4(0x2718); (&DAT_00466f96)[param_4 * 5] = uVar1; FUN_00412e70(param_4 * 5,param_4 * 5,uVar2,(&DAT_00466f96)[param_4 * 5]); FUN_0041395c((&DAT_00466f96)[param_4 * 5], CONCAT22((short)((uint)(param_4 * 5) >> 0x10),(&DAT_00466f8c)[param_4 * 10]), CONCAT22((short)((uint)(param_4 * 5) >> 0x10),(&DAT_00466f8e)[param_4 * 10]),10); return; } FUN_00412d0c(param_4 * 5,param_2,param_3,(&DAT_00466f96)[param_4 * 5]); uVar1 = FUN_00412ac4(0x2714); (&DAT_00466f96)[param_4 * 5] = uVar1; return; } void FUN_0042035e(void) { int iVar1; int iVar2; undefined4 uVar3; undefined4 extraout_ECX; undefined4 extraout_EDX; short sVar4; short sVar5; sVar4 = 0; do { if ((&DAT_00466f90)[sVar4 * 10] != 0) { sVar5 = 0; do { iVar1 = (int)sVar4; iVar2 = (int)sVar5; if ((((&DAT_00466abc)[iVar2 * 0xd + iVar1 * 0x27] != 99) && ((&DAT_00466ac0)[iVar2 * 0xd + iVar1 * 0x27] != 0)) && (uVar3 = FUN_004204e1(), (short)uVar3 != 0)) { (&DAT_00466abc) [(short)(&DAT_00466abc)[iVar2 * 0xd + iVar1 * 0x27] * 0x27 + (short)(&DAT_00466abe)[iVar2 * 0xd + iVar1 * 0x27] * 0xd] = 99; (&DAT_00466ac0) [(short)(&DAT_00466abc)[iVar2 * 0xd + iVar1 * 0x27] * 0x27 + (short)(&DAT_00466abe)[iVar2 * 0xd + iVar1 * 0x27] * 0xd] = 0; (&DAT_00466abc)[iVar2 * 0xd + iVar1 * 0x27] = 99; FUN_004465a5(0x4a74,5,0); uVar3 = FUN_00421f12(); FUN_0043b4e2(uVar3,extraout_EDX,extraout_ECX,DAT_00467454); DAT_00466a64 = 4; DAT_0046153c = 2; FUN_004212fe(); return; } sVar5 = sVar5 + 1; } while (sVar5 < 3); } sVar4 = sVar4 + 1; if (0xf < sVar4) { return; } } while( true ); } undefined4 FUN_004204e1(void) { undefined4 uVar1; short in_stack_0000000c; short in_stack_00000010; short in_stack_00000014; short in_stack_00000018; if (in_stack_0000000c < in_stack_00000014) { uVar1 = FUN_004212b7(); if ((short)uVar1 != 0) { return CONCAT22((short)((uint)uVar1 >> 0x10),1); } } else if ((in_stack_00000014 < in_stack_0000000c) && (uVar1 = FUN_004212b7(), (short)uVar1 != 0)) { return CONCAT22((short)((uint)uVar1 >> 0x10),1); } if (in_stack_00000010 < in_stack_00000018) { uVar1 = FUN_004212b7(); if ((short)uVar1 != 0) { return CONCAT22((short)((uint)uVar1 >> 0x10),1); } } else if ((in_stack_00000018 < in_stack_00000010) && (uVar1 = FUN_004212b7(), (short)uVar1 != 0)) { return CONCAT22((short)((uint)uVar1 >> 0x10),1); } return 0; } void FUN_004205ca(void) { int iVar1; short sVar2; short sVar3; undefined4 *puVar4; undefined4 *puVar5; byte bVar6; short in_stack_00000004; undefined4 local_20 [4]; short sStack_e; short sStack_a; bVar6 = 0; if (in_stack_00000004 != 0) { FUN_004207ae(); } sVar3 = 0; do { if ((&DAT_00466f90)[sVar3 * 10] != 0) { sVar2 = 0; do { puVar4 = (undefined4 *)((int)&DAT_00466aaa + sVar2 * 0x1a + sVar3 * 0x4e); puVar5 = local_20; for (iVar1 = 6; iVar1 != 0; iVar1 = iVar1 + -1) { *puVar5 = *puVar4; puVar4 = puVar4 + (uint)bVar6 * -2 + 1; puVar5 = puVar5 + (uint)bVar6 * -2 + 1; } *(undefined2 *)puVar5 = *(undefined2 *)puVar4; if ((sStack_e != 99) && (sStack_a != 0)) { if (sStack_a == 1) { FUN_0041b86a(); } if (in_stack_00000004 != 0) { FUN_004206fb(); FUN_004206fb(); } } sVar2 = sVar2 + 1; } while (sVar2 < 3); } sVar3 = sVar3 + 1; } while (sVar3 < 0x10); return; } void FUN_004206fb(void) { short sVar1; short sVar2; short sVar3; short sVar4; short sVar5; undefined4 unaff_EDI; short in_stack_00000004; short in_stack_00000008; sVar5 = 0; do { if ((&DAT_004672ae)[sVar5 * 3] != 0) { (&DAT_004672ae)[sVar5 * 3] = 0; break; } sVar5 = sVar5 + 1; } while (sVar5 < 0x32); sVar1 = *(short *)(&DAT_00466ab6 + in_stack_00000004 * 0x4e + in_stack_00000008 * 0x1a); sVar2 = (&DAT_00466f8c)[in_stack_00000004 * 10]; sVar3 = *(short *)(&DAT_00466ab8 + in_stack_00000008 * 0x1a + in_stack_00000004 * 0x4e); sVar4 = (&DAT_00466f8e)[in_stack_00000004 * 10]; FUN_00412e70(); FUN_0041395c(*(undefined4 *)((int)&DAT_004672b0 + sVar5 * 6), CONCAT22((short)((uint)(&DAT_00466ab6 + in_stack_00000004 * 0x4e) >> 0x10), sVar1 + sVar2),CONCAT22((short)((uint)unaff_EDI >> 0x10),sVar3 + sVar4),0xf) ; return; } void FUN_004207ae(void) { short sVar1; sVar1 = 0; do { BigThing6Eh::processNodes_(*(undefined4 *)((int)&DAT_004672b0 + sVar1 * 6)); (&DAT_004672ae)[sVar1 * 3] = 1; sVar1 = sVar1 + 1; } while (sVar1 < 0x32); return; } undefined4 FUN_004207dd(void) { undefined4 uVar1; undefined2 extraout_var; uint extraout_ECX; undefined4 extraout_EDX; short in_stack_00000004; undefined4 uVar2; uVar1 = FUN_004212b7(); if ((short)uVar1 == 0) { uVar1 = 0; } else { if ((&DAT_00466f92)[in_stack_00000004 * 10] == 0) { FUN_00412d0c(in_stack_00000004 * 5,extraout_EDX,extraout_ECX, (&DAT_00466f96)[in_stack_00000004 * 5]); uVar2 = 0x2719; uVar1 = FUN_00412ac4(0x2719); (&DAT_00466f96)[in_stack_00000004 * 5] = uVar1; (&DAT_00466f92)[in_stack_00000004 * 10] = 1; } else { FUN_00412d0c(in_stack_00000004 * 5,extraout_EDX,extraout_ECX, (&DAT_00466f96)[in_stack_00000004 * 5]); uVar2 = 0x2715; uVar1 = FUN_00412ac4(0x2715); (&DAT_00466f96)[in_stack_00000004 * 5] = uVar1; (&DAT_00466f92)[in_stack_00000004 * 10] = 0; } FUN_004212fe(in_stack_00000004 * 5,in_stack_00000004 * 5,uVar2,1); uVar1 = CONCAT22(extraout_var,1); } return uVar1; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_004208c9(void) { int iVar1; int iVar2; uint uVar3; undefined4 extraout_ECX; int iVar4; undefined4 extraout_EDX; short in_stack_00000004; if ((&DAT_00466f94)[in_stack_00000004 * 10] == 0) { iVar4 = 0; do { iVar1 = (int)in_stack_00000004; iVar2 = (int)(short)iVar4; uVar3 = iVar2 * 0x1a; if ((&DAT_00466abc)[iVar2 * 0xd + iVar1 * 0x27] != 99) { if (((&DAT_00466ac0)[iVar2 * 0xd + iVar1 * 0x27] != 3) && ((&DAT_00466ac0) [(short)(&DAT_00466abc)[iVar2 * 0xd + iVar1 * 0x27] * 0x27 + (short)(&DAT_00466abe)[iVar2 * 0xd + iVar1 * 0x27] * 0xd] != 3)) { _DAT_00466a5c = _DAT_00466a5c + 1; } (&DAT_00466ac0) [(short)(&DAT_00466abc)[iVar2 * 0xd + iVar1 * 0x27] * 0x27 + (short)(&DAT_00466abe)[iVar2 * 0xd + iVar1 * 0x27] * 0xd] = 0; uVar3 = (short)(&DAT_00466abe)[iVar2 * 0xd + iVar1 * 0x27] * 0xd; (&DAT_00466abc) [(short)(&DAT_00466abc)[iVar2 * 0xd + iVar1 * 0x27] * 0x27 + (short)(&DAT_00466abe)[iVar2 * 0xd + iVar1 * 0x27] * 0xd] = 99; (&DAT_00466ac0)[iVar2 * 0xd + iVar1 * 0x27] = 0; (&DAT_00466abc)[iVar2 * 0xd + iVar1 * 0x27] = 99; } iVar4 = iVar4 + 1; } while ((short)iVar4 < 3); (&DAT_00466f90)[in_stack_00000004 * 10] = 0; if ((&DAT_00466f8a)[in_stack_00000004 * 10] == 2) { (&DAT_00466f92)[in_stack_00000004 * 10] = 0; } if ((&DAT_00466f8a)[in_stack_00000004 * 10] == 1) { (&DAT_00466f92)[in_stack_00000004 * 10] = 0; } FUN_00412d0c(in_stack_00000004 * 5,iVar4,uVar3,(&DAT_00466f96)[in_stack_00000004 * 5]); DAT_0046153c = 2; FUN_00421f12(); DAT_00466a64 = (&DAT_00466f8a)[in_stack_00000004 * 10]; FUN_0043b4e2((int)DAT_00466a64,extraout_EDX,extraout_ECX,(&DAT_00467444)[DAT_00466a64]); FUN_004465a5(0x1f73,5,0); FUN_004212fe(); FUN_0041f6da(); FUN_0041f635(); } return; } void FUN_00420a36(void) { int iVar1; undefined4 extraout_ECX; undefined4 extraout_EDX; short in_stack_00000004; DAT_00466a64 = in_stack_00000004; DAT_0046153c = 2; FUN_00421f12(); FUN_0043b4e2((int)DAT_00466a64,extraout_EDX,extraout_ECX,(&DAT_00467444)[DAT_00466a64]); iVar1 = (int)DAT_00466a64; (&DAT_00466a54)[iVar1] = (&DAT_00466a54)[iVar1] + -1; if ((&DAT_00466a54)[iVar1] == 0) { BigThing6Eh::processNodes_((&DAT_004673e0)[DAT_00466a64]); } FUN_0041b115(); FUN_0041f6da(); FUN_0041f635(); FUN_004465a5(0x1f73,5,0); return; } void FUN_00420ab7(void) { short sVar1; ushort uVar2; ushort uVar3; ushort uVar4; int iVar5; uint extraout_ECX; uint extraout_ECX_00; uint uVar6; uint uVar7; uint extraout_EDX; short sVar8; uVar2 = DAT_00466a4e; sVar1 = DAT_00466a4c; uVar3 = FUN_00413774((&DAT_004673e0)[DAT_00466a64],0); uVar4 = FUN_00413794((&DAT_004673e0)[DAT_00466a64],0); if ((((0x99 < sVar1) && ((int)sVar1 + (int)(short)uVar3 < 499)) && (0x25 < (short)uVar2)) && (uVar7 = (uint)(short)uVar4, (int)((int)(short)uVar2 + uVar7) < 0x127)) { sVar8 = 0; uVar6 = extraout_ECX; do { iVar5 = sVar8 * 5; if ((&DAT_00466f90)[sVar8 * 10] != 0) { FUN_00413774((&DAT_00466f96)[sVar8 * 5],0); FUN_00413794((&DAT_00466f96)[sVar8 * 5],0); iVar5 = FUN_00420e7b(); uVar6 = extraout_ECX_00; uVar7 = extraout_EDX; if ((short)iVar5 != 0) { return; } } sVar8 = sVar8 + 1; } while (sVar8 < 0x10); DAT_0046153c = 0; FUN_004213fd(iVar5,uVar7,uVar6,sVar1,uVar2); FUN_004212fe(); FUN_004465a5(0x4a74,5,0); DAT_00466a64 = 99; FUN_0041b115(); FUN_00421f1f(); } return; } void FUN_00420c31(void) { undefined4 uVar1; short sVar2; short sVar3; short in_stack_00000004; short local_6; local_6 = 0; do { if ((&DAT_00466abc)[in_stack_00000004 * 0x27 + local_6 * 0xd] == 99) { sVar2 = 0; do { if (((&DAT_00466f90)[sVar2 * 10] != 0) && (in_stack_00000004 != sVar2)) { sVar3 = 0; do { if ((&DAT_00466abc)[sVar2 * 0x27 + sVar3 * 0xd] == 99) { uVar1 = FUN_00420e7b(); if ((short)uVar1 != 0) { (&DAT_00466abc)[in_stack_00000004 * 0x27 + local_6 * 0xd] = sVar2; (&DAT_00466abe)[in_stack_00000004 * 0x27 + local_6 * 0xd] = sVar3; (&DAT_00466ac0)[in_stack_00000004 * 0x27 + local_6 * 0xd] = 3; (&DAT_00466abc)[sVar2 * 0x27 + sVar3 * 0xd] = in_stack_00000004; (&DAT_00466abe)[sVar2 * 0x27 + sVar3 * 0xd] = local_6; (&DAT_00466ac0)[sVar2 * 0x27 + sVar3 * 0xd] = 0; } } sVar3 = sVar3 + 1; } while (sVar3 < 3); } sVar2 = sVar2 + 1; } while (sVar2 < 0x10); } local_6 = local_6 + 1; } while (local_6 < 3); return; } undefined4 FUN_00420e7b(void) { bool bVar1; bool bVar2; int iVar3; undefined4 uVar4; short in_stack_00000004; short in_stack_00000008; short in_stack_0000000c; short in_stack_00000010; short in_stack_00000014; short in_stack_00000018; short in_stack_0000001c; short in_stack_00000020; bVar1 = false; if (in_stack_0000001c < in_stack_0000000c) { if ((in_stack_00000004 <= in_stack_00000014) && ((int)in_stack_00000014 < (int)in_stack_00000004 + (int)in_stack_0000000c)) { bVar1 = true; } if (((int)in_stack_00000004 < (int)in_stack_00000014 + (int)in_stack_0000001c) && ((int)in_stack_00000014 + (int)in_stack_0000001c <= (int)in_stack_00000004 + (int)in_stack_0000000c)) { bVar1 = true; } } else { if ((in_stack_00000014 <= in_stack_00000004) && ((int)in_stack_00000004 < (int)in_stack_00000014 + (int)in_stack_0000001c)) { bVar1 = true; } if (((int)in_stack_00000014 < (int)in_stack_00000004 + (int)in_stack_0000000c) && ((int)in_stack_00000004 + (int)in_stack_0000000c <= (int)in_stack_00000014 + (int)in_stack_0000001c)) { bVar1 = true; } } bVar2 = false; if (in_stack_00000020 < in_stack_00000010) { if ((in_stack_00000008 <= in_stack_00000018) && ((int)in_stack_00000018 < (int)in_stack_00000008 + (int)in_stack_00000010)) { bVar2 = true; } iVar3 = (int)in_stack_00000018 + (int)in_stack_00000020; if ((in_stack_00000008 < iVar3) && (iVar3 = (int)in_stack_00000018 + (int)in_stack_00000020, iVar3 <= (int)in_stack_00000008 + (int)in_stack_00000010)) { bVar2 = true; } } else { if ((in_stack_00000018 <= in_stack_00000008) && ((int)in_stack_00000008 < (int)in_stack_00000018 + (int)in_stack_00000020)) { bVar2 = true; } iVar3 = (int)in_stack_00000008 + (int)in_stack_00000010; if ((in_stack_00000018 < iVar3) && (iVar3 = (int)in_stack_00000008 + (int)in_stack_00000010, iVar3 <= (int)in_stack_00000018 + (int)in_stack_00000020)) { bVar2 = true; } } if ((bVar1) && (bVar2)) { uVar4 = CONCAT22((short)((uint)iVar3 >> 0x10),1); } else { uVar4 = 0; } return uVar4; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_00420feb(undefined4 param_1,undefined4 param_2,undefined4 param_3) { int iVar1; undefined4 extraout_ECX; undefined4 extraout_EDX; short sVar2; short sVar3; undefined4 *puVar4; undefined4 *puVar5; byte bVar6; undefined4 local_24 [4]; short local_12; short local_a; short local_8; undefined2 local_6; bVar6 = 0; local_8 = DAT_00466a4c + 0x37; local_a = DAT_00466a4e + 0xf; sVar3 = 0; do { iVar1 = sVar3 * 5; if ((&DAT_00466f90)[sVar3 * 10] != 0) { local_6 = (&DAT_00466f8e)[sVar3 * 10]; sVar2 = 0; do { puVar4 = (undefined4 *)((int)&DAT_00466aaa + sVar2 * 0x1a + sVar3 * 0x4e); puVar5 = local_24; for (iVar1 = 6; iVar1 != 0; iVar1 = iVar1 + -1) { *puVar5 = *puVar4; puVar4 = puVar4 + (uint)bVar6 * -2 + 1; puVar5 = puVar5 + (uint)bVar6 * -2 + 1; } *(undefined2 *)puVar5 = *(undefined2 *)puVar4; iVar1 = FUN_004212b7(); if ((short)iVar1 != 0) { if (_DAT_00466a5e != 0) { return; } if (local_12 != 99) { return; } FUN_0043b4e2(iVar1,extraout_EDX,extraout_ECX,DAT_00467458); _DAT_00466a5e = 1; if (DAT_0046153c != 5) { _DAT_00466a5e = 1; return; } FUN_0043b318(); return; } sVar2 = sVar2 + 1; param_3 = extraout_ECX; param_2 = extraout_EDX; } while (sVar2 < 3); } sVar3 = sVar3 + 1; if (0xf < sVar3) { if (_DAT_00466a5e != 0) { FUN_0043b4e2(iVar1,param_2,param_3,DAT_00467454); _DAT_00466a5e = 0; if (DAT_0046153c == 5) { FUN_0043b318(); } } return; } } while( true ); } undefined4 FUN_0042114d(void) { undefined4 uVar1; int iVar2; short sVar3; short sVar4; undefined4 *puVar5; undefined4 *puVar6; byte bVar7; undefined4 local_24 [6]; short local_a; short local_8; undefined2 local_6; bVar7 = 0; local_8 = DAT_00466a4c + 0x37; local_a = DAT_00466a4e + 0xf; sVar3 = 0; do { if (((&DAT_00466f90)[sVar3 * 10] != 0) && (sVar3 != DAT_00466a60)) { local_6 = (&DAT_00466f8e)[sVar3 * 10]; sVar4 = 0; do { puVar5 = (undefined4 *)((int)&DAT_00466aaa + sVar4 * 0x1a + sVar3 * 0x4e); puVar6 = local_24; for (iVar2 = 6; iVar2 != 0; iVar2 = iVar2 + -1) { *puVar6 = *puVar5; puVar5 = puVar5 + (uint)bVar7 * -2 + 1; puVar6 = puVar6 + (uint)bVar7 * -2 + 1; } *(undefined2 *)puVar6 = *(undefined2 *)puVar5; uVar1 = FUN_004212b7(); if (((short)uVar1 != 0) && ((&DAT_00466abc)[sVar3 * 0x27 + sVar4 * 0xd] == 99)) { DAT_00461538 = (&DAT_00466ab2)[sVar3 * 0x27 + sVar4 * 0xd] + (&DAT_00466f8c)[sVar3 * 10]; DAT_0046153a = (&DAT_00466ab4)[sVar3 * 0x27 + sVar4 * 0xd] + (&DAT_00466f8e)[sVar3 * 10]; DAT_00466a60 = sVar3; DAT_00466a62 = sVar4; return CONCAT22((short)((uint)(sVar4 * 0xd) >> 0x10),1); } sVar4 = sVar4 + 1; } while (sVar4 < 3); } sVar3 = sVar3 + 1; if (0xf < sVar3) { return 0; } } while( true ); } undefined4 FUN_004212b7(void) { short in_stack_00000004; short in_stack_00000008; short in_stack_0000000c; short in_stack_00000010; short in_stack_00000014; short in_stack_00000018; if ((((in_stack_0000000c <= in_stack_00000004) && ((int)in_stack_00000004 < (int)in_stack_0000000c + (int)in_stack_00000014)) && (in_stack_00000010 <= in_stack_00000008)) && ((int)in_stack_00000008 < (int)in_stack_00000010 + (int)in_stack_00000018)) { return CONCAT22((short)((uint)((int)in_stack_00000010 + (int)in_stack_00000018) >> 0x10),1); } return 0; } void FUN_004212fe(void) { undefined4 uVar1; undefined4 extraout_EDX; short sVar2; uint uVar3; short in_stack_00000004; uint uVar4; FUN_00430de8(0x9a,0x24,0x15a,0x104); if (in_stack_00000004 == 0) { sVar2 = 0; do { if ((&DAT_00466f90)[sVar2 * 10] != 0) { FUN_00413e20(); } sVar2 = sVar2 + 1; } while (sVar2 < 0x10); } else { uVar3 = 0; do { sVar2 = (short)uVar3; if ((&DAT_00466f90)[sVar2 * 10] != 0) { if ((&DAT_00466f8a)[sVar2 * 10] == 1) { uVar4 = uVar3; uVar1 = FUN_0041fe0c(); FUN_004202ac(uVar1,extraout_EDX,uVar4,sVar2,(short)uVar1); } BigThing6Eh::processNodes_((&DAT_00466f96)[sVar2 * 5]); FUN_00412e70(); FUN_0041395c((&DAT_00466f96)[sVar2 * 5], CONCAT22((short)((uint)(sVar2 * 5) >> 0x10),(&DAT_00466f8c)[sVar2 * 10]), CONCAT22((short)((uint)(sVar2 * 5) >> 0x10),(&DAT_00466f8e)[sVar2 * 10]),10); } uVar3 = uVar3 + 1; } while ((short)uVar3 < 0x10); } FUN_004205ca(); FUN_00430abc(0x9a,0x24,0x15a,0x104); return; } void FUN_004213fd(undefined4 param_1,uint param_2,uint param_3,undefined2 param_4,ushort param_5) { undefined4 uVar1; short sVar2; int iVar3; iVar3 = 0; do { if ((&DAT_00466f90)[(short)iVar3 * 10] == 0) break; iVar3 = iVar3 + 1; } while ((short)iVar3 < 0x10); sVar2 = (short)iVar3; (&DAT_00466f8a)[sVar2 * 10] = DAT_00466a64; (&DAT_00466f90)[sVar2 * 10] = 1; (&DAT_00466f8c)[sVar2 * 10] = param_4; (&DAT_00466f8e)[sVar2 * 10] = param_5; uVar1 = FUN_00412ac4(DAT_00466a64 + 0x2713); (&DAT_00466f96)[sVar2 * 5] = uVar1; FUN_00421490(iVar3,DAT_00466a64); FUN_00420c31(); return; } void __cdecl FUN_00421490(undefined4 param_1,short param_2) { short sVar1; sVar1 = 0; do { (&DAT_00466abc)[(short)param_1 * 0x27 + sVar1 * 0xd] = 99; (&DAT_00466abe)[(short)param_1 * 0x27 + sVar1 * 0xd] = 99; *(undefined2 *)(&DAT_00466ac2 + sVar1 * 0x1a + (short)param_1 * 0x4e) = 0; (&DAT_00466ac0)[(short)param_1 * 0x27 + sVar1 * 0xd] = 1; sVar1 = sVar1 + 1; } while (sVar1 < 3); if (param_2 == 0) { *(undefined2 *)((int)&DAT_00466aaa + (short)param_1 * 0x4e) = 0xe; *(undefined2 *)((int)&DAT_00466aaa + (short)param_1 * 0x4e + 2) = 0; *(undefined2 *)(&DAT_00466aae + (short)param_1 * 0x4e) = 0xd; *(undefined2 *)(&DAT_00466ab0 + (short)param_1 * 0x4e) = 0x13; (&DAT_00466ab2)[(short)param_1 * 0x27] = 0x16; (&DAT_00466ab4)[(short)param_1 * 0x27] = 0; *(undefined2 *)(&DAT_00466ab6 + (short)param_1 * 0x4e) = 0x10; *(undefined2 *)(&DAT_00466ab8 + (short)param_1 * 0x4e) = 0xffff; (&DAT_00466aba)[(short)param_1 * 0x27] = 0xc; *(undefined2 *)(&DAT_00466ac4 + (short)param_1 * 0x4e) = 0xe; *(undefined2 *)(&DAT_00466ac6 + (short)param_1 * 0x4e) = 0x66; *(undefined2 *)(&DAT_00466ac8 + (short)param_1 * 0x4e) = 0xd; *(undefined2 *)(&DAT_00466aca + (short)param_1 * 0x4e) = 0x13; *(undefined2 *)(&DAT_00466acc + (short)param_1 * 0x4e) = 0x16; *(undefined2 *)(&DAT_00466ace + (short)param_1 * 0x4e) = 0x73; *(undefined2 *)(&DAT_00466ad0 + (short)param_1 * 0x4e) = 0x10; *(undefined2 *)(&DAT_00466ad2 + (short)param_1 * 0x4e) = 0x68; *(undefined2 *)(&DAT_00466ad4 + (short)param_1 * 0x4e) = 0xfff4; } else if (param_2 == 1) { *(undefined2 *)((int)&DAT_00466aaa + (short)param_1 * 0x4e) = 0; *(undefined2 *)((int)&DAT_00466aaa + (short)param_1 * 0x4e + 2) = 0x45; *(undefined2 *)(&DAT_00466aae + (short)param_1 * 0x4e) = 0xd; *(undefined2 *)(&DAT_00466ab0 + (short)param_1 * 0x4e) = 0x14; (&DAT_00466ab2)[(short)param_1 * 0x27] = 8; (&DAT_00466ab4)[(short)param_1 * 0x27] = 0x54; *(undefined2 *)(&DAT_00466ab6 + (short)param_1 * 0x4e) = 2; *(undefined2 *)(&DAT_00466ab8 + (short)param_1 * 0x4e) = 0x47; (&DAT_00466aba)[(short)param_1 * 0x27] = 0xfff4; *(undefined2 *)(&DAT_00466ac4 + (short)param_1 * 0x4e) = 0xb; *(undefined2 *)(&DAT_00466ac6 + (short)param_1 * 0x4e) = 0x40; *(undefined2 *)(&DAT_00466ac8 + (short)param_1 * 0x4e) = 0xd; *(undefined2 *)(&DAT_00466aca + (short)param_1 * 0x4e) = 0x14; *(undefined2 *)(&DAT_00466acc + (short)param_1 * 0x4e) = 0x13; *(undefined2 *)(&DAT_00466ace + (short)param_1 * 0x4e) = 0x4b; *(undefined2 *)(&DAT_00466ad0 + (short)param_1 * 0x4e) = 0xd; *(undefined2 *)(&DAT_00466ad2 + (short)param_1 * 0x4e) = 0x3f; *(undefined2 *)(&DAT_00466ad4 + (short)param_1 * 0x4e) = 0xfff4; } else if (param_2 == 2) { *(undefined2 *)((int)&DAT_00466aaa + (short)param_1 * 0x4e) = 8; *(undefined2 *)((int)&DAT_00466aaa + (short)param_1 * 0x4e + 2) = 0; *(undefined2 *)(&DAT_00466aae + (short)param_1 * 0x4e) = 0xe; *(undefined2 *)(&DAT_00466ab0 + (short)param_1 * 0x4e) = 0x17; (&DAT_00466ab2)[(short)param_1 * 0x27] = 0x12; (&DAT_00466ab4)[(short)param_1 * 0x27] = 0; *(undefined2 *)(&DAT_00466ab6 + (short)param_1 * 0x4e) = 0xb; *(undefined2 *)(&DAT_00466ab8 + (short)param_1 * 0x4e) = 0xfffc; (&DAT_00466aba)[(short)param_1 * 0x27] = 0xc; *(undefined2 *)(&DAT_00466ac4 + (short)param_1 * 0x4e) = 8; *(undefined2 *)(&DAT_00466ac6 + (short)param_1 * 0x4e) = 0x5c; *(undefined2 *)(&DAT_00466ac8 + (short)param_1 * 0x4e) = 0x10; *(undefined2 *)(&DAT_00466aca + (short)param_1 * 0x4e) = 0x17; *(undefined2 *)(&DAT_00466acc + (short)param_1 * 0x4e) = 0x12; *(undefined2 *)(&DAT_00466ace + (short)param_1 * 0x4e) = 0x6d; *(undefined2 *)(&DAT_00466ad0 + (short)param_1 * 0x4e) = 0xb; *(undefined2 *)(&DAT_00466ad2 + (short)param_1 * 0x4e) = 0x62; *(undefined2 *)(&DAT_00466ad4 + (short)param_1 * 0x4e) = 0xfff4; } else if (param_2 == 3) { *(undefined2 *)((int)&DAT_00466aaa + (short)param_1 * 0x4e) = 0xfffd; *(undefined2 *)((int)&DAT_00466aaa + (short)param_1 * 0x4e + 2) = 2; *(undefined2 *)(&DAT_00466aae + (short)param_1 * 0x4e) = 0xd; *(undefined2 *)(&DAT_00466ab0 + (short)param_1 * 0x4e) = 0xf; (&DAT_00466ab2)[(short)param_1 * 0x27] = 3; (&DAT_00466ab4)[(short)param_1 * 0x27] = 0; *(undefined2 *)(&DAT_00466ab6 + (short)param_1 * 0x4e) = 0xfffe; *(undefined2 *)(&DAT_00466ab8 + (short)param_1 * 0x4e) = 0xfffe; (&DAT_00466aba)[(short)param_1 * 0x27] = 0xc; *(undefined2 *)(&DAT_00466ac4 + (short)param_1 * 0x4e) = 10; *(undefined2 *)(&DAT_00466ac6 + (short)param_1 * 0x4e) = 0xc; *(undefined2 *)(&DAT_00466ac8 + (short)param_1 * 0x4e) = 0xd; *(undefined2 *)(&DAT_00466aca + (short)param_1 * 0x4e) = 0xf; *(undefined2 *)(&DAT_00466acc + (short)param_1 * 0x4e) = 0x12; *(undefined2 *)(&DAT_00466ace + (short)param_1 * 0x4e) = 10; *(undefined2 *)(&DAT_00466ad0 + (short)param_1 * 0x4e) = 0xb; *(undefined2 *)(&DAT_00466ad2 + (short)param_1 * 0x4e) = 8; *(undefined2 *)(&DAT_00466ad4 + (short)param_1 * 0x4e) = 0xc; *(undefined2 *)(&DAT_00466ade + (short)param_1 * 0x4e) = 2; *(undefined2 *)(&DAT_00466ae0 + (short)param_1 * 0x4e) = 0x32; *(undefined2 *)(&DAT_00466ae2 + (short)param_1 * 0x4e) = 0xd; *(undefined2 *)(&DAT_00466ae4 + (short)param_1 * 0x4e) = 0xf; *(undefined2 *)(&DAT_00466ae6 + (short)param_1 * 0x4e) = 10; *(undefined2 *)(&DAT_00466ae8 + (short)param_1 * 0x4e) = 0x3b; *(undefined2 *)(&DAT_00466aea + (short)param_1 * 0x4e) = 3; *(undefined2 *)(&DAT_00466aec + (short)param_1 * 0x4e) = 0x30; *(undefined2 *)(&DAT_00466aee + (short)param_1 * 0x4e) = 0xfff4; } return; } undefined4 FUN_0042194c(void) { int iVar1; short sVar2; sVar2 = 0; do { iVar1 = sVar2 * 5; if ((&DAT_00466f8a)[sVar2 * 10] == 1) { iVar1 = FUN_0041fe0c(); if ((short)iVar1 == 0) { return 0; } } sVar2 = sVar2 + 1; } while (sVar2 < 0x10); return CONCAT22((short)((uint)iVar1 >> 0x10),1); } // WARNING: Globals starting with '_' overlap smaller symbols at the same address short FUN_0042197d(void) { undefined4 uVar1; short sVar2; short sVar3; short asStack_10014 [32762]; short asStack_14 [6]; short local_8; short local_6; local_6 = 0; local_8 = 0; sVar3 = 0; if (((DAT_00466a56 == 0) && (_DAT_00466a58 == 0)) && (DAT_00466a54 == 0)) { uVar1 = FUN_0042194c(); if ((short)uVar1 == 0) { local_8 = 0; } else { sVar2 = 0; do { if (((&DAT_00466f8a)[sVar2 * 10] == 0) && ((&DAT_00466f90)[sVar2 * 10] != 0)) { if ((&DAT_00466a6a)[sVar2] == 0) { return 0; } } else if ((&DAT_00466f8a)[sVar2 * 10] == 2) { if ((&DAT_00466a6a)[sVar2] == 0) { return 0; } if ((&DAT_00466f92)[sVar2 * 10] == 0) { return 0; } local_6 = 1; (&DAT_00466f92)[sVar2 * 10] = 0; uVar1 = FUN_0042194c(); if ((short)uVar1 == 0) { local_8 = 1; } (&DAT_00466f92)[sVar2 * 10] = 1; asStack_14[sVar3] = sVar2; sVar3 = sVar3 + 1; } sVar2 = sVar2 + 1; } while (sVar2 < 0x10); if ((1 < sVar3) && (local_8 == 0)) { sVar2 = 0; if (0 < sVar3) { do { (&DAT_00466f92)[asStack_14[sVar2] * 10] = 0; sVar2 = sVar2 + 1; } while (sVar2 < sVar3); } uVar1 = FUN_0042194c(); if ((short)uVar1 == 0) { local_8 = 1; } sVar2 = 0; if (0 < sVar3) { do { (&DAT_00466f92)[asStack_14[sVar2] * 10] = 1; sVar2 = sVar2 + 1; } while (sVar2 < sVar3); } } if (local_6 == 0) { local_8 = 1; } } } else { local_8 = 0; } return local_8; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_00421aef(void) { undefined4 uVar1; uint uVar2; DAT_00466a60 = 99; uVar1 = FUN_0042114d(); if ((short)uVar1 != 0) { if ((&DAT_00466abc)[DAT_00466a60 * 0x27 + DAT_00466a62 * 0xd] == 99) { FUN_0043b318(); DAT_00466a66 = DAT_00466a60; DAT_00466a68 = DAT_00466a62; _DAT_00466a50 = DAT_00466a4c; _DAT_00466a52 = DAT_00466a4e; FUN_004465a5(0x4a74,5,0); FUN_004212fe(); FUN_004206fb(); DAT_0046153c = 5; uVar2 = FUN_00413ee8(); DAT_00466a4a = (undefined2)uVar2; FUN_00412784(); } } return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_00421bc5(void) { void *pvVar1; short sVar2; void *apvStackY_20400 [32762]; void *local_400 [5]; undefined1 local_3ec [1000]; FUN_004465a5(0x1f5c,5,0); FUN_00412dc8(DAT_004673f4); FUN_00412784(); BigThing6Eh::processNodes_(DAT_004673f4); FUN_00412784(); Memset(local_3ec,0,1000); local_400[0] = Resource::Load(DAT_004697a8,&_TEXT3); FUN_0044ffac(); FUN_0045008c(); for (sVar2 = 1; sVar2 < _DAT_0046977c; sVar2 = sVar2 + 1) { pvVar1 = Resource::Load((&DAT_004697a8)[sVar2],&_TEXT4); local_400[sVar2] = pvVar1; FUN_0044ffac(); FUN_0044ffc8(); } FUN_0043f27a(); for (sVar2 = 0; sVar2 < _DAT_0046977c; sVar2 = sVar2 + 1) { FUN_00440695((&DAT_004697a8)[sVar2],&_TEXT5); } return; } void FUN_00421d9b(void) { FUN_0043fef9(DAT_00461536); FUN_0041f6da(); FUN_004212fe(); return; } void FUN_00421dfc(void) { ushort uVar1; undefined2 *puVar2; short sVar3; short in_stack_00000004; if (in_stack_00000004 == 0) { PoolFree(DAT_00466a40); } DAT_00466a44 = 0; sVar3 = 0; do { if ((&DAT_00466a54)[sVar3] != 0) { DAT_00466a44 = DAT_00466a44 + 1; } sVar3 = sVar3 + 1; } while (sVar3 < 5); puVar2 = PoolAlloc((DAT_00466a44 + 1) * 0x10); sVar3 = 0; DAT_00466a40 = puVar2; do { if ((&DAT_00466a54)[sVar3] != 0) { *puVar2 = (&DAT_004614f8)[sVar3 * 6]; puVar2[1] = (&DAT_004614fa)[sVar3 * 6]; uVar1 = FUN_00413774((&DAT_004673e0)[sVar3],0); puVar2[2] = uVar1; uVar1 = FUN_00413794((&DAT_004673e0)[sVar3],0); puVar2[3] = uVar1; *(undefined4 *)(puVar2 + 6) = (&DAT_00467414)[sVar3]; puVar2[5] = 0; puVar2 = puVar2 + 8; } sVar3 = sVar3 + 1; } while (sVar3 < 5); *puVar2 = 0; puVar2[1] = 5; puVar2[3] = 0x17a; puVar2[2] = 0x1ff; *(undefined4 *)(puVar2 + 6) = DAT_00467428; puVar2[5] = 0; FUN_0043b9d2(); return; } void FUN_00421f12(void) { FUN_0043b9d2(); return; } void FUN_00421f1f(void) { FUN_00421dfc(); return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void __cdecl Puzzles::SetParametersForEnergy_(void) { uint in_EAX; undefined2 extraout_var; uint uVar1; uint in_ECX; uint extraout_ECX; undefined4 in_EDX; undefined4 extraout_EDX; undefined4 extraout_EDX_00; undefined4 extraout_EDX_01; uint uVar2; _DAT_0046778c = 0; _DAT_00467794 = 0; FUN_00440113(in_EAX,in_EDX,in_ECX); DAT_00469544 = &LAB_0042613f; FUN_0044c950(); uVar1 = CONCAT22(extraout_var,currentPuzzle); uVar2 = uVar1; SetParametersForEnergy(currentPuzzle); FUN_00431024(uVar1,extraout_EDX,uVar2,15000); DAT_004676fc = FUN_00412ac4(15000); uVar1 = FUN_00413cf4(); uVar2 = DAT_004676fc; uVar1 = FUN_00412d0c(uVar1,extraout_EDX_00,extraout_ECX,DAT_004676fc); FUN_00422b11(uVar1,extraout_EDX_01,uVar2); FUN_004234df(); _DAT_00467606 = 0x10e012c; _DAT_0046760a = 0x64012c; DAT_00467610 = 0x10e012c; DAT_00467614 = 0x64012c; DAT_00467618._0_2_ = DAT_0046760e; FUN_0041029e(); DAT_00467700 = FUN_00412ac4(0x3ad6); FUN_0042633e(); DAT_00469742 = 0x1f73; DAT_00469744 = 0x1f5c; DAT_00469746 = 0x4a49; DAT_00469748 = 0x4a4a; DAT_0046974a = 0x4a4c; DAT_0046974c = 0x4a55; DAT_0046974e = DAT_0046761e; DAT_00469750 = DAT_00467620; DAT_00469752 = DAT_00467622; DAT_00469754 = DAT_00467624; DAT_00469756 = 0x4a78; DAT_00469758 = 0xffff; FUN_0043ff91(&DAT_00469742); DAT_00467774 = FUN_00412ac4(0x3ad7); DAT_004676e4 = FUN_00412ac4(0x3a9f); DAT_00467778 = FUN_00412ac4(0x3a9f); DAT_004676e8 = FUN_00412ac4(0x3aa0); DAT_0046777c = FUN_0043b58e(); DAT_00467780 = FUN_0043b58e(); DAT_00467784 = FUN_0043b58e(); DAT_00467788 = FUN_0043b58e(); *(undefined2 *)(DAT_0046777c + 0x12) = 0; *(undefined2 *)(DAT_00467780 + 0x12) = 0; *(undefined2 *)(DAT_00467784 + 0x12) = 0; FUN_00426714(); FUN_0043139c(); DAT_0046778e = 0x14; DAT_00467790 = 0x14; FUN_00413a54(); return; } void FUN_00422920(void) { short sVar1; char *pcVar2; char *format; short sVar3; int iVar4; short y; char local_484 [256]; char local_384 [640]; char local_104 [250]; short local_a; char *local_8; y = 0x46; pcVar2 = GetWinapiStringAlloc(0x4e3c); Sprintf_(local_484,pcVar2,&DAT_00461590); TurboFree_(pcVar2); iVar4 = 0; do { GetWinapiString(local_384 + iVar4 * 0x50,iVar4 + 0x4e3e); iVar4 = iVar4 + 1; } while (iVar4 < 9); pcVar2 = GetWinapiStringAlloc(0x4e5e); iVar4 = Atoi(pcVar2); local_a = (short)iVar4; TurboFree_(pcVar2); if ((10 < local_a) || (local_a < -10)) { local_a = 0; } Nfnt::LoadWithCache(15000); sVar3 = 0; do { if ((&DAT_00467626)[sVar3 * 0xd] != -1) { sVar1 = FUN_0044ccf5(); Draw::String(15000,local_384 + (short)(&DAT_00467626)[sVar3 * 0xd] * 0x50, (0xee - sVar1) - local_a,y,0); } y = y + 0x41; sVar3 = sVar3 + 1; } while (sVar3 < 4); if (DAT_00461580 == 0) { pcVar2 = GetWinapiStringAlloc(0x4e46); format = GetWinapiStringAlloc(0x4e47); local_8 = GetWinapiStringAlloc(0x4e48); Draw::String(15000,pcVar2,10,0x152,0); Sprintf_(local_104,format,(int)DAT_0046776a); Draw::String(15000,local_104,10,0x166,0); Draw::String(15000,local_8,10,0x17a,0); TurboFree_(pcVar2); TurboFree_(format); TurboFree_(local_8); } else { SetCurrentColor(0); Draw::StringWithCurrentFontAndColor(10,0x148,local_484); } FUN_00425b7d(); Nfnt::Unload(15000); return; } void FUN_00422b11(uint param_1,undefined4 param_2,uint param_3) { undefined4 uVar1; int iVar2; undefined4 uVar3; undefined2 extraout_var; short sVar4; undefined4 unaff_ESI; undefined4 uVar5; undefined4 unaff_EDI; undefined4 uVar6; uVar6 = CONCAT22((short)((uint)unaff_EDI >> 0x10),0x23); uVar5 = CONCAT22((short)((uint)unaff_ESI >> 0x10),0x3b); DAT_004676ec = FUN_00412ac4(0x3aa2); FUN_0041395c(DAT_004676ec,0x13,0xfc,10); DAT_004676f4 = FUN_00412ac4(0x3a9d); FUN_0041395c(DAT_004676f4,0x13,0x1c,10); DAT_004676f0 = FUN_00412ac4(0x3aa1); FUN_0041395c(DAT_004676f0,0x18e,0x143,10); DAT_004676e0 = FUN_00412ac4(0x3aa3); FUN_0041395c(DAT_004676e0,0x14,0x78,10); sVar4 = 0; do { sVar4 = sVar4 + 1; } while (sVar4 < 4); sVar4 = 0; do { if ((&DAT_00467626)[sVar4 * 0xd] != -1) { uVar1 = FUN_00412ac4(0x3acc); (&DAT_0046771c)[sVar4] = uVar1; FUN_0041395c((&DAT_0046771c)[sVar4],0xfa,uVar5,10); iVar2 = PickapuzzleHitTest_(DAT_00461568 + -0xf,(&DAT_0046156c)[sVar4] + -0xf,0x1e,0x1e,5, FUN_00422fb7); (&DAT_0046773c)[sVar4] = iVar2; *(int *)((&DAT_0046773c)[sVar4] + 0x1e) = (int)sVar4; } if ((&DAT_0046768e)[sVar4 * 9] != -1) { uVar1 = CONCAT22((short)((uint)(sVar4 * 9) >> 0x10),(&DAT_0046768e)[sVar4 * 9]); uVar3 = FUN_00412ac4((&DAT_0046768e)[sVar4 * 9]); (&DAT_0046770c)[sVar4] = uVar3; FUN_00413a54((int)sVar4,(int)sVar4,uVar1,(&DAT_0046770c)[sVar4],6,0); FUN_0041395c((&DAT_0046770c)[sVar4],CONCAT22(extraout_var,DAT_00461576),uVar6,10); uVar1 = FUN_00412ac4(0x3acc); (&DAT_0046772c)[sVar4] = uVar1; FUN_0041395c((&DAT_0046772c)[sVar4],0x14a,uVar5,10); iVar2 = PickapuzzleHitTest_(DAT_0046156a + -0xf,(&DAT_0046156c)[sVar4] + -0xf,0x1e,0x1e,5, FUN_00422fb7); (&DAT_0046774c)[sVar4] = iVar2; *(int *)((&DAT_0046774c)[sVar4] + 0x1e) = sVar4 + 4; } uVar6 = CONCAT22((short)((uint)uVar6 >> 0x10),(short)uVar6 + 0x41); uVar5 = CONCAT22((short)((uint)uVar5 >> 0x10),(short)uVar5 + 0x41); sVar4 = sVar4 + 1; } while (sVar4 < 4); PickapuzzleHitTest_(0,0,0x200,0x17c,0,(ClickHandler *)&LAB_00422f50); PickapuzzleHitTest_(0x18e,0x144,100,0x30,5,(ClickHandler *)&LAB_00422ddb); PickapuzzleHitTest_(0x13,0x1b,0x3a,0x30,5,FUN_00425f5a); PickapuzzleHitTest_(0x10,0x6c,0x40,0x3d,5,(ClickHandler *)&LAB_00422e37); PickapuzzleHitTest_(0x10,0xaa,0x40,0x41,5,(ClickHandler *)&LAB_00422e82); PickapuzzleHitTest_(0x13,0xf9,0x3a,0x30,5,(ClickHandler *)&LAB_00422ebe); return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address int FUN_00422ee1(void) { int iVar1; iVar1 = DAT_00461574 + -6; if ((int)DAT_00461574 - 4U < 2) { FUN_00413f88(); DAT_00461574 = 1; FUN_0043b3e0(); *(undefined2 *)(DAT_00467784 + 0x12) = 0; FUN_00426795(); FUN_00430de8(0xfa,0x28,0x6e,0x10e); FUN_00425a0d(); iVar1 = FUN_004267a2(); } _DAT_004697b2 = 1; DAT_00461574 = 8; return iVar1; } void FUN_00422fb7(void) { int iVar1; undefined4 uVar2; uint uVar3; undefined4 extraout_ECX; undefined4 extraout_EDX; int in_stack_00000004; if (DAT_00461574 == 1) { switch(*(undefined4 *)(in_stack_00000004 + 0x1e)) { case 0: DAT_00461574 = 4; DAT_0046760e = 0; DAT_00467606 = DAT_00461568; DAT_00467608 = DAT_0046156c; break; case 1: DAT_00461574 = 4; DAT_0046760e = 1; DAT_00467606 = DAT_00461568; DAT_00467608 = DAT_0046156e; break; case 2: DAT_00461574 = 4; DAT_0046760e = 2; DAT_00467606 = DAT_00461568; DAT_00467608 = DAT_00461570; break; case 3: DAT_00461574 = 4; DAT_0046760e = 3; DAT_00467606 = DAT_00461568; DAT_00467608 = DAT_00461572; break; case 4: DAT_00461574 = 5; DAT_0046760e = 0; DAT_00467606 = DAT_0046156a; DAT_00467608 = DAT_0046156c; break; case 5: DAT_00461574 = 5; DAT_0046760e = 1; DAT_00467606 = DAT_0046156a; DAT_00467608 = DAT_0046156e; break; case 6: DAT_00461574 = 5; DAT_0046760e = 2; DAT_00467606 = DAT_0046156a; DAT_00467608 = DAT_00461570; break; case 7: DAT_00461574 = 5; DAT_0046760e = 3; DAT_00467606 = DAT_0046156a; DAT_00467608 = DAT_00461572; } uVar2 = FUN_00426795(); FUN_0043b4e2(uVar2,extraout_EDX,extraout_ECX,DAT_00467788); uVar3 = FUN_00413ee8(); DAT_00467464 = (undefined2)uVar3; FUN_004465a5(0x4a49,5,0); *(undefined2 *)(DAT_00467784 + 0x12) = 1; FUN_0043b318(); return; } if (DAT_00461574 == 2) { FUN_00425cda(); } else if (DAT_00461574 == 4) { if ((&DAT_00467630)[DAT_0046760e * 0xd + *(int *)(in_stack_00000004 + 0x1e)] != 1) { iVar1 = *(int *)(in_stack_00000004 + 0x1e); if (iVar1 == 4) { DAT_00461574 = 1; (&DAT_00467638)[DAT_0046760e * 0xd] = 1; } else if (iVar1 == 5) { DAT_00461574 = 1; (&DAT_0046763a)[DAT_0046760e * 0xd] = 1; } else if (iVar1 == 6) { DAT_00461574 = 1; *(undefined2 *)(&DAT_0046763c + DAT_0046760e * 0x1a) = 1; } else if (iVar1 == 7) { DAT_00461574 = 1; *(undefined2 *)(&DAT_0046763e + DAT_0046760e * 0x1a) = 1; } if ((((*(int *)(in_stack_00000004 + 0x1e) == 4) || (*(int *)(in_stack_00000004 + 0x1e) == 5)) || (*(int *)(in_stack_00000004 + 0x1e) == 6)) || (*(int *)(in_stack_00000004 + 0x1e) == 7) ) { FUN_00413f88(); FUN_00426795(); FUN_00430de8(0xfa,0x28,0x6e,0x10e); FUN_00425a0d(); if (*(short *)(&DAT_00467648 + (short)(&DAT_00467626)[DAT_0046760e * 0xd] * 2 + *(int *)(in_stack_00000004 + 0x1e) * 0x12) != 0) { (&DAT_00467620)[DAT_0046760e * 0xd + *(int *)(in_stack_00000004 + 0x1e)] = 1; } DAT_00467768 = DAT_00467768 + -1; FUN_00425b7d(); FUN_004465a5(0x4a4a,5,0); *(undefined2 *)(DAT_00467784 + 0x12) = 0; FUN_0043b3e0(); FUN_004267a2(); return; } } } else { if (DAT_00461574 != 5) { return; } if ((&DAT_00467638)[*(int *)(in_stack_00000004 + 0x1e) * 0xd + (int)DAT_0046760e] != 1) { iVar1 = *(int *)(in_stack_00000004 + 0x1e); if (iVar1 == 0) { DAT_00461574 = 1; (&DAT_00467638)[DAT_0046760e] = 1; } else if (iVar1 == 1) { DAT_00461574 = 1; (&DAT_00467652)[DAT_0046760e] = 1; } else if (iVar1 == 2) { DAT_00461574 = 1; *(undefined2 *)(&DAT_0046766c + DAT_0046760e * 2) = 1; } else if (iVar1 == 3) { DAT_00461574 = 1; *(undefined2 *)(&DAT_00467686 + DAT_0046760e * 2) = 1; } if (((*(int *)(in_stack_00000004 + 0x1e) == 0) || (*(int *)(in_stack_00000004 + 0x1e) == 1)) || ((*(int *)(in_stack_00000004 + 0x1e) == 2 || (*(int *)(in_stack_00000004 + 0x1e) == 3))) ) { FUN_00413f88(); FUN_00426795(); FUN_00430de8(0xfa,0x28,0x6e,0x10e); FUN_00425a0d(); if ((&DAT_00467690) [DAT_0046760e * 9 + (int)(short)(&DAT_00467626)[*(int *)(in_stack_00000004 + 0x1e) * 0xd]] != 0) { (&DAT_00467628)[*(int *)(in_stack_00000004 + 0x1e) * 0xd + (int)DAT_0046760e] = 1; } DAT_00467768 = DAT_00467768 + -1; FUN_00425b7d(); FUN_004465a5(0x4a4a,5,0); FUN_004267a2(); *(undefined2 *)(DAT_00467784 + 0x12) = 0; FUN_0043b3e0(); return; } } } return; } void FUN_004234ab(undefined param_1,undefined param_2,undefined param_3,undefined2 param_4, undefined param_5,undefined1 param_6,undefined1 param_7,undefined1 param_8, undefined param_9,undefined param_10,undefined2 param_11,undefined2 param_12, undefined2 param_13,undefined4 param_14,undefined4 param_15,undefined4 param_16) { undefined1 uVar1; undefined unaff_BP; undefined in_stack_00000000; undefined1 in_stack_0000000d; undefined3 in_stack_00000011; undefined3 in_stack_00000015; uVar1 = param_8; FUN_004235dc(param_1,param_2,param_3,(short)_param_7,uVar1,param_9,unaff_BP,in_stack_00000000, (undefined)param_4,param_5,_param_6,(short)_param_7,_param_8); FUN_00425794(); return; } void FUN_004234df(void) { undefined4 extraout_EDX; undefined4 extraout_EDX_00; undefined4 extraout_EDX_01; short sVar1; undefined4 uVar2; BigThing6Eh::processNodes_(DAT_004676e0); FUN_00412e70(); BigThing6Eh::processNodes_(DAT_004676ec); FUN_00412dc8(DAT_004676ec); BigThing6Eh::processNodes_(DAT_004676f4); BigThing6Eh::processNodes_(DAT_004676f0); sVar1 = 0; do { if ((&DAT_0046768e)[sVar1 * 9] != -1) { uVar2 = (&DAT_0046770c)[sVar1]; BigThing6Eh::processNodes_(uVar2); if ((&DAT_0046769e)[sVar1 * 9] == 1) { FUN_00412dc8((&DAT_0046770c)[sVar1]); } else { FUN_00412e70((int)sVar1,extraout_EDX,uVar2,(&DAT_0046770c)[sVar1]); } uVar2 = (&DAT_0046772c)[sVar1]; BigThing6Eh::processNodes_(uVar2); FUN_00412e70((int)sVar1,extraout_EDX_00,uVar2,(&DAT_0046772c)[sVar1]); } if ((&DAT_00467626)[sVar1 * 0xd] != -1) { uVar2 = (&DAT_0046771c)[sVar1]; BigThing6Eh::processNodes_(uVar2); FUN_00412e70((int)sVar1,extraout_EDX_01,uVar2,(&DAT_0046771c)[sVar1]); } sVar1 = sVar1 + 1; } while (sVar1 < 4); FUN_00422920(); return; } void FUN_004235dc(undefined param_1,undefined param_2,undefined param_3,short param_4, undefined1 param_5,undefined param_6,undefined param_7,undefined param_8, undefined param_9,undefined param_10,undefined2 param_11,undefined2 param_12, undefined2 param_13) { short sVar1; short sVar2; short in_stack_00000006; undefined1 in_stack_00000009; short in_stack_0000000a; short local_6; sVar1 = param_4; if (_param_5 < param_4) { sVar1 = _param_5; _param_5 = param_4; } if (in_stack_0000000a < in_stack_00000006) { local_6 = in_stack_00000006; sVar2 = in_stack_0000000a; } else { local_6 = in_stack_0000000a; sVar2 = in_stack_00000006; } FUN_00430de8(sVar1,sVar2,(_param_5 - sVar1) + 1,(local_6 - sVar2) + 1); FUN_00430abc(sVar1,sVar2,(_param_5 - sVar1) + 1,(local_6 - sVar2) + 1); return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void __cdecl Puzzles::SetParametersForEnergy(PuzzleNumberOneBased puzzle) { short sVar1; short sVar2; FUN_00425c3a(); if (33 < puzzle) { puzzle = 1; } switch(puzzle) { case 1: _DAT_0046977a = 4; _DAT_0046977c = 4; DAT_004697a8 = 0x3a9e; DAT_004697aa = 0x3a9d; _DAT_004697ac = 15000; _DAT_004697ae = 0x3a9a; DAT_0046978a = 0x3aa4; DAT_0046978c = 0x3aa5; DAT_0046978e = 0x3aa6; DAT_00469790 = 0x3aa3; DAT_00469792 = 15000; DAT_00469794 = 0x3a99; _DAT_00469796 = 0x3a9a; _DAT_00469798 = 0x3a9b; _DAT_0046979a = 0x3a9e; _DAT_0046979c = 0x3a9f; _DAT_0046979e = 0xffff; DAT_0046761e = 0x4a3b; DAT_00467620 = 0x4a5d; DAT_00467622 = 0x4a5e; DAT_00467624 = 0xffff; DAT_0046776a = 3; DAT_00467768 = 3; DAT_00467626 = 0; DAT_00467640 = 2; DAT_0046765a = 4; DAT_00467674 = 0xffff; DAT_0046768e = 0x3ab0; DAT_00467694 = 1; DAT_004676a0 = 0x3ac1; DAT_004676aa = 1; DAT_004676b2 = 0x3ac5; DAT_004676b4 = 1; DAT_004676c4 = 0xffff; break; case 2: _DAT_0046977c = 4; DAT_004697a8 = 0x3aa0; DAT_004697aa = 0x3a99; _DAT_004697ac = 0x3a9d; _DAT_004697ae = 0x3a9a; _DAT_0046977a = 8; DAT_0046978a = 0x3aaa; DAT_0046978c = 0x3aab; DAT_0046978e = 0x3aac; DAT_00469790 = 0x3a9c; DAT_00469792 = 0x3a9d; DAT_00469794 = 0x3aa3; _DAT_00469796 = 0x3a9e; _DAT_00469798 = 0x3a9f; _DAT_0046979a = 0xffff; DAT_0046761e = 0x4a74; DAT_00467620 = 0x4a58; DAT_00467622 = 0x4a73; DAT_00467624 = 0xffff; DAT_0046776a = 3; DAT_00467768 = 3; DAT_00467626 = 3; DAT_00467640 = 0; DAT_0046765a = 4; DAT_00467674 = 0xffff; DAT_0046768e = 0x3ac6; DAT_00467696 = 1; DAT_004676a0 = 0x3ac4; DAT_004676aa = 1; DAT_004676b2 = 0x3ad0; DAT_004676b4 = 1; DAT_004676c4 = 0xffff; break; case 3: _DAT_0046977c = 4; DAT_004697a8 = 0x3aa0; DAT_004697aa = 0x3a9c; _DAT_004697ac = 0x3a99; _DAT_004697ae = 0x3a9d; _DAT_0046977a = 7; DAT_0046978a = 0x3aaa; DAT_0046978c = 0x3aab; DAT_0046978e = 0x3aac; DAT_00469790 = 0x3aa2; DAT_00469792 = 0x3a9c; DAT_00469794 = 0x3a9d; _DAT_00469796 = 0x3aa3; _DAT_00469798 = 0xffff; DAT_0046761e = 0x4a74; DAT_00467620 = 0x4a50; DAT_00467622 = 0x4a41; DAT_00467624 = 0xffff; DAT_0046776a = 3; DAT_00467768 = 3; DAT_00467626 = 1; DAT_00467640 = 3; DAT_0046765a = 0; DAT_00467674 = 0xffff; DAT_0046768e = 0x3a9a; DAT_00467696 = 1; DAT_004676a0 = 0x3ad2; DAT_004676a2 = 1; DAT_004676b2 = 0x3a99; DAT_004676b6 = 1; DAT_004676c4 = 0xffff; break; case 4: _DAT_0046977c = 4; DAT_004697a8 = 0x3a9f; DAT_004697aa = 15000; _DAT_004697ac = 0x3a99; _DAT_004697ae = 0x3a9d; _DAT_0046977a = 10; DAT_0046978a = 0x3aa7; DAT_0046978c = 0x3aa8; DAT_0046978e = 0x3aa9; DAT_00469790 = 15000; DAT_00469792 = 0x3a99; DAT_00469794 = 0x3a9a; _DAT_00469796 = 0x3a9b; _DAT_00469798 = 0x3a9c; _DAT_0046979a = 0x3a9d; _DAT_0046979c = 0x3aa3; _DAT_0046979e = 0xffff; DAT_0046761e = 0x4a54; DAT_00467620 = 0x4a53; DAT_00467622 = 0x4a3b; DAT_00467624 = 0xffff; DAT_0046776a = 3; DAT_00467768 = 3; DAT_00467626 = 2; DAT_00467640 = 3; DAT_0046765a = 0; DAT_00467674 = 0xffff; DAT_0046768e = 0x3ac0; DAT_00467696 = 1; DAT_004676a0 = 0x3ac8; DAT_004676a2 = 1; DAT_004676b2 = 0x3ab0; DAT_004676b8 = 1; DAT_004676c4 = 0xffff; break; case 5: _DAT_0046977c = 3; DAT_004697a8 = 0x3a9c; DAT_004697aa = 0x3aa1; _DAT_004697ac = 0x3a9d; _DAT_0046977a = 5; DAT_0046978a = 0x3aa2; DAT_0046978c = 0x3aad; DAT_0046978e = 0x3aae; DAT_00469790 = 0x3aaf; DAT_00469792 = 0x3aa3; DAT_00469794 = 0xffff; DAT_0046761e = 0xffff; DAT_00467620 = 0xffff; DAT_00467622 = 0xffff; DAT_00467624 = 0xffff; DAT_0046776a = 3; DAT_00467768 = 3; DAT_00467626 = 1; DAT_00467640 = 5; DAT_0046765a = 0; DAT_00467674 = 0xffff; DAT_0046768e = 0x3acf; DAT_00467690 = 1; DAT_004676a0 = 0x3a99; DAT_004676a4 = 1; DAT_004676b2 = 0x3abd; DAT_004676be = 1; DAT_004676c4 = 0xffff; break; case 6: _DAT_0046977c = 2; DAT_004697a8 = 0x3a9d; DAT_004697aa = 0x3a9a; _DAT_0046977a = 3; DAT_0046978a = 0x3aa3; DAT_0046978c = 0x3a9e; DAT_0046978e = 0x3a9f; DAT_00469790 = 0xffff; DAT_0046761e = 0xffff; DAT_00467620 = 0xffff; DAT_00467622 = 0xffff; DAT_00467624 = 0x4a5d; DAT_0046776a = 4; DAT_00467768 = 4; DAT_00467626 = 0xffff; DAT_00467640 = 0; DAT_0046765a = 4; DAT_00467674 = 0xffff; DAT_0046768e = 0x3ad1; DAT_00467698 = 1; DAT_004676a0 = 0x3ad0; DAT_004676a2 = 1; DAT_004676b2 = 0x3a9c; DAT_004676b4 = 1; DAT_004676c4 = 0x3ac1; DAT_004676ce = 1; break; case 7: _DAT_0046977c = 3; DAT_004697a8 = 0x3a9d; DAT_004697aa = 0x3a9a; _DAT_004697ac = 0x3a99; _DAT_0046977a = 4; DAT_0046978a = 0x3aa3; DAT_0046978c = 0x3a9e; DAT_0046978e = 0x3a9f; DAT_00469790 = 0x3a9c; DAT_00469792 = 0x3a9d; DAT_0046761e = 0xffff; DAT_00467620 = 0xffff; DAT_00467622 = 0x4a5e; DAT_00467624 = 0xffff; DAT_0046776a = 4; DAT_00467768 = 4; DAT_00467626 = 0; DAT_00467640 = 4; DAT_0046765a = 3; DAT_00467674 = 0xffff; DAT_0046768e = 0x3acb; DAT_00467696 = 1; DAT_00467698 = 1; DAT_004676a0 = 0x3ad3; DAT_004676aa = 1; DAT_004676b2 = 0x3ac5; DAT_004676b4 = 1; DAT_004676c4 = 0xffff; break; case 8: _DAT_0046977c = 3; DAT_004697a8 = 0x3a9c; DAT_004697aa = 0x3a9a; _DAT_004697ac = 0x3a9d; _DAT_0046977a = 4; DAT_0046978a = 0x3aa2; DAT_0046978c = 0x3a9e; DAT_0046978e = 0x3a9f; DAT_00469790 = 0x3aa3; DAT_00469792 = 0xffff; DAT_0046761e = 0x4a5d; DAT_00467620 = 0xffff; DAT_00467622 = 0xffff; DAT_00467624 = 0xffff; DAT_0046776a = 4; DAT_00467768 = 4; DAT_00467626 = 1; DAT_00467640 = 4; DAT_0046765a = 0; DAT_00467674 = 0xffff; DAT_0046768e = 0x3ac1; DAT_00467698 = 1; DAT_004676a0 = 0x3ac4; DAT_004676a4 = 1; DAT_004676aa = 1; DAT_004676b2 = 0x3a9c; DAT_004676b4 = 1; DAT_004676c4 = 0xffff; break; case 9: _DAT_0046977c = 3; DAT_004697a8 = 0x3a9d; DAT_004697aa = 0x3a99; _DAT_004697ac = 0x3a9c; _DAT_0046977a = 4; DAT_0046978a = 0x3aa3; DAT_0046978c = 0x3a9c; DAT_0046978e = 0x3a9d; DAT_00469790 = 0x3aa2; DAT_00469792 = 0xffff; DAT_0046761e = 0xffff; DAT_00467620 = 0xffff; DAT_00467622 = 0xffff; DAT_00467624 = 0xffff; DAT_0046776a = 4; DAT_00467768 = 4; DAT_00467626 = 0; DAT_00467640 = 3; DAT_0046765a = 1; DAT_00467674 = 0xffff; DAT_0046768e = 0x3ad5; DAT_00467696 = 1; DAT_00467692 = 1; DAT_004676a0 = 0x3ad4; DAT_004676a4 = 1; DAT_004676b2 = 0x3ad2; DAT_004676b4 = 1; DAT_004676c4 = 0xffff; break; case 10: _DAT_0046977c = 3; DAT_004697a8 = 0x3a99; DAT_004697aa = 0x3a9c; _DAT_004697ac = 0x3a9d; _DAT_0046977a = 4; DAT_0046978a = 0x3a9c; DAT_0046978c = 0x3a9d; DAT_0046978e = 0x3aa2; DAT_00469790 = 0x3aa3; DAT_00469792 = 0xffff; DAT_0046761e = 0xffff; DAT_00467620 = 0xffff; DAT_00467622 = 0x4a53; DAT_00467624 = 0xffff; DAT_0046776a = 5; DAT_00467768 = 5; DAT_00467626 = 3; DAT_00467640 = 1; DAT_0046765a = 0; DAT_00467674 = 0xffff; DAT_0046768e = 0x3acb; DAT_00467696 = 1; DAT_00467692 = 1; DAT_004676a0 = 0x3ad1; DAT_004676a8 = 1; DAT_004676a4 = 1; DAT_004676b2 = 0x3ac8; DAT_004676b4 = 1; DAT_004676c4 = 0xffff; break; case 0xb: _DAT_0046977c = 3; DAT_004697a8 = 0x3a99; DAT_004697aa = 0x3a9c; _DAT_004697ac = 0x3a9d; _DAT_0046977a = 4; DAT_0046978a = 0x3a9c; DAT_0046978c = 0x3a9d; DAT_0046978e = 0x3aa2; DAT_00469790 = 0x3aa3; DAT_00469792 = 0xffff; DAT_0046761e = 0xffff; DAT_00467620 = 0xffff; DAT_00467622 = 0xffff; DAT_00467624 = 0xffff; DAT_0046776a = 4; DAT_00467768 = 4; DAT_00467626 = 3; DAT_00467640 = 1; DAT_0046765a = 0; DAT_00467674 = 0xffff; DAT_0046768e = 0x3ad4; DAT_00467692 = 1; DAT_004676a0 = 0x3ad2; DAT_004676a2 = 1; DAT_004676b2 = 0x3ad1; DAT_004676ba = 1; DAT_004676b6 = 1; DAT_004676c4 = 0xffff; break; case 0xc: _DAT_0046977c = 3; DAT_004697a8 = 0x3a9c; DAT_004697aa = 0x3a9d; _DAT_004697ac = 15000; _DAT_0046977a = 6; DAT_0046978a = 0x3aa2; DAT_0046978c = 0x3aa3; DAT_0046978e = 15000; DAT_00469790 = 0x3a99; DAT_00469792 = 0x3a9a; DAT_00469794 = 0x3a9b; _DAT_00469796 = 0xffff; DAT_0046761e = 0x4a5e; DAT_00467620 = 0xffff; DAT_00467622 = 0xffff; DAT_00467624 = 0xffff; DAT_0046776a = 4; DAT_00467768 = 4; DAT_00467626 = 1; DAT_00467640 = 0; DAT_0046765a = 2; DAT_00467674 = 0xffff; DAT_0046768e = 0x3ac5; DAT_00467690 = 1; DAT_004676a0 = 0x3a9c; DAT_004676a2 = 1; DAT_004676b2 = 0x3aae; DAT_004676b4 = 1; DAT_004676b8 = 1; DAT_004676c4 = 0xffff; break; case 0xd: _DAT_0046977c = 3; DAT_004697a8 = 0x3a9d; DAT_004697aa = 0x3a99; _DAT_004697ac = 0x3a9c; _DAT_0046977a = 4; DAT_0046978a = 0x3aa3; DAT_0046978c = 0x3a9c; DAT_0046978e = 0x3a9d; DAT_00469790 = 0x3aa2; DAT_00469792 = 0xffff; DAT_0046761e = 0xffff; DAT_00467620 = 0xffff; DAT_00467622 = 0xffff; DAT_00467624 = 0xffff; DAT_0046776a = 5; DAT_00467768 = 5; DAT_00467626 = 0; DAT_00467640 = 3; DAT_0046765a = 1; DAT_00467674 = 0xffff; DAT_0046768e = 0x3ad1; DAT_00467696 = 1; DAT_00467692 = 1; DAT_004676a0 = 0x3a9a; DAT_004676a8 = 1; DAT_004676b2 = 0x3ab3; DAT_004676b4 = 1; DAT_004676ba = 1; DAT_004676c4 = 0xffff; break; case 0xe: _DAT_0046977c = 3; DAT_004697a8 = 0x3a99; DAT_004697aa = 0x3a9d; _DAT_004697ac = 15000; _DAT_0046977a = 7; DAT_0046978a = 0x3a9c; DAT_0046978c = 0x3a9d; DAT_0046978e = 0x3aa3; DAT_00469790 = 15000; DAT_00469792 = 0x3a99; DAT_00469794 = 0x3a9a; _DAT_00469796 = 0x3a9b; _DAT_00469798 = 0xffff; DAT_0046761e = 0x4a74; DAT_00467620 = 0xffff; DAT_00467622 = 0xffff; DAT_00467624 = 0xffff; DAT_0046776a = 5; DAT_00467768 = 5; DAT_00467626 = 3; DAT_00467640 = 0; DAT_0046765a = 2; DAT_00467674 = 0xffff; DAT_0046768e = 0x3ac6; DAT_00467696 = 1; DAT_00467694 = 1; DAT_004676a0 = 0x3a9a; DAT_004676a8 = 1; DAT_004676a6 = 1; DAT_004676b2 = 0x3a9c; DAT_004676b4 = 1; DAT_004676c4 = 0xffff; break; case 0xf: _DAT_0046977c = 4; DAT_004697a8 = 0x3a9c; DAT_004697aa = 0x3aa1; _DAT_004697ac = 0x3a9d; _DAT_004697ae = 0x3a99; _DAT_0046977a = 7; DAT_0046978a = 0x3aa2; DAT_0046978c = 0x3aad; DAT_0046978e = 0x3aae; DAT_00469790 = 0x3aaf; DAT_00469792 = 0x3aa3; DAT_00469794 = 0x3a9c; _DAT_00469796 = 0x3a9d; _DAT_00469798 = 0xffff; DAT_0046761e = 0x4a5e; DAT_00467620 = 0xffff; DAT_00467622 = 0xffff; DAT_00467624 = 0xffff; DAT_0046776a = 5; DAT_00467768 = 5; DAT_00467626 = 1; DAT_00467640 = 5; DAT_0046765a = 0; DAT_00467674 = 3; DAT_0046768e = 0x3ac5; DAT_00467690 = 1; DAT_004676a0 = 0x3ab8; DAT_004676a2 = 1; DAT_004676b2 = 0x3ab6; DAT_004676b4 = 1; DAT_004676c4 = 0x3ad5; DAT_004676c8 = 1; DAT_004676cc = 1; break; case 0x10: _DAT_0046977c = 3; DAT_004697a8 = 0x3a9c; DAT_004697aa = 15000; _DAT_004697ac = 0x3aa1; _DAT_0046977a = 8; DAT_0046978a = 0x3aa2; DAT_0046978c = 15000; DAT_0046978e = 0x3a99; DAT_00469790 = 0x3a9a; DAT_00469792 = 0x3a9b; DAT_00469794 = 0x3aad; _DAT_00469796 = 0x3aae; _DAT_00469798 = 0x3aaf; _DAT_0046979a = 0xffff; DAT_0046761e = 0xffff; DAT_00467620 = 0xffff; DAT_00467622 = 0xffff; DAT_00467624 = 0xffff; DAT_0046776a = 5; DAT_00467768 = 5; DAT_00467626 = 1; DAT_00467640 = 2; DAT_0046765a = 5; DAT_00467674 = 0xffff; DAT_0046768e = 0x3abd; DAT_0046769a = 1; DAT_004676a0 = 0x3ad4; DAT_004676a4 = 1; DAT_004676ac = 1; DAT_004676b2 = 0x3ac7; DAT_004676b6 = 1; DAT_004676be = 1; DAT_004676c4 = 0xffff; break; case 0x11: _DAT_0046977c = 4; DAT_004697a8 = 0x3a9a; DAT_004697aa = 0x3a9c; _DAT_004697ac = 0x3a9d; _DAT_004697ae = 0x3aa1; _DAT_0046977a = 7; DAT_0046978a = 0x3a9e; DAT_0046978c = 0x3a9f; DAT_0046978e = 0x3aa2; DAT_00469790 = 0x3aa3; DAT_00469792 = 0x3aad; DAT_00469794 = 0x3aae; _DAT_00469796 = 0x3aaf; _DAT_00469798 = 0xffff; DAT_0046761e = 0xffff; DAT_00467620 = 0x4a5d; DAT_00467622 = 0xffff; DAT_00467624 = 0xffff; DAT_0046776a = 5; DAT_00467768 = 5; DAT_00467626 = 4; DAT_00467640 = 1; DAT_0046765a = 0; DAT_00467674 = 5; DAT_0046768e = 0x3aa7; DAT_00467692 = 1; DAT_00467690 = 1; DAT_004676a0 = 0x3ac1; DAT_004676aa = 1; DAT_004676b2 = 0x3a99; DAT_004676bc = 1; DAT_004676b6 = 1; DAT_004676c4 = 0xffff; break; case 0x12: _DAT_0046977c = 4; DAT_004697a8 = 15000; DAT_004697aa = 0x3a9c; _DAT_004697ac = 0x3a99; _DAT_004697ae = 0x3aa1; _DAT_0046977a = 10; DAT_0046978a = 15000; DAT_0046978c = 0x3a99; DAT_0046978e = 0x3a9a; DAT_00469790 = 0x3a9b; DAT_00469792 = 0x3aa2; DAT_00469794 = 0x3a9c; _DAT_00469796 = 0x3a9d; _DAT_00469798 = 0x3aad; _DAT_0046979a = 0x3aae; _DAT_0046979c = 0x3aaf; _DAT_0046979e = 0xffff; DAT_0046761e = 0xffff; DAT_00467620 = 0x4a3b; DAT_00467622 = 0xffff; DAT_00467624 = 0xffff; DAT_0046776a = 5; DAT_00467768 = 5; DAT_00467626 = 2; DAT_00467640 = 1; DAT_0046765a = 3; DAT_00467674 = 5; DAT_0046768e = 0x3ab1; DAT_00467694 = 1; DAT_004676a0 = 0x3ab0; DAT_004676a6 = 1; DAT_004676b2 = 0x3ac6; DAT_004676b8 = 1; DAT_004676ba = 1; DAT_004676c4 = 0x3ab6; DAT_004676ca = 1; break; case 0x13: _DAT_0046977c = 4; DAT_004697a8 = 0x3a99; DAT_004697aa = 0x3aa1; _DAT_004697ac = 15000; _DAT_004697ae = 0x3a9d; _DAT_0046977a = 10; DAT_0046978a = 0x3a9c; DAT_0046978c = 0x3a9d; DAT_0046978e = 0x3aad; DAT_00469790 = 0x3aae; DAT_00469792 = 0x3aaf; DAT_00469794 = 15000; _DAT_00469796 = 0x3a99; _DAT_00469798 = 0x3a9a; _DAT_0046979a = 0x3a9b; _DAT_0046979c = 0x3aa3; _DAT_0046979e = 0xffff; DAT_0046761e = 0xffff; DAT_00467620 = 0xffff; DAT_00467622 = 0x4a3b; DAT_00467624 = 0xffff; DAT_0046776a = 5; DAT_00467768 = 5; DAT_00467626 = 3; DAT_00467640 = 5; DAT_0046765a = 2; DAT_00467674 = 0; DAT_0046768e = 0x3ad2; DAT_00467690 = 1; DAT_004676a0 = 0x3a9e; DAT_004676a6 = 1; DAT_004676a2 = 1; DAT_004676b2 = 0x3ab0; DAT_004676b8 = 1; DAT_004676c4 = 0x3ad0; DAT_004676c6 = 1; break; case 0x14: _DAT_0046977c = 2; DAT_004697a8 = 0x3aa2; DAT_004697aa = 0x3a9b; _DAT_0046977a = 4; DAT_0046978a = 0x3ab0; DAT_0046978c = 0x3ab1; DAT_0046978e = 0x3aa0; DAT_00469790 = 0x3aa1; DAT_00469792 = 0xffff; DAT_0046761e = 0xffff; DAT_00467620 = 0xffff; DAT_00467622 = 0xffff; DAT_00467624 = 0xffff; DAT_0046776a = 2; DAT_00467768 = 2; DAT_00467626 = 6; DAT_00467640 = 7; DAT_0046765a = 0xffff; DAT_00467674 = 0xffff; _DAT_004675fe = 0x3aac; DAT_0046768e = 0x3aab; DAT_0046769e = 1; DAT_004676a0 = 0x3aad; DAT_004676ae = 1; DAT_004676b2 = 0xffff; DAT_004676c4 = 0xffff; break; case 0x15: _DAT_0046977c = 2; DAT_004697a8 = 0x3aa2; DAT_004697aa = 0x3a9b; _DAT_0046977a = 4; DAT_0046978a = 0x3ab0; DAT_0046978c = 0x3ab1; DAT_0046978e = 0x3aa0; DAT_00469790 = 0x3aa1; DAT_00469792 = 0xffff; DAT_0046776a = 2; DAT_00467768 = 2; DAT_0046761e = 0xffff; DAT_00467620 = 0xffff; DAT_00467622 = 0xffff; DAT_00467624 = 0xffff; DAT_00467626 = 6; DAT_00467640 = 7; DAT_0046765a = 0xffff; DAT_00467674 = 0xffff; DAT_0046768e = 0x3ab9; DAT_0046769c = 1; _DAT_00467600 = 0x3abc; DAT_004676a0 = 0x3abb; DAT_004676b0 = 1; DAT_004676b2 = 0xffff; DAT_004676c4 = 0xffff; break; case 0x16: _DAT_0046977c = 2; DAT_004697a8 = 0x3a9b; DAT_004697aa = 0x3aa2; _DAT_0046977a = 4; DAT_0046978a = 0x3aa0; DAT_0046978c = 0x3aa1; DAT_0046978e = 0x3ab0; DAT_00469790 = 0x3ab1; DAT_00469792 = 0xffff; DAT_0046776a = 4; DAT_00467768 = 4; DAT_00467626 = 0xffff; DAT_00467640 = 7; DAT_0046765a = 6; DAT_00467674 = 0xffff; DAT_0046768e = 0x3ab9; DAT_0046769c = 1; _DAT_00467600 = 0x3abc; DAT_004676a0 = 0x3abb; DAT_004676b0 = 1; DAT_004676b2 = 0x3aad; DAT_004676c0 = 1; _DAT_00467604 = 0x3aac; DAT_004676c4 = 0x3aab; DAT_004676d4 = 1; break; case 0x17: _DAT_0046977c = 2; DAT_004697a8 = 0x3a9b; DAT_004697aa = 0x3aa2; _DAT_0046977a = 4; DAT_0046978a = 0x3aa0; DAT_0046978c = 0x3aa1; DAT_0046978e = 0x3ab0; DAT_00469790 = 0x3ab1; DAT_00469792 = 0xffff; DAT_0046761e = 0xffff; DAT_00467620 = 0xffff; DAT_00467622 = 0x4a53; DAT_00467624 = 0xffff; DAT_0046776a = 4; DAT_00467768 = 4; DAT_00467626 = 0xffff; DAT_00467640 = 7; DAT_0046765a = 6; DAT_00467674 = 0xffff; DAT_0046768e = 0x3aa7; DAT_0046769c = 1; _DAT_00467600 = 0x3ab6; DAT_004676a0 = 0x3ab5; DAT_004676b0 = 1; DAT_004676b2 = 0x3ac9; DAT_004676c0 = 1; DAT_004676c4 = 0x3ab9; DAT_004676d2 = 1; break; case 0x18: DAT_0046761e = 0xffff; DAT_00467620 = 0xffff; DAT_00467622 = 0xffff; DAT_00467624 = 0x4a53; DAT_0046776a = 4; DAT_00467768 = 4; _DAT_0046977c = 2; DAT_004697a8 = 0x3a9b; DAT_004697aa = 0x3aa2; _DAT_0046977a = 4; DAT_0046978a = 0x3aa0; DAT_0046978c = 0x3aa1; DAT_0046978e = 0x3ab0; DAT_00469790 = 0x3ab1; DAT_00469792 = 0xffff; DAT_00467626 = 0xffff; DAT_00467640 = 7; DAT_0046765a = 6; DAT_00467674 = 0xffff; DAT_0046768e = 0x3aa7; DAT_0046769c = 1; _DAT_00467600 = 0x3abc; DAT_004676a0 = 0x3abb; DAT_004676b0 = 1; _DAT_00467602 = 0x3aac; DAT_004676b2 = 0x3aab; DAT_004676c2 = 1; DAT_004676c4 = 0x3ac9; DAT_004676d2 = 1; break; case 0x19: _DAT_0046977c = 3; DAT_004697a8 = 15000; DAT_004697aa = 0x3a9d; _DAT_004697ac = 0x3a9c; _DAT_0046977a = 6; DAT_0046978a = 15000; DAT_0046978c = 0x3a99; DAT_0046978e = 0x3a9a; DAT_00469790 = 0x3a9b; DAT_00469792 = 0x3aa3; DAT_00469794 = 0x3aa2; _DAT_00469796 = 0xffff; DAT_0046761e = 0xffff; DAT_00467620 = 0xffff; DAT_00467622 = 0xffff; DAT_00467624 = 0xffff; DAT_0046776a = 6; DAT_00467768 = 6; DAT_00467626 = 2; DAT_00467640 = 0; DAT_0046765a = 1; DAT_00467674 = 0xffff; DAT_0046768e = 0x3aae; DAT_00467690 = 1; DAT_00467694 = 1; DAT_004676a0 = 0x3ab1; DAT_004676a2 = 1; DAT_004676a6 = 1; DAT_004676b2 = 0x3ad3; DAT_004676b8 = 1; DAT_004676b6 = 1; DAT_004676c4 = 0xffff; break; case 0x1a: _DAT_0046977c = 2; DAT_004697a8 = 15000; DAT_004697aa = 0x3a99; _DAT_0046977a = 6; DAT_0046978a = 15000; DAT_0046978c = 0x3a99; DAT_0046978e = 0x3a9a; DAT_00469790 = 0x3a9b; DAT_00469792 = 0x3a9c; DAT_00469794 = 0x3a9d; _DAT_00469796 = 0xffff; DAT_0046761e = 0xffff; DAT_00467620 = 0xffff; DAT_00467622 = 0xffff; DAT_00467624 = 0xffff; DAT_0046776a = 6; DAT_00467768 = 6; DAT_00467626 = 0xffff; DAT_00467640 = 2; DAT_0046765a = 3; DAT_00467674 = 0xffff; DAT_0046768e = 0x3acf; DAT_00467694 = 1; DAT_00467696 = 1; DAT_004676a0 = 0x3ad5; DAT_004676a8 = 1; DAT_004676b2 = 0x3ac0; DAT_004676ba = 1; DAT_004676c4 = 0x3ac6; DAT_004676ca = 1; DAT_004676cc = 1; break; case 0x1b: _DAT_0046977c = 4; DAT_004697a8 = 0x3a99; DAT_004697aa = 0x3aa1; _DAT_004697ac = 0x3a9d; _DAT_004697ae = 0x3a9c; _DAT_0046977a = 7; DAT_0046978a = 0x3a9c; DAT_0046978c = 0x3a9d; DAT_0046978e = 0x3aad; DAT_00469790 = 0x3aae; DAT_00469792 = 0x3aaf; DAT_00469794 = 0x3aa3; _DAT_00469796 = 0x3aa2; _DAT_00469798 = 0xffff; DAT_0046761e = 0xffff; DAT_00467620 = 0xffff; DAT_00467622 = 0xffff; DAT_00467624 = 0xffff; DAT_0046776a = 7; DAT_00467768 = 7; DAT_00467626 = 3; DAT_00467640 = 5; DAT_0046765a = 0; DAT_00467674 = 1; DAT_0046768e = 0x3ac4; DAT_00467692 = 1; DAT_004676a0 = 0x3ac0; DAT_004676a8 = 1; DAT_004676a4 = 1; DAT_004676b2 = 0x3ad5; DAT_004676ba = 1; DAT_004676b6 = 1; DAT_004676c4 = 0x3ad4; DAT_004676d0 = 1; DAT_004676c8 = 1; break; case 0x1c: _DAT_0046977c = 4; DAT_004697a8 = 15000; DAT_004697aa = 0x3aa1; _DAT_004697ac = 0x3a9a; _DAT_004697ae = 0x3a9d; _DAT_0046977a = 10; DAT_0046978a = 15000; DAT_0046978c = 0x3a99; DAT_0046978e = 0x3a9a; DAT_00469790 = 0x3a9b; DAT_00469792 = 0x3aad; DAT_00469794 = 0x3aae; _DAT_00469796 = 0x3aaf; _DAT_00469798 = 0x3a9e; _DAT_0046979a = 0x3a9f; _DAT_0046979c = 0x3aa3; _DAT_0046979e = 0xffff; DAT_0046761e = 0x4a5d; DAT_00467620 = 0xffff; DAT_00467622 = 0xffff; DAT_00467624 = 0xffff; DAT_0046776a = 7; DAT_00467768 = 7; DAT_00467626 = 2; DAT_00467640 = 5; DAT_0046765a = 4; DAT_00467674 = 0; DAT_0046768e = 0x3ac1; DAT_00467698 = 1; DAT_004676a0 = 0x3a99; DAT_004676a6 = 1; DAT_004676aa = 1; DAT_004676b2 = 0x3ad3; DAT_004676b8 = 1; DAT_004676bc = 1; DAT_004676c4 = 0x3ad4; DAT_004676d0 = 1; DAT_004676ce = 1; break; case 0x1d: _DAT_0046977c = 4; DAT_004697a8 = 15000; DAT_004697aa = 0x3a99; _DAT_004697ac = 0x3a9c; _DAT_004697ae = 0x3a9d; _DAT_0046977a = 8; DAT_0046978a = 15000; DAT_0046978c = 0x3a99; DAT_0046978e = 0x3a9a; DAT_00469790 = 0x3a9b; DAT_00469792 = 0x3a9c; DAT_00469794 = 0x3a9d; _DAT_00469796 = 0x3aa2; _DAT_00469798 = 0x3aa3; _DAT_0046979a = 0xffff; DAT_0046761e = 0xffff; DAT_00467620 = 0xffff; DAT_00467622 = 0xffff; DAT_00467624 = 0xffff; DAT_0046776a = 6; DAT_00467768 = 6; DAT_00467626 = 2; DAT_00467640 = 3; DAT_0046765a = 1; DAT_00467674 = 0; DAT_0046768e = 0x3ab3; DAT_00467696 = 1; DAT_00467690 = 1; DAT_004676a0 = 0x3ab6; DAT_004676a6 = 1; DAT_004676a2 = 1; DAT_004676b2 = 0x3ab1; DAT_004676b4 = 1; DAT_004676b8 = 1; DAT_004676c4 = 0xffff; break; case 0x1e: _DAT_0046977c = 4; DAT_004697a8 = 15000; DAT_004697aa = 0x3a9c; _DAT_004697ac = 0x3a9d; _DAT_004697ae = 0x3aa1; _DAT_0046977a = 9; DAT_0046978a = 15000; DAT_0046978c = 0x3a99; DAT_0046978e = 0x3a9a; DAT_00469790 = 0x3a9b; DAT_00469792 = 0x3aa2; DAT_00469794 = 0x3aa3; _DAT_00469796 = 0x3aad; _DAT_00469798 = 0x3aae; _DAT_0046979a = 0x3aaf; _DAT_0046979c = 0xffff; DAT_0046761e = 0xffff; DAT_00467620 = 0x4a3b; DAT_00467622 = 0xffff; DAT_00467624 = 0xffff; DAT_0046776a = 6; DAT_00467768 = 6; DAT_00467626 = 2; DAT_00467640 = 1; DAT_0046765a = 0; DAT_00467674 = 5; DAT_0046768e = 0x3acf; DAT_00467694 = 1; DAT_00467690 = 1; DAT_004676a0 = 0x3ab0; DAT_004676a6 = 1; DAT_004676b2 = 0x3ac4; DAT_004676b8 = 1; DAT_004676b6 = 1; DAT_004676c4 = 0x3acb; DAT_004676c8 = 1; break; case 0x1f: _DAT_0046977c = 4; DAT_004697a8 = 0x3a9c; DAT_004697aa = 0x3aa1; _DAT_004697ac = 0x3a9d; _DAT_004697ae = 0x3a9a; _DAT_0046977a = 7; DAT_0046978a = 0x3aa2; DAT_0046978c = 0x3aad; DAT_0046978e = 0x3aae; DAT_00469790 = 0x3aaf; DAT_00469792 = 0x3aa3; DAT_00469794 = 0x3a9e; _DAT_00469796 = 0x3a9f; _DAT_00469798 = 0xffff; DAT_0046761e = 0xffff; DAT_00467620 = 0xffff; DAT_00467622 = 0xffff; DAT_00467624 = 0xffff; DAT_0046776a = 8; DAT_00467768 = 8; DAT_00467626 = 1; DAT_00467640 = 5; DAT_0046765a = 0; DAT_00467674 = 4; DAT_0046768e = 0x3ac7; DAT_00467692 = 1; DAT_0046769a = 1; DAT_00467698 = 1; DAT_004676a0 = 0x3ac0; DAT_004676a4 = 1; DAT_004676aa = 1; DAT_004676b2 = 0x3ad0; DAT_004676b4 = 1; DAT_004676c4 = 0x3ad3; DAT_004676c8 = 1; DAT_004676ce = 1; break; case 0x20: _DAT_0046977c = 4; DAT_004697a8 = 0x3a9c; DAT_004697aa = 0x3aa1; _DAT_004697ac = 0x3a9d; _DAT_004697ae = 0x3a99; _DAT_0046977a = 7; DAT_0046978a = 0x3aa2; DAT_0046978c = 0x3aad; DAT_0046978e = 0x3aae; DAT_00469790 = 0x3aaf; DAT_00469792 = 0x3aa3; DAT_00469794 = 0x3a9c; _DAT_00469796 = 0x3a9d; _DAT_00469798 = 0xffff; DAT_0046761e = 0xffff; DAT_00467620 = 0xffff; DAT_00467622 = 0xffff; DAT_00467624 = 0xffff; DAT_0046776a = 8; DAT_00467768 = 8; DAT_00467626 = 1; DAT_00467640 = 5; DAT_0046765a = 0; DAT_00467674 = 3; DAT_0046768e = 0x3acf; DAT_00467690 = 1; DAT_00467696 = 1; DAT_004676a0 = 0x3aa7; DAT_004676a4 = 1; DAT_004676a2 = 1; DAT_004676a8 = 1; DAT_004676b2 = 0x3ad0; DAT_004676b4 = 1; DAT_004676c4 = 0x3ab3; DAT_004676c6 = 1; DAT_004676cc = 1; break; case 0x21: _DAT_0046977c = 4; DAT_004697a8 = 0x3a9a; DAT_004697aa = 0x3a99; _DAT_004697ac = 0x3aa1; _DAT_004697ae = 0x3a9c; _DAT_0046977a = 8; DAT_0046978a = 0x3a9e; DAT_0046978c = 0x3a9f; DAT_0046978e = 0x3a9c; DAT_00469790 = 0x3a9d; DAT_00469792 = 0x3aad; DAT_00469794 = 0x3aae; _DAT_00469796 = 0x3aaf; _DAT_00469798 = 0x3aa2; _DAT_0046979a = 0xffff; DAT_0046776a = 9; DAT_00467768 = 9; DAT_00467626 = 4; DAT_00467640 = 3; DAT_0046765a = 5; DAT_00467674 = 1; DAT_0046768e = 0x3a99; DAT_00467692 = 1; DAT_00467698 = 1; DAT_004676a0 = 0x3ac4; DAT_004676a4 = 1; DAT_004676aa = 1; DAT_004676b2 = 0x3ad3; DAT_004676b6 = 1; DAT_004676bc = 1; DAT_004676c4 = 0x3ad4; DAT_004676c8 = 1; DAT_004676ce = 1; DAT_004676d0 = 1; } sVar2 = 0; do { sVar1 = 0; do { if ((&DAT_00467690)[sVar1 * 9 + (int)(short)(&DAT_00467626)[sVar2 * 0xd]] == 0) { (&DAT_00467628)[sVar2 * 0xd + (int)sVar1] = 1; } else { (&DAT_00467628)[sVar2 * 0xd + (int)sVar1] = 0; } sVar1 = sVar1 + 1; } while (sVar1 < 4); sVar2 = sVar2 + 1; } while (sVar2 < 4); switch(DAT_00467768) { case 2: DAT_00469780 = 0x3ab2; break; case 3: DAT_00469780 = 0x3ab3; break; case 4: DAT_00469780 = 0x3ab4; break; case 5: DAT_00469780 = 0x3ab5; break; case 6: DAT_00469780 = 0x3ab6; break; case 7: DAT_00469780 = 0x3ab7; break; case 8: DAT_00469780 = 0x3ab8; break; case 9: DAT_00469780 = 0x3ab9; } return; } void FUN_00425794(void) { short sVar1; short sVar2; short sVar3; short in_stack_00000004; short in_stack_00000008; short in_stack_0000000c; short in_stack_00000010; short local_12; short local_e; short local_a; short local_6; local_e = in_stack_00000008; local_12 = in_stack_00000010; if (in_stack_00000010 < in_stack_00000008) { local_12 = local_e; local_e = in_stack_00000010; } local_a = in_stack_00000008; sVar3 = in_stack_00000004; if (in_stack_0000000c < in_stack_00000004) { local_a = in_stack_00000010; in_stack_00000010 = in_stack_00000008; sVar3 = in_stack_0000000c; in_stack_0000000c = in_stack_00000004; } sVar1 = in_stack_0000000c - sVar3; if (local_a < in_stack_00000010) { local_a = in_stack_00000010 - local_a; } else { local_a = local_a - in_stack_00000010; } sVar2 = local_a * 2 - sVar1; if (((sVar1 != 0) || (local_a == 0)) && (local_6 = 0, 0 < sVar1)) { do { FUN_00431588(); for (; -1 < sVar2; sVar2 = sVar2 + sVar1 * -2) { FUN_00431588(); } sVar2 = sVar2 + local_a * 2; local_6 = local_6 + 1; } while (local_6 < sVar1); } FUN_00430abc(sVar3,local_e,(in_stack_0000000c - sVar3) + 1,(local_12 - local_e) + 1); return; } undefined4 FUN_004258b0(void) { undefined4 uVar1; short in_stack_00000004; short in_stack_00000008; if ((((in_stack_00000004 < 0x61) || (500 < in_stack_00000004)) || (in_stack_00000008 < 0x20)) || (0x128 < in_stack_00000008)) { uVar1 = 0; } else { uVar1 = 1; } return uVar1; } int FUN_004258dd(void) { int iVar1; int iVar2; iVar1 = (int)DAT_00461574; iVar2 = iVar1 + -1; if (((iVar1 != 0) && (iVar2 = 0, iVar1 != 6)) && (iVar2 = iVar1 + -0xd, 3 < iVar1 - 9U)) { DAT_004676d6 = 0; DAT_004676d8 = 0; iVar2 = CONCAT22((short)((uint)iVar2 >> 0x10),DAT_00461574); DAT_004675fa = DAT_00461574; DAT_00461574 = 6; } return iVar2; } void FUN_0042591e(void) { undefined4 uVar1; undefined2 uVar2; undefined4 extraout_EDX; uint uVar3; if ((&DAT_0046769e)[DAT_004675fc * 9] == 1) { uVar3 = (&DAT_0046770c)[DAT_004675fc]; FUN_00412fe4(uVar3); FUN_00412d0c((int)DAT_004675fc,extraout_EDX,uVar3,(&DAT_0046770c)[DAT_004675fc]); uVar1 = FUN_00412ac4(*(ushort *)(&DAT_004675fe + DAT_004675fc * 2)); (&DAT_0046770c)[DAT_004675fc] = uVar1; uVar2 = (undefined2)((uint)(DAT_004675fc * 0x41) >> 0x10); FUN_0041395c((&DAT_0046770c)[DAT_004675fc],CONCAT22(uVar2,DAT_00461576), CONCAT22(uVar2,(short)(DAT_004675fc * 0x41) + 0x23),10); FUN_00412dc8((&DAT_0046770c)[DAT_004675fc]); } else { FUN_00412fe4((&DAT_0046770c)[DAT_004675fc]); FUN_00412e18((&DAT_0046770c)[DAT_004675fc]); } FUN_004465a5((&DAT_0046761e)[DAT_004675fc],0xf,1); DAT_00461574 = 0; return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_00425a0d(void) { short sVar1; short sVar2; sVar2 = 0; do { sVar1 = 0; do { if ((&DAT_00467638)[sVar2 * 0xd + (int)sVar1] != 0) { FUN_00425794(); } if (_DAT_00467794 != 0) { FUN_00425794(); } sVar1 = sVar1 + 1; } while (sVar1 < 4); sVar2 = sVar2 + 1; } while (sVar2 < 4); FUN_00430abc(0xfa,0x28,0x6e,0x10e); return; } undefined4 FUN_00425ab0(void) { short sVar1; undefined2 extraout_var; undefined2 extraout_var_00; short sVar2; short sVar3; short sVar4; short in_stack_00000004; short in_stack_00000008; short in_stack_0000000c; short in_stack_00000010; short in_stack_00000014; short in_stack_00000018; short local_6; sVar3 = in_stack_00000004; sVar1 = in_stack_00000008; if (in_stack_0000000c < in_stack_00000004) { sVar3 = in_stack_0000000c; in_stack_0000000c = in_stack_00000004; sVar1 = in_stack_00000010; in_stack_00000010 = in_stack_00000008; } in_stack_0000000c = in_stack_0000000c - sVar3; if (sVar1 < in_stack_00000010) { sVar4 = 1; in_stack_00000010 = in_stack_00000010 - sVar1; } else { sVar4 = -1; in_stack_00000010 = sVar1 - in_stack_00000010; } sVar2 = in_stack_00000010 * 2 - in_stack_0000000c; sVar3 = sVar3 + -1; local_6 = 0; if (0 < in_stack_0000000c) { do { sVar3 = sVar3 + 1; if ((sVar3 == in_stack_00000014) && (sVar1 == in_stack_00000018)) { FUN_00431588(); return CONCAT22(extraout_var,1); } for (; -1 < sVar2; sVar2 = sVar2 + in_stack_0000000c * -2) { sVar1 = sVar1 + sVar4; if ((sVar3 == in_stack_00000014) && (sVar1 == in_stack_00000018)) { FUN_00431588(); return CONCAT22(extraout_var_00,1); } } sVar2 = sVar2 + in_stack_00000010 * 2; local_6 = local_6 + 1; } while (local_6 < in_stack_0000000c); } return 0; } void FUN_00425b7d(void) { char local_10 [12]; Nfnt::LoadWithCache(15000); FUN_00430de8(0x37,0x70,0x1a,0x1a); if (0 < DAT_00467768) { Sprintf_(local_10,&DAT_00461593,(int)DAT_00467768); Draw::String(15000,local_10,0x3b,0x82,0); } FUN_00430abc(0x37,0x70,0x1a,0x1a); Nfnt::Unload(15000); return; } undefined4 FUN_00425bf4(void) { int iVar1; short sVar2; sVar2 = 0; do { iVar1 = sVar2 * 0xd; if ((&DAT_00467626)[sVar2 * 0xd] != -1) { iVar1 = 0; do { if ((&DAT_00467628)[sVar2 * 0xd + (int)(short)iVar1] == 0) { return 0; } iVar1 = iVar1 + 1; } while ((short)iVar1 < 4); } sVar2 = sVar2 + 1; } while (sVar2 < 4); return CONCAT22((short)((uint)iVar1 >> 0x10),1); } void FUN_00425c3a(void) { short sVar1; short sVar2; DAT_00461580 = 0; DAT_00461574 = 1; sVar2 = 0; do { (&DAT_0046768e)[sVar2 * 9] = 0; sVar1 = 0; do { (&DAT_00467628)[sVar2 * 0xd + (int)sVar1] = 0; (&DAT_00467630)[sVar2 * 0xd + (int)sVar1] = 0; (&DAT_00467638)[sVar2 * 0xd + (int)sVar1] = 0; (&DAT_00467690)[sVar2 * 9 + (int)sVar1] = 0; (&DAT_00467698)[sVar2 * 9 + (int)sVar1] = 0; sVar1 = sVar1 + 1; } while (sVar1 < 4); sVar2 = sVar2 + 1; } while (sVar2 < 4); return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_00425cda(void) { bool bVar1; undefined4 uVar2; short sVar3; short sVar4; short sVar5; undefined2 local_14; short local_6; bVar1 = false; FUN_0044fbfd(); sVar4 = 0; do { sVar3 = 0; do { if ((&DAT_00467638)[sVar4 * 0xd + (int)sVar3] != 0) { local_6 = 0; do { sVar5 = 0; do { if (!bVar1) { uVar2 = FUN_00425ab0(); if ((short)uVar2 != 0) { FUN_00426795(); bVar1 = true; if ((&DAT_00467690)[sVar3 * 9 + (int)(short)(&DAT_00467626)[sVar4 * 0xd]] == 0) { (&DAT_00467628)[sVar4 * 0xd + (int)sVar3] = 1; } else { (&DAT_00467628)[sVar4 * 0xd + (int)sVar3] = 0; } (&DAT_00467638)[sVar4 * 0xd + (int)sVar3] = 0; (&DAT_00467630)[sVar3 * 0xd + (int)sVar4] = 0; DAT_00467768 = DAT_00467768 + 1; FUN_00425b7d(); FUN_00430de8(0xfa,0x28,0x6e,0x10e); FUN_00425a0d(); FUN_004267a2(); FUN_004465a5(0x4a4c,5,0); } } sVar5 = sVar5 + 1; } while (sVar5 < 7); local_6 = local_6 + 1; } while (local_6 < 7); } sVar3 = sVar3 + 1; } while (sVar3 < 4); sVar4 = sVar4 + 1; } while (sVar4 < 4); DAT_00467618._2_2_ = local_14; _DAT_0046761c = local_14; return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_00425f5a(void) { void *pvVar1; short sVar2; void *apvStackY_20400 [32762]; void *local_400 [5]; undefined1 local_3ec [1000]; switch(DAT_00461574) { case 0: case 6: case 9: case 10: case 0xb: case 0xc: return; case 4: case 5: FUN_00413f88(); *(undefined2 *)(DAT_00467784 + 0x12) = 0; DAT_00461574 = 1; } FUN_00412dc8(DAT_004676f4); FUN_00412784(); BigThing6Eh::processNodes_(DAT_004676f4); FUN_00412784(); Memset(local_3ec,0,1000); local_400[0] = Resource::Load(DAT_004697a8,&_TEXT6); FUN_0044ffac(); FUN_0045008c(); for (sVar2 = 1; sVar2 < _DAT_0046977c; sVar2 = sVar2 + 1) { pvVar1 = Resource::Load((&DAT_004697a8)[sVar2],&_TEXT7); local_400[sVar2] = pvVar1; FUN_0044ffac(); FUN_0044ffc8(); } FUN_0043f27a(); for (sVar2 = 0; sVar2 < _DAT_0046977c; sVar2 = sVar2 + 1) { FUN_00440695((&DAT_004697a8)[sVar2],&_TEXT8); } return; } void FUN_004261cb(void) { short sVar1; short sVar2; short sVar3; short sVar4; bool bVar5; short in_stack_00000004; short in_stack_00000008; short in_stack_0000000c; short in_stack_00000010; short in_stack_00000018; short local_a; short local_8; short local_6; sVar4 = 3; DAT_004675f6 = 0; DAT_004675f8 = 0; if (in_stack_00000008 < in_stack_00000010) { sVar3 = 1; local_8 = in_stack_00000010 - in_stack_00000008; } else { sVar3 = -1; local_8 = in_stack_00000008 - in_stack_00000010; } if (in_stack_00000004 < in_stack_0000000c) { local_a = 1; sVar2 = in_stack_0000000c - in_stack_00000004; } else { local_a = -1; sVar2 = in_stack_00000004 - in_stack_0000000c; } sVar1 = local_8 * 2 - sVar2; in_stack_00000004 = in_stack_00000004 - local_a; local_6 = 0; if (0 < sVar2) { do { in_stack_00000004 = in_stack_00000004 + local_a; bVar5 = sVar4 == 0; sVar4 = sVar4 + -1; if (bVar5) { (&DAT_00467466)[DAT_004675f6] = in_stack_00000004; DAT_004675f6 = DAT_004675f6 + 1; (&DAT_00467466)[DAT_004675f6] = in_stack_00000008; DAT_004675f6 = DAT_004675f6 + 1; sVar4 = 2; } for (; -1 < sVar1; sVar1 = sVar1 + sVar2 * -2) { in_stack_00000008 = in_stack_00000008 + sVar3; } sVar1 = sVar1 + local_8 * 2; local_6 = local_6 + 1; } while (local_6 < sVar2); } DAT_00461574 = 9; DAT_00467792 = in_stack_00000018 + 10; FUN_00412e70(); FUN_00413b08(); DAT_00467796 = in_stack_0000000c; DAT_00467798 = in_stack_00000010; return; } void FUN_00426317(undefined4 param_1,undefined4 param_2,undefined4 param_3,short param_4, short param_5) { undefined2 uVar1; uVar1 = (undefined2)((uint)param_1 >> 0x10); FUN_0041395c(DAT_00467700,CONCAT22(uVar1,param_4 + -4),CONCAT22(uVar1,param_5 + -4),0x14); return; } void FUN_0042633e(void) { short sVar1; sVar1 = 0; do { (&DAT_0046761e)[sVar1] = 0x4a49; switch((&DAT_0046768e)[sVar1 * 9]) { case 0x3a99: (&DAT_0046761e)[sVar1] = 0x4a41; break; case 0x3a9a: (&DAT_0046761e)[sVar1] = 0x4a74; break; case 0x3a9b: (&DAT_0046761e)[sVar1] = 0x4a47; break; case 0x3a9c: (&DAT_0046761e)[sVar1] = 0x4a46; break; case 0x3a9e: (&DAT_0046761e)[sVar1] = 0x4a3e; break; case 0x3aa6: (&DAT_0046761e)[sVar1] = 0x4a48; break; case 0x3aa7: (&DAT_0046761e)[sVar1] = 0x4a48; break; case 0x3aa8: (&DAT_0046761e)[sVar1] = 0x4a48; break; case 0x3aa9: (&DAT_0046761e)[sVar1] = 0x4a48; break; case 0x3aaa: (&DAT_0046761e)[sVar1] = 0x4a6b; break; case 0x3aab: (&DAT_0046761e)[sVar1] = 0x4a6c; break; case 0x3aac: (&DAT_0046761e)[sVar1] = 0x4a48; break; case 0x3aad: (&DAT_0046761e)[sVar1] = 0x4a6c; break; case 0x3aae: (&DAT_0046761e)[sVar1] = 0x4a6c; break; case 0x3aaf: (&DAT_0046761e)[sVar1] = 0x4a3a; break; case 0x3ab0: (&DAT_0046761e)[sVar1] = 0x4a3b; break; case 0x3ab1: (&DAT_0046761e)[sVar1] = 0x4a59; break; case 0x3ab2: (&DAT_0046761e)[sVar1] = 0x4a59; break; case 0x3ab3: (&DAT_0046761e)[sVar1] = 0x4a59; break; case 0x3ab4: (&DAT_0046761e)[sVar1] = 0x4a5c; break; case 0x3ab5: (&DAT_0046761e)[sVar1] = 0x4a5c; break; case 0x3ab6: (&DAT_0046761e)[sVar1] = 0x4a5c; break; case 0x3ab7: (&DAT_0046761e)[sVar1] = 0x4a5c; break; case 0x3ab8: (&DAT_0046761e)[sVar1] = 0x4a42; break; case 0x3ab9: (&DAT_0046761e)[sVar1] = 0x4a43; break; case 0x3aba: (&DAT_0046761e)[sVar1] = 0x4a43; break; case 0x3abb: (&DAT_0046761e)[sVar1] = 0x4a43; break; case 0x3abd: (&DAT_0046761e)[sVar1] = 0x4a6e; break; case 0x3abe: (&DAT_0046761e)[sVar1] = 0x4a6e; break; case 0x3abf: (&DAT_0046761e)[sVar1] = 0x4a6e; break; case 0x3ac0: (&DAT_0046761e)[sVar1] = 0x1f9a; break; case 0x3ac1: (&DAT_0046761e)[sVar1] = 0x4a5d; break; case 0x3ac2: (&DAT_0046761e)[sVar1] = 0x4a5d; break; case 0x3ac3: (&DAT_0046761e)[sVar1] = 0x4a58; break; case 0x3ac4: (&DAT_0046761e)[sVar1] = 0x4a58; break; case 0x3ac5: (&DAT_0046761e)[sVar1] = 0x4a5e; break; case 0x3ac6: (&DAT_0046761e)[sVar1] = 0x4a74; break; case 0x3ac7: (&DAT_0046761e)[sVar1] = 0x4a5a; break; case 0x3ac8: (&DAT_0046761e)[sVar1] = 0x4a53; break; case 0x3ac9: (&DAT_0046761e)[sVar1] = 0x4a53; break; case 0x3aca: (&DAT_0046761e)[sVar1] = 0x4a53; break; case 0x3acb: (&DAT_0046761e)[sVar1] = 0x4a74; break; case 0x3acf: (&DAT_0046761e)[sVar1] = 0x4a59; break; case 0x3ad0: (&DAT_0046761e)[sVar1] = 0x4a73; break; case 0x3ad1: (&DAT_0046761e)[sVar1] = 0x4a54; break; case 0x3ad2: (&DAT_0046761e)[sVar1] = 0x4a50; break; case 0x3ad3: (&DAT_0046761e)[sVar1] = 0x4a4d; break; case 0x3ad4: (&DAT_0046761e)[sVar1] = 0x4a6a; break; case 0x3ad5: (&DAT_0046761e)[sVar1] = 0x1f9a; break; case 0x3ad8: (&DAT_0046761e)[sVar1] = 0x4a43; } sVar1 = sVar1 + 1; } while (sVar1 < 4); return; } void FUN_00426714(void) { int iVar1; int iVar2; undefined2 *puVar3; int iVar4; int iVar5; short in_stack_00000004; undefined4 uVar6; if (in_stack_00000004 == 0) { PoolFree(DAT_00467770); } uVar6 = 0x10; puVar3 = PoolAlloc(0x10); DAT_00467770 = puVar3; *puVar3 = 0; puVar3[1] = 5; puVar3[3] = 0x17a; puVar3[2] = 0x1ff; iVar5 = DAT_00467784; iVar2 = DAT_00467780; iVar1 = DAT_0046777c; iVar4 = (int)DAT_00461574; if (iVar4 == 1) { *(int *)(puVar3 + 6) = DAT_00467784; } else if (iVar4 == 2) { *(int *)(puVar3 + 6) = DAT_00467780; iVar5 = iVar2; } else { iVar5 = iVar4 + -3; if (iVar4 + -3 == 0) { *(int *)(puVar3 + 6) = DAT_0046777c; iVar5 = iVar1; } } puVar3[5] = 0; FUN_0043b9d2(puVar3,iVar5,uVar6,DAT_00467770,1); return; } void FUN_00426795(void) { FUN_0043b9d2(); return; } void FUN_004267a2(void) { FUN_00426714(); return; } void FUN_004267ab(void) { FUN_00426317(); FUN_00425a0d(); return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_004267cc(void) { if (_DAT_004615a8 == 0) { DAT_004677de = 0; DAT_004677dc = 0; _DAT_004615a8 = 1; Game::onWmNcactivateOrChar = FUN_00426848; } return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_004267f8(void) { if (_DAT_004615a8 != 0) { _DAT_004615a8 = 0; } return; } void FUN_0042681e(void) { FUN_004114b6(); FUN_004268a9(); return; } void FUN_00426842(void) { FUN_004114b6(); return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_00426848(void) { uint uVar1; undefined2 in_stack_00000004; if ((_DAT_004615a8 != 0) && (_DAT_004615aa == 0)) { uVar1 = (int)DAT_004677de + 1U & 0x8000001f; if ((int)uVar1 < 0) { uVar1 = (uVar1 - 1 | 0xffffffe0) + 1; } if ((short)uVar1 != DAT_004677dc) { *(undefined2 *)(&DAT_0046779c + DAT_004677de * 2) = in_stack_00000004; DAT_004677de = (short)uVar1; } _DAT_004615aa = 0; } return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address uint FUN_004268a9(void) { uint uVar1; uint uVar2; uVar1 = 0; if (_DAT_004615aa == 0) { if (DAT_004677de != DAT_004677dc) { uVar1 = CONCAT22(DAT_004677dc >> 0xf,*(undefined2 *)(&DAT_0046779c + DAT_004677dc * 2)); DAT_004677dc = DAT_004677dc + 1; uVar2 = (int)DAT_004677dc & 0x8000001f; if ((int)uVar2 < 0) { uVar2 = (uVar2 - 1 | 0xffffffe0) + 1; } DAT_004677dc = (short)uVar2; } _DAT_004615aa = 0; } return uVar1; } void FUN_00426918(void) { uint in_stack_00000008; char local_110 [268]; if ((in_stack_00000008 & 0x8000) != 0) { Strcpy(local_110,(char *)&lpBuffer_0046a770); FUN_0044feec(); } FUN_00452220(); return; } void FUN_00426973(uint param_1,undefined4 param_2,DWORD param_3,LPCVOID *param_4) { FUN_00451f00(param_1,param_2,param_3,param_4); return; } int FUN_00426981(undefined4 param_1,undefined *param_2,byte **param_3,byte **param_4, undefined4 param_5,uint param_6) { uint uVar1; uVar1 = FUN_004524ac(param_6 & 0xffff,param_2,param_3,param_5,param_6 & 0xffff,1,param_4); return uVar1 * (param_6 & 0xffff); } int FUN_004269a4(undefined4 param_1,undefined4 param_2,byte **param_3,byte **param_4, undefined4 param_5,uint param_6) { uint uVar1; uVar1 = FUN_00452624(param_6 & 0xffff,param_2,param_3,param_5,param_6 & 0xffff,1,param_4); return uVar1 * (param_6 & 0xffff); } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void __cdecl Puzzles::SetParametersForForce_(void) { uint uVar1; uint extraout_ECX; undefined4 extraout_EDX; undefined4 extraout_EDX_00; undefined2 *puVar2; _DAT_00467890 = 0; DAT_00469742 = 0x1f73; DAT_00469744 = 0x1f67; DAT_00469746 = 0x1f81; DAT_00469748 = 0x4a6d; DAT_0046974a = 0x1fa7; DAT_0046974c = 0x4a5b; DAT_0046974e = 0x1f5f; DAT_00469750 = 0x4a61; DAT_00469752 = 0x4a4c; DAT_00469754 = 0x1f5c; DAT_00469756 = 0x4a77; DAT_00469758 = 0xffff; puVar2 = &DAT_00469742; uVar1 = FUN_0043ff91(&DAT_00469742); FUN_00440113(uVar1,extraout_EDX,(uint)puVar2); FUN_0044c950(); uVar1 = SetParametersForForce(); FUN_004272d1(uVar1,extraout_EDX_00,extraout_ECX); FUN_00427184(); FUN_00429980(); FUN_0041029e(); _DAT_00467824 = FUN_0044ca04(); DAT_00467838 = FUN_00412ac4(0x42a6); DAT_0046783c = FUN_0043b58e(); *(undefined2 *)(DAT_0046783c + 0x12) = 0; FUN_0042ae0e(); FUN_0043139c(); DAT_00469544 = &LAB_0042ae7f; _DAT_00467836 = 0; return; } void FUN_004270f8(void) { int iVar1; uint uVar2; uint extraout_ECX; undefined4 extraout_EDX; int in_stack_00000004; FUN_004465a5(0x1f5c,5,0); iVar1 = *(int *)(in_stack_00000004 + 0x1e); uVar2 = iVar1 - 1; if (iVar1 == 0) { DAT_0046177a = 1; } else if (uVar2 == 0) { DAT_0046177a = 2; } else { uVar2 = iVar1 - 2; if (uVar2 == 0) { DAT_0046177a = 3; } } FUN_00412d0c(uVar2,extraout_EDX,extraout_ECX,DAT_00467850); DAT_00467850 = FUN_00412ac4(DAT_0046177a + 0x4272); FUN_00412e70(); FUN_0041395c(DAT_00467850,6,0x103,100); return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_00427184(void) { undefined4 extraout_EDX; short sVar1; undefined4 this; if (DAT_0046782a == 0) { BigThing6Eh::processNodes_(DAT_00467844); FUN_00412dc8(DAT_00467844); } BigThing6Eh::processNodes_(DAT_0046784c); BigThing6Eh::processNodes_(DAT_00467848); BigThing6Eh::processNodes_(DAT_00467850); FUN_00412e70(); BigThing6Eh::processNodes_(DAT_00467858); FUN_00412e70(); BigThing6Eh::processNodes_(DAT_00467860); FUN_004129d4(DAT_00467860,0); FUN_00412e70(); sVar1 = 0; do { if ((&DAT_0046177e)[sVar1] != 0) { this = (&DAT_00467864)[sVar1]; BigThing6Eh::processNodes_(this); FUN_00412e70((int)sVar1,extraout_EDX,this,(&DAT_00467864)[sVar1]); } sVar1 = sVar1 + 1; } while (sVar1 < 4); if (_DAT_00461786 != 0) { BigThing6Eh::processNodes_(DAT_00467874); FUN_00412e70(); BigThing6Eh::processNodes_(DAT_0046787c); FUN_00412e70(); } if (_DAT_00461788 != 0) { BigThing6Eh::processNodes_(DAT_00467878); FUN_00412e70(); BigThing6Eh::processNodes_(DAT_00467880); FUN_00412e70(); } FUN_0043fef9(DAT_0046782a); return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_004272d1(uint param_1,undefined4 param_2,uint param_3) { uint uVar1; undefined4 uVar2; uint extraout_ECX; undefined4 extraout_EDX; short sVar3; FUN_00431024(param_1,param_2,param_3,17000); DAT_00467840 = FUN_00412ac4(17000); uVar1 = FUN_00413cf4(); FUN_00412d0c(uVar1,extraout_EDX,extraout_ECX,DAT_00467840); DAT_00467844 = FUN_00412ac4(DAT_00461778 + 0x426a); FUN_0041395c(DAT_00467844, CONCAT22((short)((uint)(DAT_00461778 * 2) >> 0x10), *(undefined2 *)(&DAT_00461700 + DAT_00461778 * 4)), CONCAT22((short)((uint)(DAT_00461778 * 2) >> 0x10), *(undefined2 *)(&DAT_00461702 + DAT_00461778 * 4)),0x14); DAT_0046784c = FUN_00412ac4(0x429f); FUN_0041395c(DAT_0046784c,0x12,0x19,100); DAT_00467848 = FUN_00412ac4(0x4269); FUN_0041395c(DAT_00467848,0x18e,0x143,100); DAT_00467850 = FUN_00412ac4(DAT_0046177a + 0x4272); FUN_0041395c(DAT_00467850,6,0x103,100); DAT_00467858 = FUN_00412ac4(DAT_0046177c + 0x4284); FUN_0041395c(DAT_00467858, CONCAT22((short)((uint)(DAT_0046177c * 2) >> 0x10), *(undefined2 *)(&DAT_00461654 + DAT_0046177c * 4)), CONCAT22((short)((uint)(DAT_0046177c * 2) >> 0x10), *(undefined2 *)(&DAT_00461656 + DAT_0046177c * 4)),0x3c); DAT_00467860 = FUN_00412ac4(0x427b); FUN_004129d4(DAT_00467860,0); FUN_0041395c(DAT_00467860,0x18e,0xe3,200); sVar3 = 0; do { if ((&DAT_0046177e)[sVar3] != 0) { uVar2 = FUN_00412ac4(sVar3 + 0x4280); (&DAT_00467864)[sVar3] = uVar2; FUN_0041395c((&DAT_00467864)[sVar3], CONCAT22((short)((uint)(sVar3 * 2) >> 0x10),(&DAT_0046161c)[sVar3 * 2]), CONCAT22((short)((uint)(sVar3 * 2) >> 0x10),(&DAT_0046161e)[sVar3 * 2]),0x46); } sVar3 = sVar3 + 1; } while (sVar3 < 4); if (_DAT_00461786 != 0) { DAT_00467874 = FUN_00412ac4(0x427c); FUN_0041395c(DAT_00467874,0x3c,0x68,0x3c); DAT_0046787c = FUN_00412ac4(0x427d); FUN_0041395c(DAT_0046787c,0x3c,0x87,0x3c); } if (_DAT_00461788 != 0) { DAT_00467878 = FUN_00412ac4(0x427f); FUN_0041395c(DAT_00467878,0xf,0x68,0x3c); DAT_00467880 = FUN_00412ac4(0x427e); FUN_0041395c(DAT_00467880,0xf,0x82,0x3c); } return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_00427563(uint param_1,undefined4 param_2,uint param_3) { uint uVar1; uint uVar2; uint uVar3; undefined4 extraout_EDX; undefined4 extraout_EDX_00; undefined4 extraout_EDX_01; undefined4 extraout_EDX_02; undefined4 extraout_EDX_03; undefined4 extraout_EDX_04; undefined4 extraout_EDX_05; undefined4 extraout_EDX_06; undefined4 extraout_EDX_07; undefined4 extraout_EDX_08; undefined4 extraout_EDX_09; undefined4 extraout_EDX_10; undefined4 uVar4; short sVar5; uVar2 = DAT_00467844; uVar1 = FUN_00412d0c(param_1,param_2,param_3,DAT_00467844); uVar3 = DAT_00467848; uVar1 = FUN_00412d0c(uVar1,extraout_EDX,uVar2,DAT_00467848); uVar2 = DAT_0046784c; uVar1 = FUN_00412d0c(uVar1,extraout_EDX_00,uVar3,DAT_0046784c); uVar3 = DAT_00467850; uVar2 = FUN_00412d0c(uVar1,extraout_EDX_01,uVar2,DAT_00467850); uVar4 = extraout_EDX_02; if (DAT_00461792 != -1) { uVar1 = DAT_00467854; uVar2 = FUN_00412d0c(uVar2,extraout_EDX_02,uVar3,DAT_00467854); uVar3 = uVar1; uVar4 = extraout_EDX_03; } uVar1 = DAT_00467858; uVar3 = FUN_00412d0c(uVar2,uVar4,uVar3,DAT_00467858); uVar2 = DAT_00467860; FUN_00412d0c(uVar3,extraout_EDX_04,uVar1,DAT_00467860); sVar5 = 0; uVar4 = extraout_EDX_05; do { uVar3 = (uint)sVar5; if ((&DAT_0046177e)[uVar3] != 0) { uVar1 = (&DAT_00467864)[sVar5]; uVar3 = FUN_00412d0c((int)sVar5,uVar4,uVar2,(&DAT_00467864)[sVar5]); uVar2 = uVar1; uVar4 = extraout_EDX_06; } sVar5 = sVar5 + 1; } while (sVar5 < 4); if (_DAT_00461786 != 0) { uVar1 = DAT_00467874; uVar3 = FUN_00412d0c(uVar3,uVar4,uVar2,DAT_00467874); uVar2 = DAT_0046787c; uVar3 = FUN_00412d0c(uVar3,extraout_EDX_07,uVar1,DAT_0046787c); uVar4 = extraout_EDX_08; } if (_DAT_00461788 != 0) { uVar1 = DAT_00467878; uVar3 = FUN_00412d0c(uVar3,uVar4,uVar2,DAT_00467878); uVar2 = DAT_00467880; uVar3 = FUN_00412d0c(uVar3,extraout_EDX_09,uVar1,DAT_00467880); uVar4 = extraout_EDX_10; } if (_DAT_00461794 != 0) { FUN_00412d0c(uVar3,uVar4,uVar2,DAT_0046785c); } return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_00427645(void) { void *pvVar1; short sVar2; void *apvStackY_20400 [32762]; void *local_400 [5]; undefined1 local_3ec [1000]; FUN_00412dc8(DAT_0046784c); FUN_00412784(); BigThing6Eh::processNodes_(DAT_0046784c); FUN_00412784(); FUN_004465a5(0x1f5c,5,0); Memset(local_3ec,0,1000); local_400[0] = Resource::Load(DAT_004697a8,&_TEXT9); FUN_0044ffac(); FUN_0045008c(); for (sVar2 = 1; sVar2 < _DAT_0046977c; sVar2 = sVar2 + 1) { pvVar1 = Resource::Load((&DAT_004697a8)[sVar2],&_TEXT10); local_400[sVar2] = pvVar1; FUN_0044ffac(); FUN_0044ffc8(); } FUN_0043f27a(); for (sVar2 = 0; sVar2 < _DAT_0046977c; sVar2 = sVar2 + 1) { FUN_00440695((&DAT_004697a8)[sVar2],&_TEXT11); } return; } void FUN_00427794(undefined4 param_1,undefined4 param_2,undefined4 param_3) { undefined4 local_8; local_8 = param_3; FUN_004104a4((int)&local_8 + 2,param_2,param_3,(undefined2 *)((int)&local_8 + 2), (undefined2 *)&local_8); DAT_0046178e = (short)((local_8._2_2_ + -0x1b8) / 6); if (DAT_0046178e < 0) { DAT_0046178e = 0; } if (7 < DAT_0046178e) { DAT_0046178e = 7; } BigThing6Eh::processNodes_(DAT_00467860); FUN_004129d4(DAT_00467860,DAT_0046178e); FUN_00412e70(); FUN_0041395c(DAT_00467860,0x18e,0xe3,200); return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void Puzzles::SetParametersForForce(void) { short sVar1; DAT_004615c4 = 3; DAT_0046178c = 0; DAT_00461770 = 4; DAT_00461776 = 3; DAT_00461774 = 3; DAT_00461772 = 3; DAT_0046178e = 0; DAT_00467832 = 0; DAT_0046178a = 1; DAT_00461792 = 0xffff; DAT_0046782a = 0; _DAT_00461794 = 0; DAT_00467834 = 0; if (42 < currentPuzzle) { currentPuzzle = 1; } sVar1 = 0; do { (&DAT_0046177e)[sVar1] = 0; sVar1 = sVar1 + 1; } while (sVar1 < 4); switch(currentPuzzle) { case 1: _DAT_0046977a = 4; _DAT_0046977c = 1; DAT_0046978a = 17000; DAT_0046978c = 0x4269; DAT_0046978e = 0x426a; DAT_00469790 = 0x426b; DAT_00469792 = 0xffff; DAT_004697a8 = 0x428a; DAT_0046977e = 17000; DAT_00469780 = 0x42d6; _DAT_00467830 = 0; DAT_0046177a = 0; DAT_00461770 = 1; DAT_0046177e = 0; DAT_00461780 = 1; DAT_00461782 = 0; DAT_00461784 = 0; _DAT_00461786 = 0; _DAT_00461788 = 0; DAT_0046782c = 1; DAT_0046177c = 1; DAT_00461778 = 3; break; case 2: _DAT_0046977a = 4; _DAT_0046977c = 1; DAT_0046978a = 17000; DAT_0046978c = 0x4269; DAT_0046978e = 0x426a; DAT_00469790 = 0x426b; DAT_00469792 = 0xffff; DAT_004697a8 = 0x428a; DAT_0046977e = 17000; DAT_00469780 = 0x42d6; _DAT_00467830 = 0; DAT_0046177a = 0; DAT_00461770 = 1; DAT_0046177e = 0; DAT_00461780 = 1; DAT_00461782 = 0; DAT_00461784 = 0; _DAT_00461786 = 0; _DAT_00461788 = 0; DAT_0046782c = 1; DAT_0046177c = 1; DAT_00461778 = 2; break; case 3: _DAT_0046977a = 4; _DAT_0046977c = 1; DAT_0046978a = 17000; DAT_0046978c = 0x4269; DAT_0046978e = 0x426a; DAT_00469790 = 0x426b; DAT_00469792 = 0xffff; DAT_004697a8 = 0x428a; DAT_0046977e = 17000; DAT_00469780 = 0x42d6; _DAT_00467830 = 0; DAT_0046177a = 0; DAT_00461770 = 1; DAT_0046177e = 0; DAT_00461780 = 1; DAT_00461782 = 0; DAT_00461784 = 0; _DAT_00461786 = 0; _DAT_00461788 = 0; DAT_0046782c = 1; DAT_0046177c = 1; DAT_00461778 = 6; break; case 4: _DAT_0046977a = 4; _DAT_0046977c = 1; DAT_0046978a = 0x4296; DAT_0046978c = 0x4297; DAT_0046978e = 0x4298; DAT_00469790 = 0x4299; DAT_00469792 = 0xffff; DAT_004697a8 = 0x428b; DAT_0046977e = 0x4269; DAT_00469780 = 0x42f3; _DAT_00467830 = 0; DAT_0046177a = 0; DAT_00461770 = 3; DAT_0046177e = 0; DAT_00461780 = 1; DAT_00461782 = 0; DAT_00461784 = 1; _DAT_00461786 = 0; _DAT_00461788 = 0; DAT_0046782c = 1; DAT_0046177c = 1; DAT_00461778 = 0; break; case 5: _DAT_0046977a = 4; _DAT_0046977c = 1; DAT_0046978a = 0x4296; DAT_0046978c = 0x4297; DAT_0046978e = 0x4298; DAT_00469790 = 0x4299; DAT_00469792 = 0xffff; DAT_004697a8 = 0x428b; DAT_0046977e = 0x4269; DAT_00469780 = 0x42f3; _DAT_00467830 = 0; DAT_0046177a = 0; DAT_00461770 = 3; DAT_0046177e = 0; DAT_00461780 = 1; DAT_00461782 = 0; DAT_00461784 = 1; _DAT_00461786 = 0; _DAT_00461788 = 0; DAT_0046782c = 1; DAT_0046177c = 1; DAT_00461778 = 2; break; case 6: _DAT_0046977a = 4; _DAT_0046977c = 1; DAT_0046978a = 0x4296; DAT_0046978c = 0x4297; DAT_0046978e = 0x4298; DAT_00469790 = 0x4299; DAT_00469792 = 0xffff; DAT_004697a8 = 0x428b; DAT_0046977e = 0x4269; DAT_00469780 = 0x42f3; _DAT_00467830 = 0; DAT_0046177a = 0; DAT_00461770 = 3; DAT_0046177e = 0; DAT_00461780 = 1; DAT_00461782 = 0; DAT_00461784 = 1; _DAT_00461786 = 0; _DAT_00461788 = 0; DAT_0046782c = 1; DAT_0046177c = 1; DAT_00461778 = 3; break; case 7: _DAT_0046977a = 2; _DAT_0046977c = 1; DAT_0046978a = 0x429a; DAT_0046978c = 0x429b; DAT_0046978e = 0xffff; DAT_004697a8 = 0x428c; DAT_0046977e = 0x426a; DAT_00469780 = 0x42f7; _DAT_00467830 = 0; DAT_0046177a = 0; DAT_00461770 = 2; DAT_0046177e = 0; DAT_00461780 = 1; DAT_00461782 = 1; DAT_00461784 = 1; _DAT_00461786 = 0; _DAT_00461788 = 0; DAT_0046782c = 1; DAT_0046177c = 1; DAT_00461778 = 3; break; case 8: _DAT_0046977a = 2; _DAT_0046977c = 1; DAT_0046978a = 0x429a; DAT_0046978c = 0x429b; DAT_0046978e = 0xffff; DAT_004697a8 = 0x428c; DAT_0046977e = 0x426a; DAT_00469780 = 0x42f7; _DAT_00467830 = 0; DAT_0046177a = 0; DAT_00461770 = 2; DAT_0046177e = 0; DAT_00461780 = 1; DAT_00461782 = 1; DAT_00461784 = 1; _DAT_00461786 = 0; _DAT_00461788 = 0; DAT_0046782c = 1; DAT_0046177c = 1; DAT_00461778 = 7; break; case 9: _DAT_0046977a = 2; _DAT_0046977c = 1; DAT_0046978a = 0x429a; DAT_0046978c = 0x429b; DAT_0046978e = 0xffff; DAT_004697a8 = 0x428c; DAT_0046977e = 0x426a; DAT_00469780 = 0x42f7; _DAT_00467830 = 0; DAT_0046177a = 0; DAT_00461770 = 2; DAT_0046177e = 0; DAT_00461780 = 1; DAT_00461782 = 1; DAT_00461784 = 1; _DAT_00461786 = 0; _DAT_00461788 = 0; DAT_0046782c = 1; DAT_0046177c = 1; DAT_00461778 = 5; break; case 10: _DAT_0046977a = 3; _DAT_0046977c = 1; DAT_0046978a = 0x426c; DAT_0046978c = 0x426d; DAT_0046978e = 0x426e; DAT_00469790 = 0xffff; DAT_004697a8 = 0x428d; DAT_0046977e = 0x426b; DAT_00469780 = 0x42d7; _DAT_00467830 = 0; DAT_0046177a = 0; DAT_00461770 = 0; DAT_0046177e = 1; DAT_00461780 = 1; DAT_00461782 = 1; DAT_00461784 = 1; _DAT_00461786 = 0; _DAT_00461788 = 0; DAT_0046782c = 1; DAT_0046177c = 1; DAT_00461778 = 4; break; case 0xb: _DAT_0046977a = 3; _DAT_0046977c = 1; DAT_0046978a = 0x426c; DAT_0046978c = 0x426d; DAT_0046978e = 0x426e; DAT_00469790 = 0xffff; DAT_004697a8 = 0x428d; DAT_0046977e = 0x426b; DAT_00469780 = 0x42d7; _DAT_00467830 = 0; DAT_00461770 = 0; DAT_0046177a = 0; DAT_0046177e = 1; DAT_00461780 = 1; DAT_00461782 = 1; DAT_00461784 = 1; _DAT_00461786 = 0; _DAT_00461788 = 0; DAT_0046782c = 1; DAT_0046177c = 1; DAT_00461778 = 1; break; case 0xc: _DAT_0046977a = 3; _DAT_0046977c = 1; DAT_0046978a = 0x426c; DAT_0046978c = 0x426d; DAT_0046978e = 0x426e; DAT_00469790 = 0xffff; DAT_004697a8 = 0x428d; DAT_0046977e = 0x426b; DAT_00469780 = 0x42d7; _DAT_00467830 = 0; DAT_0046177a = 0; DAT_00461770 = 0; DAT_0046177e = 1; DAT_00461780 = 1; DAT_00461782 = 1; DAT_00461784 = 1; _DAT_00461786 = 0; _DAT_00461788 = 0; DAT_0046782c = 1; DAT_0046177c = 1; DAT_00461778 = 0; break; case 0xd: _DAT_0046977a = 5; _DAT_0046977c = 1; DAT_0046978a = 0x426f; DAT_0046978c = 0x4270; DAT_0046978e = 0x4271; DAT_00469790 = 0x4272; DAT_00469792 = 0x4273; DAT_00469794 = 0xffff; DAT_004697a8 = 0x428e; DAT_0046977e = 0x426c; DAT_00469780 = 0x42d8; _DAT_00467830 = 0; DAT_00461774 = 0; DAT_0046177a = 1; DAT_00461770 = 1; DAT_0046177e = 1; DAT_00461780 = 1; DAT_00461782 = 1; DAT_00461784 = 1; _DAT_00461786 = 0; _DAT_00461788 = 0; DAT_0046782c = 1; DAT_0046177c = 1; DAT_00461778 = 7; break; case 0xe: _DAT_0046977a = 5; _DAT_0046977c = 1; DAT_0046978a = 0x4274; DAT_0046978c = 0x4275; DAT_0046978e = 0x4276; DAT_00469790 = 0x4277; DAT_00469792 = 0x4278; DAT_00469794 = 0xffff; DAT_004697a8 = 0x428f; DAT_0046977e = 0x426d; DAT_00469780 = 0x42d9; _DAT_00467830 = 0; DAT_00461774 = 2; DAT_0046177a = 3; DAT_00461770 = 3; DAT_0046177e = 1; DAT_00461780 = 1; DAT_00461782 = 1; DAT_00461784 = 1; _DAT_00461786 = 0; _DAT_00461788 = 0; DAT_0046782c = 1; DAT_0046177c = 1; DAT_00461778 = 0; break; case 0xf: _DAT_0046977a = 5; _DAT_0046977c = 1; DAT_0046978a = 0x426f; DAT_0046978c = 0x4270; DAT_0046978e = 0x4271; DAT_00469790 = 0x4272; DAT_00469792 = 0x4273; DAT_00469794 = 0xffff; DAT_004697a8 = 0x428e; DAT_0046977e = 0x426e; DAT_00469780 = 0x42da; _DAT_00467830 = 0; DAT_00461774 = 0; DAT_0046177a = 1; DAT_00461770 = 3; DAT_0046177e = 1; DAT_00461780 = 1; DAT_00461782 = 1; DAT_00461784 = 1; _DAT_00461786 = 0; _DAT_00461788 = 0; DAT_0046782c = 1; DAT_0046177c = 1; DAT_00461778 = 1; break; case 0x10: _DAT_0046977a = 3; _DAT_0046977c = 1; DAT_0046978a = 0x4279; DAT_0046978c = 0x427b; DAT_0046978e = 0x427c; DAT_00469790 = 0xffff; DAT_004697a8 = 0x4290; DAT_0046977e = 0x426f; DAT_00469780 = 0x42db; _DAT_00467830 = 0; DAT_00461770 = 1; DAT_00461776 = 2; DAT_00461774 = 3; DAT_0046177a = 2; DAT_0046177e = 1; DAT_00461780 = 1; DAT_00461782 = 1; DAT_00461784 = 1; _DAT_00461786 = 1; _DAT_00461788 = 0; DAT_0046782c = 1; DAT_0046177c = 1; DAT_00461778 = 6; break; case 0x11: _DAT_0046977a = 3; _DAT_0046977c = 1; DAT_0046978a = 0x4279; DAT_0046978c = 0x427b; DAT_0046978e = 0x427c; DAT_00469790 = 0xffff; DAT_004697a8 = 0x4290; DAT_0046977e = 0x4270; DAT_00469780 = 0x42dc; _DAT_00467830 = 0; DAT_0046177a = 2; DAT_00461776 = 2; DAT_00461774 = 3; DAT_00461770 = 0; DAT_0046177e = 1; DAT_00461780 = 1; DAT_00461782 = 1; DAT_00461784 = 1; _DAT_00461786 = 1; _DAT_00461788 = 0; DAT_0046782c = 1; DAT_0046177c = 1; DAT_00461778 = 4; break; case 0x12: _DAT_0046977a = 3; _DAT_0046977c = 1; DAT_0046978a = 0x4279; DAT_0046978c = 0x427b; DAT_0046978e = 0x427c; DAT_00469790 = 0xffff; DAT_004697a8 = 0x4290; DAT_0046977e = 0x4271; DAT_00469780 = 0x42dd; _DAT_00467830 = 0; DAT_00461776 = 2; DAT_0046177a = 2; DAT_00461774 = 3; DAT_00461770 = 3; DAT_0046177e = 1; DAT_00461780 = 1; DAT_00461782 = 1; DAT_00461784 = 1; _DAT_00461786 = 1; _DAT_00461788 = 0; DAT_0046782c = 1; DAT_0046177c = 1; DAT_00461778 = 5; break; case 0x13: _DAT_0046977a = 4; _DAT_0046977c = 1; DAT_0046978a = 0x427d; DAT_0046978c = 0x427e; DAT_0046978e = 0x427f; DAT_00469790 = 0x4280; DAT_00469792 = 0xffff; DAT_004697a8 = 0x4291; DAT_0046977e = 0x4272; DAT_00469780 = 0x42df; _DAT_00467830 = 0; DAT_00461776 = 0; DAT_0046177a = 2; DAT_00461774 = 3; DAT_00461770 = 1; DAT_0046177e = 1; DAT_00461780 = 1; DAT_00461782 = 1; DAT_00461784 = 1; _DAT_00461786 = 1; _DAT_00461788 = 1; DAT_0046782c = 1; DAT_0046177c = 1; DAT_00461778 = 4; break; case 0x14: _DAT_0046977a = 4; _DAT_0046977c = 1; DAT_0046978a = 0x427d; DAT_0046978c = 0x427e; DAT_0046978e = 0x427f; DAT_00469790 = 0x4280; DAT_00469792 = 0xffff; DAT_004697a8 = 0x4291; DAT_0046977e = 0x4273; DAT_00469780 = 0x42e0; _DAT_00467830 = 0; DAT_0046177a = 2; DAT_00461776 = 0; DAT_00461774 = 3; DAT_00461770 = 3; DAT_0046177e = 1; DAT_00461780 = 1; DAT_00461782 = 1; DAT_00461784 = 1; _DAT_00461786 = 1; _DAT_00461788 = 1; DAT_0046782c = 1; DAT_0046177c = 1; DAT_00461778 = 1; break; case 0x15: _DAT_0046977a = 4; _DAT_0046977c = 1; DAT_0046978a = 0x427d; DAT_0046978c = 0x427e; DAT_0046978e = 0x427f; DAT_00469790 = 0x4280; DAT_00469792 = 0xffff; DAT_004697a8 = 0x4291; DAT_0046977e = 0x4274; DAT_00469780 = 0x42e1; _DAT_00467830 = 0; DAT_00461776 = 0; DAT_0046177a = 2; DAT_00461774 = 3; DAT_00461770 = 0; DAT_0046177e = 1; DAT_00461780 = 1; DAT_00461782 = 1; DAT_00461784 = 1; _DAT_00461786 = 1; _DAT_00461788 = 1; DAT_0046782c = 1; DAT_0046177c = 1; DAT_00461778 = 1; break; case 0x16: _DAT_0046977a = 4; _DAT_0046977c = 1; DAT_0046978a = 0x4281; DAT_0046978c = 0x4282; DAT_0046978e = 0x4283; DAT_00469790 = 0x4284; DAT_00469792 = 0xffff; DAT_004697a8 = 0x4292; DAT_0046977e = 0x4275; DAT_00469780 = 0x42e2; _DAT_00467830 = 1; DAT_00461772 = 0; DAT_0046177a = 2; DAT_00461774 = 3; DAT_00461770 = 1; DAT_0046177e = 1; DAT_00461780 = 1; DAT_00461782 = 1; DAT_00461784 = 1; _DAT_00461786 = 1; _DAT_00461788 = 1; DAT_0046782c = 0; DAT_0046177c = 9; DAT_00461778 = 5; break; case 0x17: _DAT_0046977a = 4; _DAT_0046977c = 1; DAT_0046978a = 0x4281; DAT_0046978c = 0x4282; DAT_0046978e = 0x4283; DAT_00469790 = 0x4284; DAT_00469792 = 0xffff; DAT_004697a8 = 0x4292; DAT_0046977e = 0x4276; DAT_00469780 = 0x42e3; _DAT_00467830 = 1; DAT_00461774 = 3; DAT_00461772 = 2; DAT_0046177a = 2; DAT_00461770 = 1; DAT_0046177e = 1; DAT_00461780 = 1; DAT_00461782 = 1; DAT_00461784 = 1; _DAT_00461786 = 1; _DAT_00461788 = 1; DAT_0046782c = 2; DAT_0046177c = 0xb; DAT_00461778 = 5; break; case 0x18: _DAT_0046977a = 4; _DAT_0046977c = 1; DAT_0046978a = 0x4281; DAT_0046978c = 0x4282; DAT_0046978e = 0x4283; DAT_00469790 = 0x4284; DAT_00469792 = 0xffff; DAT_004697a8 = 0x4292; DAT_0046977e = 0x4275; DAT_00469780 = 0x42e2; _DAT_00467830 = 1; DAT_00461774 = 3; DAT_00461772 = 0; DAT_0046177a = 2; DAT_00461770 = 1; DAT_0046177e = 1; DAT_00461780 = 1; DAT_00461782 = 1; DAT_00461784 = 1; _DAT_00461786 = 1; _DAT_00461788 = 1; DAT_0046782c = 0; DAT_0046177c = 9; DAT_00461778 = 2; break; case 0x19: _DAT_0046977a = 3; _DAT_0046977c = 1; DAT_0046978a = 0x4285; DAT_0046978c = 0x4286; DAT_0046978e = 0x4287; DAT_00469790 = 0xffff; DAT_004697a8 = 0x4293; DAT_0046977e = 0x4277; DAT_00469780 = 0x42e4; _DAT_00467830 = 1; DAT_00461772 = 3; DAT_00461776 = 2; DAT_00461774 = 3; DAT_0046177a = 2; DAT_00461770 = 4; DAT_0046177e = 1; DAT_00461780 = 1; DAT_00461782 = 1; DAT_00461784 = 1; _DAT_00461786 = 1; _DAT_00461788 = 1; DAT_0046782c = 1; DAT_0046177c = 10; DAT_00461778 = 0; break; case 0x1a: _DAT_0046977a = 5; _DAT_0046977c = 1; DAT_0046978a = 0x4288; DAT_0046978c = 0x4289; DAT_0046978e = 0x428a; DAT_00469790 = 0x428b; DAT_00469792 = 0x428c; DAT_00469794 = 0xffff; DAT_004697a8 = 0x4294; DAT_0046977e = 0x4278; DAT_00469780 = 0x42e5; _DAT_00467830 = 1; DAT_00461772 = 3; DAT_00461776 = 0; DAT_00461774 = 3; DAT_0046177a = 2; DAT_00461770 = 4; DAT_0046177e = 1; DAT_00461780 = 1; DAT_00461782 = 1; DAT_00461784 = 1; _DAT_00461786 = 1; _DAT_00461788 = 1; DAT_0046782c = 1; DAT_0046177c = 10; DAT_00461778 = 7; break; case 0x1b: _DAT_0046977a = 2; _DAT_0046977c = 1; DAT_0046978a = 0x428d; DAT_0046978c = 0x428e; DAT_0046978e = 0xffff; DAT_004697a8 = 0x4295; DAT_0046977e = 0x4279; DAT_00469780 = 0x42e6; _DAT_00467830 = 1; DAT_00461774 = 0; DAT_00461772 = 3; DAT_0046177a = 1; DAT_00461770 = 4; DAT_0046177e = 1; DAT_00461780 = 1; DAT_00461782 = 1; DAT_00461784 = 1; _DAT_00461786 = 1; _DAT_00461788 = 1; DAT_0046782c = 1; DAT_0046177c = 10; DAT_00461778 = 0; break; case 0x1c: _DAT_0046977a = 2; _DAT_0046977c = 1; DAT_0046978a = 0x428f; DAT_0046978c = 0x4290; DAT_0046978e = 0xffff; DAT_004697a8 = 0x4296; DAT_0046977e = 0x427b; DAT_00469780 = 0x42e7; _DAT_00467830 = 1; DAT_00461774 = 2; DAT_00461772 = 3; DAT_0046177a = 3; DAT_00461770 = 4; DAT_0046177e = 1; DAT_00461780 = 1; DAT_00461782 = 1; DAT_00461784 = 1; _DAT_00461786 = 1; _DAT_00461788 = 1; DAT_0046782c = 1; DAT_0046177c = 10; DAT_00461778 = 7; break; case 0x1d: _DAT_0046977a = 2; _DAT_0046977c = 1; DAT_0046978a = 0x4291; DAT_0046978c = 0x4292; DAT_0046978e = 0xffff; DAT_004697a8 = 0x4297; DAT_0046977e = 0x427c; DAT_00469780 = 0x42e8; _DAT_00467830 = 1; DAT_00461772 = 0; DAT_0046177a = 2; DAT_00461770 = 4; DAT_0046177e = 1; DAT_00461780 = 1; DAT_00461782 = 1; DAT_00461784 = 1; _DAT_00461786 = 1; _DAT_00461788 = 1; DAT_0046177c = 9; DAT_0046782c = 0; DAT_00461778 = 0; break; case 0x1e: _DAT_0046977a = 2; _DAT_0046977c = 1; DAT_0046978a = 0x4293; DAT_0046978c = 0x4294; DAT_0046978e = 0xffff; DAT_004697a8 = 0x4298; DAT_0046977e = 0x427d; DAT_00469780 = 0x42e9; _DAT_00467830 = 1; DAT_00461772 = 2; DAT_0046177a = 2; DAT_00461770 = 4; DAT_0046177e = 1; DAT_00461780 = 1; DAT_00461782 = 1; DAT_00461784 = 1; _DAT_00461786 = 1; _DAT_00461788 = 1; DAT_0046177c = 0xb; DAT_0046782c = 2; DAT_00461778 = 7; break; case 0x1f: _DAT_0046977a = 1; _DAT_0046977c = 1; DAT_0046978a = 0x4295; DAT_0046978c = 0xffff; DAT_004697a8 = 0x4299; DAT_0046977e = 0x427e; DAT_00469780 = 0x42ea; _DAT_00467830 = 1; DAT_00461772 = 3; DAT_0046177a = 2; DAT_00461776 = 2; DAT_00461774 = 0; DAT_00461770 = 4; DAT_0046177e = 1; DAT_00461780 = 1; DAT_00461782 = 1; DAT_00461784 = 1; _DAT_00461786 = 1; _DAT_00461788 = 1; DAT_0046177c = 10; DAT_0046782c = 1; DAT_00461778 = 1; break; case 0x20: _DAT_0046977a = 1; _DAT_0046977c = 1; DAT_0046978a = 0x4295; DAT_0046978c = 0xffff; DAT_004697a8 = 0x4299; DAT_0046977e = 0x427f; DAT_00469780 = 0x42eb; _DAT_00467830 = 1; DAT_00461772 = 3; DAT_0046177a = 2; DAT_00461774 = 2; DAT_00461776 = 0; DAT_00461770 = 4; DAT_0046177e = 1; DAT_00461780 = 1; DAT_00461782 = 1; DAT_00461784 = 1; _DAT_00461786 = 1; _DAT_00461788 = 1; DAT_0046177c = 10; DAT_0046782c = 1; DAT_00461778 = 7; break; case 0x21: _DAT_0046977a = 1; _DAT_0046977c = 1; DAT_0046978a = 0x4295; DAT_0046978c = 0xffff; DAT_004697a8 = 0x4299; DAT_0046977e = 0x4280; DAT_00469780 = 0x42ec; _DAT_00467830 = 1; DAT_00461772 = 3; DAT_0046177a = 2; DAT_00461774 = 0; DAT_00461776 = 0; DAT_00461770 = 4; DAT_0046177e = 1; DAT_00461780 = 1; DAT_00461782 = 1; DAT_00461784 = 1; _DAT_00461786 = 1; _DAT_00461788 = 1; DAT_0046782c = 1; DAT_0046177c = 10; DAT_00461778 = 0; break; case 0x22: _DAT_0046977a = 1; _DAT_0046977c = 1; DAT_0046978a = 0x4295; DAT_0046978c = 0xffff; DAT_004697a8 = 0x4299; DAT_0046977e = 0x4281; DAT_00469780 = 0x42ed; _DAT_00467830 = 1; DAT_00461772 = 0; DAT_0046177a = 2; DAT_00461776 = 2; DAT_00461770 = 4; DAT_0046177e = 1; DAT_00461780 = 1; DAT_00461782 = 1; DAT_00461784 = 1; _DAT_00461786 = 1; _DAT_00461788 = 1; DAT_0046782c = 1; DAT_0046177c = 10; DAT_00461778 = 3; break; case 0x23: _DAT_0046977a = 1; _DAT_0046977c = 1; DAT_0046978a = 0x4295; DAT_0046978c = 0xffff; DAT_004697a8 = 0x4299; DAT_0046977e = 0x4282; DAT_00469780 = 0x42ee; _DAT_00467830 = 1; DAT_00461772 = 2; DAT_0046177a = 2; DAT_00461774 = 3; DAT_00461776 = 0; DAT_00461770 = 4; DAT_0046177e = 1; DAT_00461780 = 1; DAT_00461782 = 1; DAT_00461784 = 1; _DAT_00461786 = 1; _DAT_00461788 = 1; DAT_0046782c = 1; DAT_0046177c = 10; DAT_00461778 = 7; break; case 0x24: _DAT_0046977a = 1; _DAT_0046977c = 1; DAT_0046978a = 0x4295; DAT_0046978c = 0xffff; DAT_004697a8 = 0x4299; DAT_0046977e = 0x4283; DAT_00469780 = 0x42ef; _DAT_00467830 = 1; DAT_00461772 = 0; DAT_0046177a = 2; DAT_00461774 = 3; DAT_00461776 = 0; DAT_00461770 = 4; DAT_0046177e = 1; DAT_00461780 = 1; DAT_00461782 = 1; DAT_00461784 = 1; _DAT_00461786 = 1; _DAT_00461788 = 1; DAT_0046782c = 1; DAT_0046177c = 10; DAT_00461778 = 0; break; case 0x25: _DAT_0046977a = 1; _DAT_0046977c = 1; DAT_0046978a = 0x4295; DAT_0046978c = 0xffff; DAT_004697a8 = 0x4299; DAT_0046977e = 0x4284; DAT_00469780 = 0x42f0; _DAT_00467830 = 1; DAT_00461772 = 0; DAT_0046177a = 2; DAT_00461774 = 0; DAT_00461776 = 3; DAT_00461770 = 4; DAT_0046177e = 1; DAT_00461780 = 1; DAT_00461782 = 1; DAT_00461784 = 1; _DAT_00461786 = 1; _DAT_00461788 = 1; DAT_0046782c = 1; DAT_0046177c = 10; DAT_00461778 = 1; break; case 0x26: _DAT_0046977a = 1; _DAT_0046977c = 1; DAT_0046978a = 0x4295; DAT_0046978c = 0xffff; DAT_004697a8 = 0x4299; DAT_0046977e = 0x4285; DAT_00469780 = 0x42f1; _DAT_00467830 = 1; DAT_00461772 = 2; DAT_0046177a = 2; DAT_00461774 = 2; DAT_00461776 = 3; DAT_00461770 = 4; DAT_0046177e = 1; DAT_00461780 = 1; DAT_00461782 = 1; DAT_00461784 = 1; _DAT_00461786 = 1; _DAT_00461788 = 1; DAT_0046782c = 1; DAT_0046177c = 10; DAT_00461778 = 5; break; case 0x27: _DAT_0046977a = 1; _DAT_0046977c = 1; DAT_0046978a = 0x4295; DAT_0046978c = 0xffff; DAT_004697a8 = 0x4299; DAT_0046977e = 0x4286; DAT_00469780 = 0x42f2; _DAT_00467830 = 1; DAT_00461772 = 2; DAT_0046177a = 2; DAT_00461774 = 0; DAT_00461776 = 3; DAT_00461770 = 4; DAT_0046177e = 1; DAT_00461780 = 1; DAT_00461782 = 1; DAT_00461784 = 1; _DAT_00461786 = 1; _DAT_00461788 = 1; DAT_0046782c = 1; DAT_0046177c = 10; DAT_00461778 = 7; break; case 0x28: _DAT_0046977a = 1; _DAT_0046977c = 1; DAT_0046978a = 0x4295; DAT_0046978c = 0xffff; DAT_004697a8 = 0x4299; DAT_0046977e = 0x4287; DAT_00469780 = 0x42f4; _DAT_00467830 = 1; DAT_00461772 = 2; DAT_0046177a = 2; DAT_00461774 = 0; DAT_00461776 = 3; DAT_00461770 = 1; DAT_0046177e = 1; DAT_00461780 = 1; DAT_00461782 = 1; DAT_00461784 = 1; _DAT_00461786 = 1; _DAT_00461788 = 1; DAT_0046177c = 10; DAT_0046782c = 1; DAT_00461778 = 0; break; case 0x29: _DAT_0046977a = 1; _DAT_0046977c = 1; DAT_0046978a = 0x4295; DAT_0046978c = 0xffff; DAT_004697a8 = 0x4299; DAT_0046977e = 0x4288; DAT_00469780 = 0x42f5; _DAT_00467830 = 1; DAT_00461772 = 0; DAT_0046177a = 2; DAT_00461774 = 2; DAT_00461776 = 3; DAT_00461770 = 0; DAT_0046177e = 1; DAT_00461780 = 1; DAT_00461782 = 1; DAT_00461784 = 1; _DAT_00461786 = 1; _DAT_00461788 = 1; DAT_0046782c = 1; DAT_0046177c = 10; DAT_00461778 = 4; break; case 0x2a: _DAT_0046977a = 1; _DAT_0046977c = 1; DAT_0046978a = 0x4295; DAT_0046978c = 0xffff; DAT_004697a8 = 0x4299; DAT_0046977e = 0x4289; DAT_00469780 = 0x42f6; _DAT_00467830 = 1; DAT_00461772 = 2; DAT_0046177a = 2; DAT_00461774 = 2; DAT_00461776 = 3; DAT_00461770 = 3; DAT_0046177e = 1; DAT_00461780 = 1; DAT_00461782 = 1; DAT_00461784 = 1; _DAT_00461786 = 1; _DAT_00461788 = 1; DAT_0046782c = 1; DAT_0046177c = 10; DAT_00461778 = 0; } DAT_00469770 = Resource::Load(DAT_0046977e,&_TEXT12); return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_00429980(void) { int iVar1; short sVar2; FUN_00416f98(); if (DAT_004615c4 == 4) { PickapuzzleHitTest_(0,0,0x1ff,0x17f,0,(ClickHandler *)&LAB_0042abc8); } else { PickapuzzleHitTest_(0x18e,0x144,0x1f5,0x165,5,(ClickHandler *)&LAB_004270c2); PickapuzzleHitTest_(0x12,0x19,0x3b,0x1f,5,FUN_00427645); if (DAT_0046177a != 0) { DAT_004677f0 = PickapuzzleHitTest_(6,0x103,0x52,0x13,5,FUN_004270f8); *(undefined4 *)(DAT_004677f0 + 0x1e) = 0; DAT_004677f4 = PickapuzzleHitTest_(6,0x116,0x52,0x13,5,FUN_004270f8); *(undefined4 *)(DAT_004677f4 + 0x1e) = 1; DAT_004677f8 = PickapuzzleHitTest_(6,0x129,0x52,0x14,5,FUN_004270f8); *(undefined4 *)(DAT_004677f8 + 0x1e) = 2; } PickapuzzleHitTest_(0,0,0x1ff,0x17f,0,(ClickHandler *)&LAB_0042abc8); if (_DAT_00467830 != 0) { DAT_00467810 = PickapuzzleHitTest_(0xf6,0xc0,0x4b,0x62,5,FUN_00429cab); *(undefined4 *)(DAT_00467810 + 0x1e) = 0x1f9; DAT_00467814 = PickapuzzleHitTest_(0x141,0xa5,0x31,0x62,5,FUN_00429cab); *(undefined4 *)(DAT_00467814 + 0x1e) = 0x1fa; DAT_00467818 = PickapuzzleHitTest_(0x172,0x7d,0x6d,0x75,5,FUN_00429cab); *(undefined4 *)(DAT_00467818 + 0x1e) = 0x1fb; } DAT_0046780c = FUN_00416ea3(); *(undefined4 *)(DAT_0046780c + 0x1e) = 100; sVar2 = 0; do { if ((&DAT_0046177e)[sVar2] != 0) { iVar1 = PickapuzzleHitTest_((&DAT_0046162c)[sVar2 * 2],(&DAT_0046162e)[sVar2 * 2],0x27,0x22, 10,FUN_00429cab); (&DAT_004677fc)[sVar2] = iVar1; *(int *)((&DAT_004677fc)[sVar2] + 0x1e) = (int)sVar2; } sVar2 = sVar2 + 1; } while (sVar2 < 4); if (_DAT_00461786 != 0) { DAT_004677e0 = PickapuzzleHitTest_(0x32,100,0x27,0x22,10,FUN_00429cab); *(undefined4 *)(DAT_004677e0 + 0x1e) = 10; DAT_004677e4 = PickapuzzleHitTest_(0x32,0x86,0x27,0x22,10,FUN_00429cab); *(undefined4 *)(DAT_004677e4 + 0x1e) = 0xb; } if (_DAT_00461788 != 0) { DAT_004677e8 = PickapuzzleHitTest_(10,100,0x27,0x22,10,FUN_00429cab); *(undefined4 *)(DAT_004677e8 + 0x1e) = 0xc; DAT_004677ec = PickapuzzleHitTest_(10,0x86,0x27,0x22,10,FUN_00429cab); *(undefined4 *)(DAT_004677ec + 0x1e) = 0xd; } } if (DAT_0046178c != 0) { PickapuzzleHitTest_(10,0x140,0x14e,0x3c,0x19,(ClickHandler *)&LAB_00429c98); } return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_00429cab(undefined4 param_1,undefined4 param_2,uint param_3,int param_4) { uint uVar1; uint uVar2; uint extraout_ECX; uint extraout_ECX_00; uint extraout_ECX_01; undefined4 extraout_ECX_02; undefined4 extraout_EDX; undefined4 extraout_EDX_00; undefined4 extraout_EDX_01; undefined4 extraout_EDX_02; undefined4 extraout_EDX_03; if (DAT_004615c4 == 3) { uVar1 = *(uint *)(param_4 + 0x1e); if ((int)uVar1 < 0xd) { if (uVar1 == 0xc) { if (DAT_0046178a == 1) { DAT_0046178a = 0; if (_DAT_00467830 == 0) { FUN_00412d0c(0xc,param_2,param_3,DAT_00467858); DAT_0046177c = DAT_0046782c + 3; DAT_00467858 = FUN_00412ac4(DAT_0046782c + 0x4287); FUN_00412e70(); FUN_0041395c(DAT_00467858, CONCAT22((short)((uint)(DAT_0046177c * 2) >> 0x10), *(undefined2 *)(&DAT_00461654 + DAT_0046177c * 4)), CONCAT22((short)((uint)(DAT_0046177c * 2) >> 0x10), *(undefined2 *)(&DAT_00461656 + DAT_0046177c * 4)),0x3c); DAT_00467884 = FUN_00412ac4(DAT_0046782c + 0x42a3); FUN_004129d4(DAT_00467884,1); FUN_0041395c(DAT_00467884, CONCAT22((short)((uint)(DAT_0046782c * 2) >> 0x10), *(undefined2 *)(&DAT_00461648 + DAT_0046782c * 4)), CONCAT22((short)((uint)(DAT_0046782c * 2) >> 0x10), *(undefined2 *)(&DAT_0046164a + DAT_0046782c * 4)),0x46); FUN_00412dc8(DAT_00467884); } else { FUN_00412d0c(0xc,param_2,param_3,DAT_00467858); DAT_0046177c = DAT_0046782c + 0xf; DAT_00467858 = FUN_00412ac4(DAT_0046782c + 0x4293); FUN_00412e70(); FUN_0041395c(DAT_00467858, CONCAT22((short)((uint)(DAT_0046177c * 2) >> 0x10), *(undefined2 *)(&DAT_00461654 + DAT_0046177c * 4)), CONCAT22((short)((uint)(DAT_0046177c * 2) >> 0x10), *(undefined2 *)(&DAT_00461656 + DAT_0046177c * 4)),0x3c); DAT_00467884 = FUN_00412ac4(DAT_0046782c + 0x42a3); FUN_004129d4(DAT_00467884,1); FUN_0041395c(DAT_00467884, CONCAT22((short)((uint)(DAT_0046782c * 2) >> 0x10), *(undefined2 *)(&DAT_00461648 + DAT_0046782c * 4)), CONCAT22((short)((uint)(DAT_0046782c * 2) >> 0x10), *(undefined2 *)(&DAT_0046164a + DAT_0046782c * 4)),0x46); FUN_00412dc8(DAT_00467884); } DAT_004615c4 = 6; FUN_004465a5(0x4a61,5,0); return; } } else { switch(uVar1) { case 0: if (DAT_00461792 != -1) { FUN_00412d0c(uVar1,param_2,param_3,DAT_00467854); } FUN_004465a5(0x1f73,5,0); DAT_00461792 = 0; DAT_00467854 = FUN_00412ac4(0x4276); FUN_00412e70(); FUN_0041395c(DAT_00467854,0x17d,0xd6,0x96); return; case 1: if (DAT_00461792 != -1) { FUN_00412d0c(uVar1,param_2,param_3,DAT_00467854); } DAT_00461792 = 1; DAT_00467854 = FUN_00412ac4(0x4277); FUN_00412e70(); FUN_004465a5(0x1f73,5,0); FUN_0041395c(DAT_00467854,0x17d,0xd6,0x96); return; case 2: if (DAT_00461792 != -1) { FUN_00412d0c(uVar1,param_2,param_3,DAT_00467854); } DAT_00461792 = 2; DAT_00467854 = FUN_00412ac4(0x4278); FUN_00412e70(); FUN_004465a5(0x1f73,5,0); FUN_0041395c(DAT_00467854,0x17d,0xd6,0x96); return; case 3: if (DAT_00461792 != -1) { FUN_00412d0c(uVar1,param_2,param_3,DAT_00467854); } DAT_00461792 = 3; DAT_00467854 = FUN_00412ac4(0x4279); FUN_00412e70(); FUN_004465a5(0x1f73,5,0); FUN_0041395c(DAT_00467854,0x17d,0xd6,0x96); return; case 10: if (DAT_0046178a == 1) { DAT_0046178a = 2; if (_DAT_00467830 == 0) { FUN_00412d0c(uVar1,param_2,param_3,DAT_00467858); DAT_0046177c = DAT_0046782c + 6; DAT_00467858 = FUN_00412ac4(DAT_0046782c + 0x428a); FUN_00412e70(); FUN_0041395c(DAT_00467858, CONCAT22((short)((uint)(DAT_0046177c * 2) >> 0x10), *(undefined2 *)(&DAT_00461654 + DAT_0046177c * 4)), CONCAT22((short)((uint)(DAT_0046177c * 2) >> 0x10), *(undefined2 *)(&DAT_00461656 + DAT_0046177c * 4)),0x3c); DAT_00467884 = FUN_00412ac4(DAT_0046782c + 0x42a0); FUN_004129d4(DAT_00467884,1); FUN_0041395c(DAT_00467884, CONCAT22((short)((uint)(DAT_0046782c * 2) >> 0x10), *(undefined2 *)(&DAT_0046163c + DAT_0046782c * 4)), CONCAT22((short)((uint)(DAT_0046782c * 2) >> 0x10), *(undefined2 *)(&DAT_0046163e + DAT_0046782c * 4)),0x46); FUN_00412dc8(DAT_00467884); } else { FUN_00412d0c(uVar1,param_2,param_3,DAT_00467858); DAT_0046177c = DAT_0046782c + 0xc; DAT_00467858 = FUN_00412ac4(DAT_0046782c + 0x4290); FUN_00412e70(); FUN_0041395c(DAT_00467858, CONCAT22((short)((uint)(DAT_0046177c * 2) >> 0x10), *(undefined2 *)(&DAT_00461654 + DAT_0046177c * 4)), CONCAT22((short)((uint)(DAT_0046177c * 2) >> 0x10), *(undefined2 *)(&DAT_00461656 + DAT_0046177c * 4)),0x3c); DAT_00467884 = FUN_00412ac4(DAT_0046782c + 0x42a0); FUN_004129d4(DAT_00467884,1); FUN_0041395c(DAT_00467884, CONCAT22((short)((uint)(DAT_0046782c * 2) >> 0x10), *(undefined2 *)(&DAT_0046163c + DAT_0046782c * 4)), CONCAT22((short)((uint)(DAT_0046782c * 2) >> 0x10), *(undefined2 *)(&DAT_0046163e + DAT_0046782c * 4)),0x46); FUN_00412dc8(DAT_00467884); } DAT_004615c4 = 6; FUN_004465a5(0x4a5b,5,0); return; } break; case 0xb: if (DAT_0046178a == 2) { DAT_0046178a = 1; if (_DAT_00467830 == 0) { FUN_00412d0c(uVar1,param_2,param_3,DAT_00467858); DAT_0046177c = DAT_0046782c; DAT_00467858 = FUN_00412ac4(DAT_0046782c + 0x4284); FUN_00412e70(); FUN_0041395c(DAT_00467858, CONCAT22((short)((uint)(DAT_0046177c * 2) >> 0x10), *(undefined2 *)(&DAT_00461654 + DAT_0046177c * 4)), CONCAT22((short)((uint)(DAT_0046177c * 2) >> 0x10), *(undefined2 *)(&DAT_00461656 + DAT_0046177c * 4)),0x3c); DAT_00467884 = FUN_00412ac4(DAT_0046782c + 0x42a0); FUN_004129d4(DAT_00467884,0); FUN_0041395c(DAT_00467884, CONCAT22((short)((uint)(DAT_0046782c * 2) >> 0x10), *(undefined2 *)(&DAT_0046163c + DAT_0046782c * 4)), CONCAT22((short)((uint)(DAT_0046782c * 2) >> 0x10), *(undefined2 *)(&DAT_0046163e + DAT_0046782c * 4)),0x46); FUN_00412dc8(DAT_00467884); } else { FUN_00412d0c(uVar1,param_2,param_3,DAT_00467858); DAT_0046177c = DAT_0046782c + 9; DAT_00467858 = FUN_00412ac4(DAT_0046782c + 0x428d); FUN_00412e70(); FUN_0041395c(DAT_00467858, CONCAT22((short)((uint)(DAT_0046177c * 2) >> 0x10), *(undefined2 *)(&DAT_00461654 + DAT_0046177c * 4)), CONCAT22((short)((uint)(DAT_0046177c * 2) >> 0x10), *(undefined2 *)(&DAT_00461656 + DAT_0046177c * 4)),0x3c); DAT_00467884 = FUN_00412ac4(DAT_0046782c + 0x42a0); FUN_004129d4(DAT_00467884,0); FUN_0041395c(DAT_00467884, CONCAT22((short)((uint)(DAT_0046782c * 2) >> 0x10), *(undefined2 *)(&DAT_0046163c + DAT_0046782c * 4)), CONCAT22((short)((uint)(DAT_0046782c * 2) >> 0x10), *(undefined2 *)(&DAT_0046163e + DAT_0046782c * 4)),0x46); FUN_00412dc8(DAT_00467884); } DAT_004615c4 = 6; FUN_004465a5(0x1f5f,5,0); return; } } } } else if ((int)uVar1 < 0x1fa) { if (uVar1 == 0x1f9) { FUN_0042ae69(); if (DAT_0046178a == 0) { DAT_0046177c = 0xf; DAT_0046782c = 0; FUN_00412d0c(0xffffffff,extraout_EDX,extraout_ECX,DAT_00467858); DAT_00467858 = FUN_00412ac4(DAT_0046177c + 0x4284); FUN_00412e70(); FUN_0041395c(DAT_00467858, CONCAT22((short)((uint)(DAT_0046177c * 2) >> 0x10), *(undefined2 *)(&DAT_00461654 + DAT_0046177c * 4)), CONCAT22((short)((uint)(DAT_0046177c * 2) >> 0x10), *(undefined2 *)(&DAT_00461656 + DAT_0046177c * 4)),0x3c); FUN_00429980(); } else if (DAT_0046178a == 1) { DAT_0046177c = 9; DAT_0046782c = 0; FUN_0041395c(DAT_00467858,(uint)DAT_00461678,(uint)DAT_0046167a,0x3c); FUN_00429980(); } else if (DAT_0046178a == 2) { DAT_0046177c = 0xc; DAT_0046782c = 0; FUN_00412d0c(0,extraout_EDX,extraout_ECX,DAT_00467858); DAT_00467858 = FUN_00412ac4(DAT_0046177c + 0x4284); FUN_00412e70(); FUN_0041395c(DAT_00467858, CONCAT22((short)((uint)(DAT_0046177c * 2) >> 0x10), *(undefined2 *)(&DAT_00461654 + DAT_0046177c * 4)), CONCAT22((short)((uint)(DAT_0046177c * 2) >> 0x10), *(undefined2 *)(&DAT_00461656 + DAT_0046177c * 4)),0x3c); FUN_00429980(); } FUN_0042ae76(); return; } if (uVar1 == 0xd) { if (DAT_0046178a == 0) { DAT_0046178a = 1; if (_DAT_00467830 == 0) { FUN_00412d0c(0,param_2,param_3,DAT_00467858); DAT_0046177c = DAT_0046782c; DAT_00467858 = FUN_00412ac4(DAT_0046782c + 0x4284); FUN_00412e70(); FUN_0041395c(DAT_00467858, CONCAT22((short)((uint)(DAT_0046177c * 2) >> 0x10), *(undefined2 *)(&DAT_00461654 + DAT_0046177c * 4)), CONCAT22((short)((uint)(DAT_0046177c * 2) >> 0x10), *(undefined2 *)(&DAT_00461656 + DAT_0046177c * 4)),0x3c); DAT_00467884 = FUN_00412ac4(DAT_0046782c + 0x42a3); FUN_004129d4(DAT_00467884,0); FUN_0041395c(DAT_00467884, CONCAT22((short)((uint)(DAT_0046782c * 2) >> 0x10), *(undefined2 *)(&DAT_00461648 + DAT_0046782c * 4)), CONCAT22((short)((uint)(DAT_0046782c * 2) >> 0x10), *(undefined2 *)(&DAT_0046164a + DAT_0046782c * 4)),0x46); FUN_00412dc8(DAT_00467884); } else { FUN_00412d0c(0,param_2,param_3,DAT_00467858); DAT_0046177c = DAT_0046782c + 9; DAT_00467858 = FUN_00412ac4(DAT_0046782c + 0x428d); FUN_00412e70(); FUN_0041395c(DAT_00467858, CONCAT22((short)((uint)(DAT_0046177c * 2) >> 0x10), *(undefined2 *)(&DAT_00461654 + DAT_0046177c * 4)), CONCAT22((short)((uint)(DAT_0046177c * 2) >> 0x10), *(undefined2 *)(&DAT_00461656 + DAT_0046177c * 4)),0x3c); DAT_00467884 = FUN_00412ac4(DAT_0046782c + 0x42a3); FUN_004129d4(DAT_00467884,0); FUN_0041395c(DAT_00467884, CONCAT22((short)((uint)(DAT_0046782c * 2) >> 0x10), *(undefined2 *)(&DAT_00461648 + DAT_0046782c * 4)), CONCAT22((short)((uint)(DAT_0046782c * 2) >> 0x10), *(undefined2 *)(&DAT_0046164a + DAT_0046782c * 4)),0x46); FUN_00412dc8(DAT_00467884); } DAT_004615c4 = 6; FUN_004465a5(0x4a4c,5,0); return; } } else if (uVar1 == 100) { FUN_0043b318(); FUN_0042ae69(); DAT_00467888 = FUN_00412ac4(0x36ba); uVar1 = FUN_0043b58e(); uVar2 = FUN_0043b4e2(uVar1,extraout_EDX_02,extraout_ECX_02,uVar1); if (DAT_00461792 != -1) { FUN_00412d0c(uVar2,extraout_EDX_03,uVar1,DAT_00467854); DAT_00467854 = FUN_00412ac4(DAT_00461792 + 0x4276); FUN_00412e70(); FUN_0041395c(DAT_00467854,0x17d,0xd6,0x96); } DAT_004615c4 = 4; FUN_004465a5(0x1f73,5,0); FUN_00429980(); return; } } else { if (uVar1 == 0x1fa) { FUN_0042ae69(); if (DAT_0046178a == 0) { DAT_0046177c = 0x10; DAT_0046782c = 1; FUN_00412d0c(0xffffffff,extraout_EDX_00,extraout_ECX_00,DAT_00467858); DAT_00467858 = FUN_00412ac4(DAT_0046177c + 0x4284); FUN_00412e70(); FUN_0041395c(DAT_00467858, CONCAT22((short)((uint)(DAT_0046177c * 2) >> 0x10), *(undefined2 *)(&DAT_00461654 + DAT_0046177c * 4)), CONCAT22((short)((uint)(DAT_0046177c * 2) >> 0x10), *(undefined2 *)(&DAT_00461656 + DAT_0046177c * 4)),0x3c); FUN_00429980(); } else if (DAT_0046178a == 1) { DAT_0046177c = 10; DAT_0046782c = 1; FUN_0041395c(DAT_00467858,(uint)DAT_0046167c,(uint)DAT_0046167e,0x3c); FUN_00429980(); } else if (DAT_0046178a == 2) { DAT_0046177c = 0xd; DAT_0046782c = 1; FUN_00412d0c(0,extraout_EDX_00,extraout_ECX_00,DAT_00467858); DAT_00467858 = FUN_00412ac4(DAT_0046177c + 0x4284); FUN_00412e70(); FUN_0041395c(DAT_00467858, CONCAT22((short)((uint)(DAT_0046177c * 2) >> 0x10), *(undefined2 *)(&DAT_00461654 + DAT_0046177c * 4)), CONCAT22((short)((uint)(DAT_0046177c * 2) >> 0x10), *(undefined2 *)(&DAT_00461656 + DAT_0046177c * 4)),0x3c); FUN_00429980(); } FUN_0042ae76(); return; } if (uVar1 == 0x1fb) { FUN_0042ae69(); if (DAT_0046178a == 0) { DAT_0046177c = 0x11; DAT_0046782c = 2; FUN_00412d0c(0xffffffff,extraout_EDX_01,extraout_ECX_01,DAT_00467858); DAT_00467858 = FUN_00412ac4(DAT_0046177c + 0x4284); FUN_00412e70(); FUN_0041395c(DAT_00467858, CONCAT22((short)((uint)(DAT_0046177c * 2) >> 0x10), *(undefined2 *)(&DAT_00461654 + DAT_0046177c * 4)), CONCAT22((short)((uint)(DAT_0046177c * 2) >> 0x10), *(undefined2 *)(&DAT_00461656 + DAT_0046177c * 4)),0x3c); FUN_00429980(); } else if (DAT_0046178a == 1) { DAT_0046177c = 0xb; DAT_0046782c = 2; FUN_0041395c(DAT_00467858,(uint)DAT_00461680,(uint)DAT_00461682,0x3c); FUN_00429980(); } else if (DAT_0046178a == 2) { DAT_0046177c = 0xe; DAT_0046782c = 2; FUN_00412d0c(0,extraout_EDX_01,extraout_ECX_01,DAT_00467858); DAT_00467858 = FUN_00412ac4(DAT_0046177c + 0x4284); FUN_00412e70(); FUN_0041395c(DAT_00467858, CONCAT22((short)((uint)(DAT_0046177c * 2) >> 0x10), *(undefined2 *)(&DAT_00461654 + DAT_0046177c * 4)), CONCAT22((short)((uint)(DAT_0046177c * 2) >> 0x10), *(undefined2 *)(&DAT_00461656 + DAT_0046177c * 4)),0x3c); FUN_00429980(); } FUN_0042ae76(); return; } } } else if (DAT_004615c4 != 4) { return; } return; } void FUN_0042ac69(void) { short sVar1; if (DAT_00461792 == 2) { sVar1 = *(short *)(&DAT_004615c6 + DAT_00461792 * 2) + 2; } else { sVar1 = *(short *)(&DAT_004615c6 + DAT_00461792 * 2) + *(short *)(DAT_0046178a * 2 + 0x4615ce); } DAT_0046782e = *(undefined2 *) (&DAT_004615e2 + (short)(sVar1 + *(short *)(DAT_0046177a * 2 + 0x4615d4) + *(short *)(&DAT_004615dc + DAT_0046782c * 2) + DAT_0046178e + -1) * 2); return; } undefined4 FUN_0042ace2(void) { int in_EAX; if ((DAT_00461776 != 3) && (in_EAX = CONCAT22((short)((uint)in_EAX >> 0x10),DAT_00461776), DAT_00461776 != DAT_0046178a)) { return 0; } if ((DAT_00461770 != 4) && (in_EAX = CONCAT22((short)((uint)in_EAX >> 0x10),DAT_00461770), DAT_00461770 != DAT_00461792)) { return 0; } if ((DAT_00461774 != 3) && (in_EAX = (int)DAT_00461774, in_EAX != DAT_0046177a + -1)) { return 0; } if ((DAT_00461778 != -1) && (in_EAX = DAT_0046782e + -4, in_EAX != DAT_00461778)) { return 0; } if ((DAT_00461772 != 3) && (DAT_00461772 != DAT_0046782c)) { return 0; } return CONCAT22((short)((uint)in_EAX >> 0x10),1); } void FUN_0042ad7d(void) { DAT_0046781e = *(undefined2 *)(DAT_00467854 + 8); DAT_00467820 = *(undefined2 *)(DAT_00467854 + 10); DAT_00467832 = 0xffff; if (-1 < DAT_0046782e + -4) { DAT_00467822 = 1; FUN_004465a5(0x1f67,5,1); DAT_004615c4 = 7; return; } DAT_00467822 = 0; FUN_0042ae69(); DAT_004615c4 = 1; return; } void FUN_0042ae0e(void) { undefined4 uVar1; undefined2 *puVar2; short in_stack_00000004; undefined4 uVar3; if (in_stack_00000004 == 0) { PoolFree(DAT_0046788c); } uVar3 = 0x10; puVar2 = PoolAlloc(0x10); DAT_0046788c = puVar2; *puVar2 = 0; puVar2[1] = 5; puVar2[3] = 0x17a; puVar2[2] = 0x1ff; uVar1 = DAT_0046783c; *(undefined4 *)(puVar2 + 6) = DAT_0046783c; puVar2[5] = 0; FUN_0043b9d2(puVar2,uVar1,uVar3,DAT_0046788c,1); return; } void FUN_0042ae69(void) { FUN_0043b9d2(); return; } void FUN_0042ae76(void) { FUN_0042ae0e(); return; } uint FUN_0042ae95(void) { if ((int)DAT_00461778 < DAT_0046782e + -4) { DAT_00467834 = 0xf; } else { DAT_00467834 = 0xfff1; } return CONCAT22((short)((uint)(DAT_0046782e + -4) >> 0x10),DAT_00467834); } void FUN_0042aec8(void) { short sVar1; undefined1 local_1774 [48]; undefined2 local_1744; undefined2 local_1740; undefined2 local_173e; undefined2 local_173c; Memset(local_1774,0,5999); local_1744 = 0xffff; local_173c = 0xffff; local_173e = 0xffff; local_1740 = 0xffff; sVar1 = FUN_0044713f(); *(ushort *)(_GameState->field43_0x40 + 0x2a) = (ushort)(sVar1 == 0); sVar1 = FUN_0044714d(); *(ushort *)(_GameState->field43_0x40 + 0x2c) = (ushort)(sVar1 == 0); DAT_00462790 = 0; *(undefined2 *)_GameState->field43_0x40 = 0; Memcpy(_GameState,local_1774,5999); return; } // WARNING: Heritage AFTER dead removal. Example location: EAX : 0x0042afd8 // WARNING: Restarted to delay deadcode elimination for space: register undefined * FUN_0042af71(void) { HMODULE hModule; FARPROC pFVar1; undefined4 extraout_EDX; undefined4 extraout_EDX_00; undefined1 *puVar2; DAT_00467894 = 0; hModule = LoadLibraryA(s_SHFOLDER_DLL_004617cc); if (hModule != (HMODULE)0x0) { pFVar1 = GetProcAddress(hModule,s_SHGetFolderPathA_004617d9); if (pFVar1 != (FARPROC)0x0) { (*pFVar1)(); FUN_0044feec(); puVar2 = &DAT_00467894; FUN_00453b38(); FUN_0044feec(pFVar1,extraout_EDX,puVar2); puVar2 = &DAT_00467894; FUN_00453b38(); FUN_0044feec(pFVar1,extraout_EDX_00,puVar2); } FreeLibrary(hModule); } return &DAT_00467894; } short FUN_0042b00b(void) { char *src; byte **ppbVar1; byte **extraout_ECX; byte **extraout_ECX_00; undefined *extraout_EDX; undefined *extraout_EDX_00; undefined *extraout_EDX_01; undefined *puVar2; short sVar3; ushort in_stack_00000004; short in_stack_00000008; undefined **ppuVar4; char local_11c [256]; char local_1c [12]; undefined1 local_10 [4]; short local_c; sVar3 = 1; src = FUN_0042af71(); Strcpy(local_11c,src); FUN_0044feec(); if (in_stack_00000004 == 1) { Strcpy(local_1c,&DAT_00461816); } else if ((in_stack_00000004 & 4) == 0) { Strcpy(local_1c,&DAT_0046181d); } else { Strcpy(local_1c,&DAT_00461819); } ppbVar1 = FUN_00452220(); ppuVar4 = extraout_ECX; puVar2 = extraout_EDX; DAT_00467a94 = ppbVar1; if (ppbVar1 == (byte **)0x0) { if (in_stack_00000008 == 0) { sVar3 = 0; } else { ppuVar4 = &PTR_LAB_00461b74; ppbVar1 = (byte **)Puzzles::SetVtableForGivenCategory(&PTR_LAB_00461b74); puVar2 = extraout_EDX_00; } } if ((in_stack_00000004 == 1) && (sVar3 != 0)) { ppbVar1 = (byte **)FUN_004524ac(local_10,puVar2,ppuVar4,local_10,8,1,DAT_00467a94); ppuVar4 = extraout_ECX_00; puVar2 = extraout_EDX_01; if (local_c != 0x11) { sVar3 = 0; } } if (sVar3 != 0) { FUN_0045253c(ppbVar1,puVar2,(DWORD)ppuVar4,DAT_00467a94,0,0); } return sVar3; } void FUN_0042b10a(undefined4 param_1,undefined *param_2,byte **param_3,undefined4 param_4, ushort param_5,short param_6) { uint uVar1; char *pcVar2; uVar1 = FUN_004524ac((uint)param_5,param_2,param_3,param_4,(uint)param_5,1,DAT_00467a94); if ((uVar1 != 1) && (param_6 != 0)) { pcVar2 = GetWinapiStringAlloc(0x4e88); ShowAlertMessage(pcVar2); Puzzles::SetVtableForGivenCategory(&PTR_LAB_00461b74); TurboFree_(pcVar2); } return; } void FUN_0042b15b(void) { uint uVar1; uint extraout_ECX; undefined4 extraout_EDX; FUN_0043139c(); FUN_00413a2c(); uVar1 = FUN_00430db4(); FUN_0044c8c2(uVar1,extraout_EDX,extraout_ECX,0x3fd); Puzzles::SetVtableForGivenCategory(&PTR_LAB_00461b74); return; } bool FUN_0042b199(undefined4 param_1,undefined4 param_2,byte **param_3,undefined4 param_4, ushort param_5) { uint uVar1; bool bVar2; uVar1 = FUN_00452624((uint)param_5,param_2,param_3,param_4,(uint)param_5,1,DAT_00467a94); bVar2 = (short)uVar1 != 1; if (bVar2) { FUN_0042b15b(); } return bVar2; } void FUN_0042b1cb(uint param_1,undefined4 param_2,DWORD param_3) { FUN_00451f00(param_1,param_2,param_3,DAT_00467a94); return; } void FUN_0042b1d8(void) { int iVar1; undefined4 uVar2; uint uVar3; DWORD extraout_ECX; byte **extraout_ECX_00; DWORD extraout_ECX_01; undefined4 extraout_EDX; undefined *extraout_EDX_00; undefined4 extraout_EDX_01; ushort in_stack_00000004; FUN_0042b00b(); iVar1 = (uint)in_stack_00000004 * 5999 + 0x8a0; uVar2 = FUN_0045253c(iVar1,extraout_EDX,extraout_ECX,DAT_00467a94,iVar1,0); uVar3 = FUN_0042b10a(uVar2,extraout_EDX_00,extraout_ECX_00,_GameState,5999,1); FUN_0042b1cb(uVar3,extraout_EDX_01,extraout_ECX_01); DAT_00462790 = *(undefined2 *)_GameState->field43_0x40; FUN_004470d1(); FUN_00447154(); return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address bool FUN_0042b260(void) { bool bVar1; short sVar2; char *pcVar3; int iVar4; undefined4 uVar5; undefined3 extraout_var; uint uVar6; DWORD extraout_ECX; byte **extraout_ECX_00; DWORD extraout_ECX_01; byte **extraout_ECX_02; DWORD extraout_ECX_03; DWORD DVar7; undefined4 extraout_EDX; undefined4 extraout_EDX_00; undefined4 extraout_EDX_01; undefined4 extraout_EDX_02; undefined4 extraout_EDX_03; if (_DAT_004617c8 == 0) { *(undefined2 *)_GameState->field43_0x40 = DAT_00462790; sVar2 = FUN_0044713f(); *(ushort *)(_GameState->field43_0x40 + 0x2a) = (ushort)(sVar2 == 0); sVar2 = FUN_0044714d(); *(ushort *)(_GameState->field43_0x40 + 0x2c) = (ushort)(sVar2 == 0); if (_DAT_00461aae != 0) { _GameState->buildingIsInitialised[_GameState->building] = 1; Memcpy(_GameState->buildings + _GameState->building,&_GameState->field_0x1a,0x14); FUN_0043da06(); FUN_00414ccd(); FUN_00435017(); _DAT_00461aae = 0; } if ((*(char *)_GameState == '\0') && (_DAT_004617ca == 0)) { pcVar3 = GetWinapiStringAlloc(0x4e89); ShowAlertMessage(pcVar3); TurboFree_(pcVar3); } FUN_0042b00b(); iVar4 = *(short *)&_GameState->field_0x14 * 5999 + 0x8a0; uVar5 = FUN_0045253c(iVar4,extraout_EDX,extraout_ECX,DAT_00467a94,iVar4,0); bVar1 = FUN_0042b199(uVar5,extraout_EDX_00,extraout_ECX_00,_GameState,5999); uVar6 = CONCAT31(extraout_var,bVar1); bVar1 = (short)uVar6 != 0; DVar7 = extraout_ECX_01; uVar5 = extraout_EDX_01; if (!bVar1) { iVar4 = DAT_00469aaa * 0x16 + 8; uVar5 = FUN_0045253c(iVar4,extraout_EDX_01,extraout_ECX_01,DAT_00467a94,iVar4,0); uVar6 = FUN_00452624(uVar5,extraout_EDX_02,extraout_ECX_02,_GameState,0x16,1,DAT_00467a94); DVar7 = extraout_ECX_03; uVar5 = extraout_EDX_03; } FUN_0042b1cb(uVar6,uVar5,DVar7); } else { bVar1 = false; } return bVar1; } undefined4 * FUN_0042b476(void) { bool bVar1; int iVar2; undefined4 *unaff_EBX; short sVar3; short in_stack_00000008; short in_stack_0000000c; bVar1 = false; iVar2 = FUN_004352c9(); sVar3 = in_stack_0000000c; if ((short)iVar2 == 0) { unaff_EBX = (undefined4 *)0x0; } else { while (!bVar1) { unaff_EBX = FUN_00435122(); if ((((int)*(short *)((int)unaff_EBX + 0x36) & 0x8000U) == 0) && (*(short *)(unaff_EBX + 3) == in_stack_00000008)) { bVar1 = true; } else { sVar3 = sVar3 + 1; if (sVar3 == (short)iVar2) { sVar3 = 0; } if (sVar3 == in_stack_0000000c) { unaff_EBX = (undefined4 *)0x0; bVar1 = true; } } } } return unaff_EBX; } void FUN_0042b4e4(void) { short sVar1; uint in_stack_00000004; sVar1 = 0; do { if (in_stack_00000004 < (uint)(&DAT_00461824)[sVar1]) { return; } sVar1 = sVar1 + 1; } while (sVar1 < 7); return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void Puzzles::SetParametersForGear_(void) { uint uVar1; undefined2 extraout_var; undefined2 extraout_var_00; uint uVar2; uint extraout_ECX; undefined4 extraout_EDX; undefined4 extraout_EDX_00; undefined4 extraout_EDX_01; undefined4 extraout_EDX_02; undefined2 *puVar3; undefined1 *puVar4; _DAT_00467cec = 0; DAT_00469742 = 0x4a4e; DAT_00469744 = 0x4a4f; DAT_00469746 = 0x1f73; DAT_00469748 = 0x4a54; DAT_0046974a = 0x4a5f; DAT_0046974c = 0x1fa7; DAT_0046974e = 0x1f5c; DAT_00469750 = 0x4a79; DAT_00469752 = 0xffff; DAT_00467c9c = FUN_00412ac4(0x36bc); DAT_00467ca0 = FUN_00412ac4(0x36b7); DAT_00467ca4 = FUN_00412ac4(0x36ba); DAT_00467ca8 = FUN_0043b58e(); DAT_00467cac = FUN_0043b58e(); DAT_00467cb0 = FUN_0043b58e(); puVar3 = &DAT_00469742; uVar1 = FUN_0043ff91(&DAT_00469742); FUN_00440113(uVar1,extraout_EDX,(uint)puVar3); puVar4 = &LAB_0042f132; FUN_0044c950(); FUN_0042e965(CONCAT22(extraout_var,currentPuzzle),extraout_EDX_00,(uint)puVar4,currentPuzzle); uVar2 = CONCAT22(extraout_var_00,currentPuzzle); uVar1 = uVar2; SetParametersForGear(currentPuzzle); uVar1 = FUN_0042ec27(uVar2,extraout_EDX_01,uVar1); FUN_0042ed2a(uVar1,extraout_EDX_02,extraout_ECX); FUN_0042c389(); FUN_0042c89d(); FUN_0042b98f(); FUN_0043fef9(DAT_00461938); FUN_0041029e(); FUN_0042ee23(); DAT_00467c94 = FUN_00412ac4(0x3aa1); FUN_0041395c(DAT_00467c94,0x18e,0x143,10); DAT_00467c90 = FUN_00412ac4(0x3a9d); FUN_0041395c(DAT_00467c90,0x25,0x2e,1); DAT_00467c98 = FUN_00412ac4(0x36bb); DAT_00467cb4 = FUN_0043b58e(); *(undefined2 *)(DAT_00467cb4 + 0x12) = 0; FUN_0042f2ed(); DAT_00469544 = &LAB_0042f35e; FUN_0043139c(); return; } void FUN_0042b8fc(void) { short in_stack_00000004; short in_stack_00000008; char local_38 [52]; Nfnt::LoadWithCache(15000); FUN_00430de8(10,0x14a,0xfa,0x28); Sprintf_(local_38,s_x__d_y__d_00461a77,(int)in_stack_00000004,(int)in_stack_00000008); Draw::String(15000,PTR_s__00461a48,10,0x159,0); Draw::String(15000,local_38,10,0x16d,0); FUN_00430abc(10,0x14a,0x96,0x28); Nfnt::Unload(15000); return; } void FUN_0042b98f(void) { ushort uVar1; ushort uVar2; int iVar3; short sVar4; undefined2 uVar5; code *onClick; FUN_00416f98(); if (DAT_00461a44 != 1) { DAT_00467cc4 = PickapuzzleHitTest_(8,0xa3,0x79,0x79,1,FUN_0042bd1e); *(undefined4 *)(DAT_00467cc4 + 0x1e) = 1000; DAT_00467cc8 = PickapuzzleHitTest_(0x89,0x2c,0x165,0xf9,1,FUN_0042bd1e); *(undefined4 *)(DAT_00467cc8 + 0x1e) = 0x3e9; DAT_00467cd0 = PickapuzzleHitTest_(0x18e,0x144,100,0x32,5,FUN_0042bd1e); *(undefined4 *)(DAT_00467cd0 + 0x1e) = 0x3eb; DAT_00467ccc = PickapuzzleHitTest_(0x25,0x2e,0x39,0x1c,0x32,FUN_0042bd1e); *(undefined4 *)(DAT_00467ccc + 0x1e) = 0x3ea; sVar4 = 0; do { if (*(short *)(DAT_00467c44 + sVar4 * 0x1e) != -1) { uVar1 = *(ushort *)(DAT_00467c44 + sVar4 * 0x1e); if (uVar1 < 2) { if (*(short *)(DAT_00467c44 + 4 + sVar4 * 0x1e) != -99) { iVar3 = PickapuzzleHitTest_(*(undefined2 *) (*(int *)(DAT_00467c44 + 0x16 + sVar4 * 0x1e) + 8), *(undefined2 *) (*(int *)(DAT_00467c44 + 0x16 + sVar4 * 0x1e) + 10), *(undefined2 *) (*(int *)(DAT_00467c44 + 0x16 + sVar4 * 0x1e) + 0x3e), *(undefined2 *) (*(int *)(DAT_00467c44 + 0x16 + sVar4 * 0x1e) + 0x40),10, FUN_0042bd1e); *(int *)(DAT_00467c44 + 0x1a + sVar4 * 0x1e) = iVar3; *(int *)(*(int *)(DAT_00467c44 + 0x1a + sVar4 * 0x1e) + 0x1e) = sVar4 + 2000; } } else if (uVar1 == 6) { FUN_00413794(*(undefined4 *)(DAT_00467c44 + 0x16 + sVar4 * 0x1e), *(undefined2 *) (*(int *)(*(int *)(DAT_00467c44 + 0x16 + sVar4 * 0x1e) + 0x2a) + 4)); FUN_00413774(*(undefined4 *)(DAT_00467c44 + 0x16 + sVar4 * 0x1e), *(undefined2 *) (*(int *)(*(int *)(DAT_00467c44 + 0x16 + sVar4 * 0x1e) + 0x2a) + 4)); DAT_00467cb8 = FUN_00416ea3(); *(undefined4 *)(DAT_00467cb8 + 0x1e) = 0x44c; } } sVar4 = sVar4 + 1; } while (sVar4 < 100); sVar4 = 1; do { if ((&DAT_00467c4c)[sVar4] != 0) { onClick = FUN_0042bd1e; uVar5 = 5; uVar1 = FUN_00413794(*(undefined4 *)((int)&DAT_00467c5a + sVar4 * 0x12),0); uVar2 = FUN_00413774(*(undefined4 *)((int)&DAT_00467c5a + sVar4 * 0x12),0); iVar3 = PickapuzzleHitTest_(*(undefined2 *)(sVar4 * 2 + 0x461918), *(undefined2 *)(sVar4 * 2 + 0x46191c),uVar2,uVar1,uVar5,onClick) ; *(int *)(sVar4 * 4 + 0x467cbc) = iVar3; *(int *)(*(int *)(sVar4 * 4 + 0x467cbc) + 0x1e) = (int)sVar4; } sVar4 = sVar4 + -1; } while (-1 < sVar4); if (DAT_00461938 != 0) { PickapuzzleHitTest_(10,0x140,0x14e,0x3c,0x19,(ClickHandler *)&LAB_0042bd0b); } return; } DAT_00467cd4 = PickapuzzleHitTest_(0,0,0x200,0x180,4,FUN_0042bd1e); *(undefined4 *)(DAT_00467cd4 + 0x1e) = 100; return; } int FUN_0042bd1e(void) { uint uVar1; int iVar2; undefined4 uVar3; undefined2 extraout_var; undefined4 extraout_ECX; uint extraout_ECX_00; uint extraout_ECX_01; undefined4 extraout_EDX; undefined4 extraout_EDX_00; undefined4 extraout_EDX_01; int in_stack_00000004; undefined4 uVar4; iVar2 = (int)DAT_00461a44; if (iVar2 == 1) { iVar2 = *(int *)(in_stack_00000004 + 0x1e) + -100; if (iVar2 == 0) { FUN_0043b3e0(); FUN_0042ef3a(); DAT_00461a44 = 2; FUN_00412d0c(DAT_00467c44,extraout_EDX_01,extraout_ECX_01,*(uint *)(DAT_00467c44 + 0x16)); uVar4 = 0x36b8; uVar3 = FUN_00412ac4(0x36b8); uVar1 = DAT_00467c44; *(undefined4 *)(DAT_00467c44 + 0x16) = uVar3; FUN_0042c89d(uVar3,uVar1,uVar4,1); FUN_0042f355(); iVar2 = FUN_0042b98f(); return iVar2; } } else if (iVar2 == 2) { uVar1 = *(uint *)(in_stack_00000004 + 0x1e); if ((int)uVar1 < 0x3ec) { if (uVar1 == 0x3eb) { FUN_00412dc8(DAT_00467c94); iVar2 = FUN_00412784(); DAT_00461a44 = 0xc; return iVar2; } if (uVar1 < 2) { iVar2 = FUN_0042c730(); return iVar2; } iVar2 = uVar1 - 0x3ea; if (iVar2 == 0) { iVar2 = FUN_0042f1c8(); return iVar2; } } else { if (uVar1 == 0x44c) { uVar3 = FUN_0042f348(); FUN_0043b4e2(uVar3,extraout_EDX,extraout_ECX,DAT_00467cb0); FUN_0043b318(); FUN_00412d0c(DAT_00467c44,extraout_EDX_00,extraout_ECX_00,*(uint *)(DAT_00467c44 + 0x16)); uVar4 = 0x36b9; uVar3 = FUN_00412ac4(0x36b9); uVar1 = DAT_00467c44; *(undefined4 *)(DAT_00467c44 + 0x16) = uVar3; DAT_00461a44 = 1; FUN_0042c89d(uVar3,uVar1,uVar4,1); FUN_0042b98f(); FUN_0042eee4(); DAT_00467ce0 = DAT_00467c7c; DAT_00467ce2 = DAT_00467c7e; return CONCAT22(extraout_var,DAT_00467c7e); } iVar2 = uVar1 - 0x834; if (uVar1 - 2000 < 100) { iVar2 = FUN_0042d1fc(); return iVar2; } } } else { iVar2 = iVar2 + -4; if (iVar2 == 0) { uVar1 = *(uint *)(in_stack_00000004 + 0x1e); if ((int)uVar1 < 0x3eb) { if (uVar1 == 0x3ea) { iVar2 = FUN_0042f1c8(); return iVar2; } if ((uVar1 < 2) || (uVar1 == 1000)) { FUN_0042f348(); DAT_00461a44 = 2; (&DAT_00467c4c)[DAT_00467c84] = (&DAT_00467c4c)[DAT_00467c84] + 1; *(undefined2 *)(&DAT_00467c58 + DAT_00467c84 * 0x12) = DAT_00467c3e; FUN_0042c389(); FUN_0042b98f(); DAT_00467c84 = 0xffff; iVar2 = FUN_0042f355(); return iVar2; } iVar2 = uVar1 - 0x3e9; if (iVar2 == 0) { LAB_0042bd7c: iVar2 = FUN_0042d2bf(); return iVar2; } } else { if (uVar1 == 0x3eb) { FUN_00412dc8(DAT_00467c94); FUN_00412784(); FUN_004465a5(0x1f5c,5,0); iVar2 = FUN_00412784(); DAT_00461a44 = 0xc; return iVar2; } iVar2 = uVar1 - 0x834; if (uVar1 - 2000 < 100) goto LAB_0042bd7c; } } } return iVar2; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_0042bf6e(void) { short sVar1; short sVar2; uint uVar3; sVar2 = DAT_00467ce2; sVar1 = DAT_00467ce0; DAT_00467cdc = DAT_00467ce0; DAT_00467cde = DAT_00467ce2; DAT_00467ce0 = DAT_00467c7c; DAT_00467ce2 = DAT_00467c7e; if ((DAT_00467c7c != sVar1) || (DAT_00467c7e != sVar2)) { _DAT_00467c34 = *(short *)(DAT_00467c44 + 2); if (_DAT_00467c36 < DAT_00467c7c) { DAT_00467c2a = 0; if (_DAT_00467c38 <= DAT_00467c7e) { DAT_00467c2a = 1; } } else { DAT_00467c2a = 2; if (DAT_00467c7e <= _DAT_00467c38) { DAT_00467c2a = 3; } } if (_DAT_00467c36 < sVar1) { DAT_00467c28 = 0; if (_DAT_00467c38 <= sVar2) { DAT_00467c28 = 1; } } else { DAT_00467c28 = 2; if (sVar2 <= _DAT_00467c38) { DAT_00467c28 = 3; } } uVar3 = (int)DAT_00467c2a - (int)DAT_00467c28 & 3; if (uVar3 == 0) { if ((short)(sVar1 - _DAT_00467c36) == 0) { DAT_00467c2c = 0x7fff; } else { DAT_00467c32 = sVar2 - _DAT_00467c38; DAT_00467c2c = (short)((DAT_00467c32 * 100) / (int)(short)(sVar1 - _DAT_00467c36)); } DAT_00467c30 = DAT_00467c7c - _DAT_00467c36; if (DAT_00467c30 == 0) { DAT_00467c2e = 0x7fff; } else { DAT_00467c32 = DAT_00467c7e - _DAT_00467c38; DAT_00467c2e = (short)((DAT_00467c32 * 100) / (int)DAT_00467c30); } if (DAT_00467c2c != DAT_00467c2e) { FUN_0042c18b(); } } else if (uVar3 == 1) { FUN_0042c18b(); } else if (uVar3 == 3) { FUN_0042c18b(); } if (*(short *)(DAT_00467c44 + 2) != _DAT_00467c34) { _DAT_00467c34 = *(short *)(DAT_00467c44 + 2) + 1; } } return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_0042c18b(void) { undefined2 *puVar1; short sVar2; short in_stack_00000004; for (sVar2 = 0; puVar1 = DAT_00467c44, sVar2 < DAT_00467c3c; sVar2 = sVar2 + 1) { if (((short)DAT_00467c44[sVar2 * 0xf] < 2) || (5 < (short)DAT_00467c44[sVar2 * 0xf])) { DAT_00467c44[sVar2 * 0xf + 8] = (short)*(undefined4 *)(DAT_00467c44 + sVar2 * 0xf + 1); } DAT_00467c44[sVar2 * 0xf + 9] = (short)*(undefined4 *)(DAT_00467c44 + sVar2 * 0xf + 2); DAT_00467c44[sVar2 * 0xf + 10] = (short)*(undefined4 *)(DAT_00467c44 + sVar2 * 0xf + 3); } if (in_stack_00000004 == -1) { DAT_00467c44[1] = DAT_00467c44[1] + 1; if (0x17 < (short)puVar1[1]) { DAT_00467c44[1] = 0; } } else { DAT_00467c44[1] = DAT_00467c44[1] + -1; if ((short)puVar1[1] < 0) { DAT_00467c44[1] = 0x17; } } _DAT_00467c3a = 0; DAT_00467c44[6] = in_stack_00000004; *DAT_00467c44 = 0; FUN_0042d141(); *DAT_00467c44 = 6; FUN_004465a5(0x4a4e,5,0); FUN_0042c89d(); FUN_00412784(); if (_DAT_00467c3a != 0) { for (sVar2 = 0; sVar2 < DAT_00467c3c; sVar2 = sVar2 + 1) { if (((short)DAT_00467c44[sVar2 * 0xf] < 2) || (5 < (short)DAT_00467c44[sVar2 * 0xf])) { DAT_00467c44[sVar2 * 0xf + 1] = DAT_00467c44[sVar2 * 0xf + 8]; } DAT_00467c44[sVar2 * 0xf + 2] = DAT_00467c44[sVar2 * 0xf + 9]; DAT_00467c44[sVar2 * 0xf + 3] = DAT_00467c44[sVar2 * 0xf + 10]; } FUN_004465a5(0x4a4e,5,0); FUN_0042c89d(); FUN_00412784(); } return; } void FUN_0042c389(void) { short sVar1; short sVar2; short sVar3; short sVar4; sVar4 = 1; do { BigThing6Eh::processNodes_(*(undefined4 *)((int)&DAT_00467c5a + sVar4 * 0x12)); BigThing6Eh::processNodes_(*(undefined4 *)(sVar4 * 0x12 + 0x467c5e)); BigThing6Eh::processNodes_(*(undefined4 *)(sVar4 * 0x12 + 0x467c62)); sVar1 = (&DAT_00467c4c)[sVar4]; sVar2 = (&DAT_00467c4c)[sVar4]; sVar3 = sVar4 >> 0xf; if ((&DAT_00467c4c)[sVar4] != 0) { FUN_00412e70(sVar4 * 9,(int)sVar2 % 10,10,*(undefined4 *)((int)&DAT_00467c5a + sVar4 * 0x12)); FUN_0041395c(*(undefined4 *)((int)&DAT_00467c5a + sVar4 * 0x12), CONCAT22(sVar3,*(undefined2 *)(sVar4 * 2 + 0x461918)), CONCAT22(sVar3,*(undefined2 *)(sVar4 * 2 + 0x46191c)),5); } FUN_004129d4(*(undefined4 *)(sVar4 * 0x12 + 0x467c5e),sVar1 % 10); FUN_00412e70(); FUN_004129d4(*(undefined4 *)(sVar4 * 0x12 + 0x467c62),sVar2 / 10); FUN_00412e70(); FUN_0041395c(*(undefined4 *)(sVar4 * 0x12 + 0x467c62), CONCAT22(sVar3,*(undefined2 *)(sVar4 * 2 + 0x461924)), CONCAT22(sVar3,*(undefined2 *)(sVar4 * 2 + 0x46192c)),5); FUN_0041395c(*(undefined4 *)(sVar4 * 0x12 + 0x467c5e), CONCAT22(sVar3,*(undefined2 *)(sVar4 * 2 + 0x461928)), CONCAT22(sVar3,*(undefined2 *)(sVar4 * 2 + 0x461930)),5); sVar4 = sVar4 + -1; } while (-1 < sVar4); return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void __cdecl Puzzles::SetParametersForGear(PuzzleNumberOneBased puzzle) { undefined4 uVar1; int puzzle_; short sVar2; DAT_00461938 = 0; DAT_00461a44 = 2; DAT_00467c6c = FUN_00412ac4(0x36b7); DAT_00467c5a = FUN_00412ac4(0x36bc); sVar2 = 1; do { uVar1 = FUN_00412ac4(0x36bd); *(undefined4 *)(sVar2 * 0x12 + 0x467c5e) = uVar1; uVar1 = FUN_00412ac4(0x36bd); *(undefined4 *)(sVar2 * 0x12 + 0x467c62) = uVar1; sVar2 = sVar2 + -1; } while (-1 < sVar2); puzzle_ = (int)puzzle; if (puzzle_ < 4) { if (puzzle_ == 3) { _DAT_0046977a = 3; _DAT_0046977c = 1; DAT_004697a8 = 14000; DAT_0046978a = 0x36b7; DAT_0046978c = 0x36b8; DAT_0046978e = 0x36b9; DAT_00469790 = 0xffff; } else if (puzzle_ == 1) { _DAT_0046977a = 3; _DAT_0046977c = 1; DAT_004697a8 = 0x36b4; DAT_0046978a = 0x36b1; DAT_0046978c = 0x36b2; DAT_0046978e = 0x36b3; DAT_00469790 = 0xffff; } else if (puzzle_ == 2) { _DAT_0046977a = 3; _DAT_0046977c = 1; DAT_004697a8 = 0x36b5; DAT_0046978a = 0x36b4; DAT_0046978c = 0x36b5; DAT_0046978e = 0x36b6; DAT_00469790 = 0xffff; } } else if (puzzle_ - 4U < 23) { _DAT_0046977a = 5; _DAT_0046977c = 1; DAT_004697a8 = 0x36b3; DAT_0046978a = 0x36bf; DAT_0046978c = 0x36c0; DAT_0046978e = 0x36c1; DAT_00469790 = 0x36c2; DAT_00469792 = 0x36c3; DAT_00469794 = 0xffff; } else if (puzzle_ - 27U < 16) { _DAT_0046977a = 5; _DAT_0046977c = 1; DAT_004697a8 = 0x36b2; DAT_0046978a = 0x36ba; DAT_0046978c = 0x36bb; DAT_0046978e = 0x36bc; DAT_00469790 = 0x36bd; DAT_00469792 = 0x36be; DAT_00469794 = 0xffff; } DAT_0046977e = 0x36b1; DAT_00469780 = 14000; DAT_00469770 = Resource::Load(0x36b1,&_TEXT13); return; } void FUN_0042c730(void) { short sVar1; short sVar2; undefined4 extraout_ECX; undefined4 extraout_EDX; short in_stack_00000004; FUN_0042f348(); if (in_stack_00000004 == 0) { FUN_0043b4e2(0xffffffff,extraout_EDX,extraout_ECX,DAT_00467ca8); } else if (in_stack_00000004 == 1) { FUN_0043b4e2(0,extraout_EDX,extraout_ECX,DAT_00467cac); } DAT_00461a44 = 4; sVar2 = 0; while ((sVar1 = DAT_00467c3e, sVar2 < DAT_00467c3c && ((in_stack_00000004 != *(short *)(DAT_00467c44 + sVar2 * 0x1e) || (sVar1 = sVar2, *(short *)(DAT_00467c44 + 4 + sVar2 * 0x1e) != -99))))) { sVar2 = sVar2 + 1; } DAT_00467c3e = sVar1; DAT_00467c84 = in_stack_00000004; FUN_004465a5(0x1f73,5,0); (&DAT_00467c4c)[in_stack_00000004] = (&DAT_00467c4c)[in_stack_00000004] + -1; FUN_0042c389(); FUN_0042b98f(); return; } void FUN_0042c7de(undefined4 param_1,undefined4 param_2,uint param_3) { uint uVar1; int extraout_EDX; int iVar2; undefined4 extraout_EDX_00; undefined4 extraout_EDX_01; int extraout_EDX_02; undefined4 extraout_EDX_03; short sVar3; uint uVar4; sVar3 = 0; do { iVar2 = DAT_00467c44; if (*(short *)(DAT_00467c44 + sVar3 * 0x1e) != -1) { uVar1 = *(uint *)(DAT_00467c44 + 0x16 + sVar3 * 0x1e); FUN_00412d0c(sVar3 * 0xf,DAT_00467c44,param_3,uVar1); param_3 = uVar1; iVar2 = extraout_EDX; } sVar3 = sVar3 + 1; } while (sVar3 < 100); sVar3 = 1; do { uVar1 = *(uint *)((int)&DAT_00467c5a + sVar3 * 0x12); FUN_00412d0c(sVar3 * 9,iVar2,param_3,uVar1); uVar4 = *(uint *)(sVar3 * 0x12 + 0x467c5e); FUN_00412d0c(sVar3 * 9,extraout_EDX_00,uVar1,uVar4); param_3 = *(uint *)(sVar3 * 0x12 + 0x467c62); uVar1 = FUN_00412d0c(sVar3 * 9,extraout_EDX_01,uVar4,param_3); sVar3 = sVar3 + -1; iVar2 = extraout_EDX_02; } while (-1 < sVar3); uVar4 = DAT_00467c90; uVar1 = FUN_00412d0c(uVar1,extraout_EDX_02,param_3,DAT_00467c90); FUN_00412d0c(uVar1,extraout_EDX_03,uVar4,DAT_00467c94); return; } void FUN_0042c89d(void) { short sVar1; int iVar2; int iVar3; bool bVar4; bool bVar5; short sVar6; short in_stack_00000004; undefined4 uVar7; bVar4 = false; bVar5 = true; FUN_00430de8(0x89,2,0x165,0xf9); sVar6 = DAT_00467c3c; while (sVar6 = sVar6 + -1, -1 < sVar6) { *(undefined2 *)(DAT_00467c44 + 0xc + sVar6 * 0x1e) = 0; *(undefined2 *)(DAT_00467c44 + 0xe + sVar6 * 0x1e) = 0; switch(*(undefined2 *)(DAT_00467c44 + sVar6 * 0x1e)) { case 0: case 1: if (*(short *)(DAT_00467c44 + 4 + sVar6 * 0x1e) != -99) { sVar1 = *(short *)(DAT_00467c44 + sVar6 * 0x1e); uVar7 = *(undefined4 *)(DAT_00467c44 + 0x16 + sVar6 * 0x1e); BigThing6Eh::processNodes_(uVar7); FUN_00412e70(sVar6 * 0xf,DAT_00467c44,uVar7, *(undefined4 *)(DAT_00467c44 + 0x16 + sVar6 * 0x1e)); FUN_004129d4(*(undefined4 *)(DAT_00467c44 + 0x16 + sVar6 * 0x1e), *(undefined2 *)(DAT_00467c44 + 2 + sVar6 * 0x1e)); iVar2 = *(short *)(DAT_00467c44 + 6 + sVar6 * 0x1e) * 0x12; iVar3 = *(short *)(DAT_00467c44 + 4 + sVar6 * 0x1e) * 0xf; FUN_0041395c(*(undefined4 *)(DAT_00467c44 + 0x16 + sVar6 * 0x1e), CONCAT22((short)((uint)iVar3 >> 0x10), (short)iVar3 + *(short *)(&DAT_00461910 + sVar1 * 2)), CONCAT22((short)((uint)iVar2 >> 0x10), (short)iVar2 + *(short *)(&DAT_00461914 + sVar1 * 2)),10); } break; case 2: uVar7 = *(undefined4 *)(DAT_00467c44 + 0x16 + sVar6 * 0x1e); BigThing6Eh::processNodes_(uVar7); FUN_00412e70(sVar6 * 0xf,DAT_00467c44,uVar7, *(undefined4 *)(DAT_00467c44 + 0x16 + sVar6 * 0x1e)); iVar2 = *(short *)(DAT_00467c44 + 6 + sVar6 * 0x1e) * 0x12; iVar3 = *(short *)(DAT_00467c44 + 4 + sVar6 * 0x1e) * 5; FUN_0041395c(*(undefined4 *)(DAT_00467c44 + 0x16 + sVar6 * 0x1e), CONCAT22((short)((uint)iVar3 >> 0x10),(short)iVar3 + 0x9a), CONCAT22((short)((uint)iVar2 >> 0x10),(short)iVar2 + 0x52),9); break; case 3: uVar7 = *(undefined4 *)(DAT_00467c44 + 0x16 + sVar6 * 0x1e); BigThing6Eh::processNodes_(uVar7); FUN_00412e70(sVar6 * 0xf,DAT_00467c44,uVar7, *(undefined4 *)(DAT_00467c44 + 0x16 + sVar6 * 0x1e)); iVar2 = *(short *)(DAT_00467c44 + 6 + sVar6 * 0x1e) * 6; iVar3 = *(short *)(DAT_00467c44 + 4 + sVar6 * 0x1e) * 0xf; FUN_0041395c(*(undefined4 *)(DAT_00467c44 + 0x16 + sVar6 * 0x1e), CONCAT22((short)((uint)iVar3 >> 0x10),(short)iVar3 + 0x9d), CONCAT22((short)((uint)iVar2 >> 0x10),(short)iVar2 + 0x4d),9); break; case 4: uVar7 = *(undefined4 *)(DAT_00467c44 + 0x16 + sVar6 * 0x1e); BigThing6Eh::processNodes_(uVar7); FUN_00412e70(sVar6 * 0xf,DAT_00467c44,uVar7, *(undefined4 *)(DAT_00467c44 + 0x16 + sVar6 * 0x1e)); iVar2 = *(short *)(DAT_00467c44 + 6 + sVar6 * 0x1e) * 0x12; iVar3 = *(short *)(DAT_00467c44 + 4 + sVar6 * 0x1e) * 5; FUN_0041395c(*(undefined4 *)(DAT_00467c44 + 0x16 + sVar6 * 0x1e), CONCAT22((short)((uint)iVar3 >> 0x10),(short)iVar3 + 0x9a), CONCAT22((short)((uint)iVar2 >> 0x10),(short)iVar2 + 0x4c),0xb); break; case 5: uVar7 = *(undefined4 *)(DAT_00467c44 + 0x16 + sVar6 * 0x1e); BigThing6Eh::processNodes_(uVar7); FUN_00412e70(sVar6 * 0xf,DAT_00467c44,uVar7, *(undefined4 *)(DAT_00467c44 + 0x16 + sVar6 * 0x1e)); iVar2 = *(short *)(DAT_00467c44 + 6 + sVar6 * 0x1e) * 6; iVar3 = *(short *)(DAT_00467c44 + 4 + sVar6 * 0x1e) * 0xf; FUN_0041395c(*(undefined4 *)(DAT_00467c44 + 0x16 + sVar6 * 0x1e), CONCAT22((short)((uint)iVar3 >> 0x10),(short)iVar3 + 0x9b), CONCAT22((short)((uint)iVar2 >> 0x10),(short)iVar2 + 0x4b),0xb); break; case 6: uVar7 = *(undefined4 *)(DAT_00467c44 + 0x16 + sVar6 * 0x1e); BigThing6Eh::processNodes_(uVar7); FUN_00412e70(sVar6 * 0xf,DAT_00467c44,uVar7, *(undefined4 *)(DAT_00467c44 + 0x16 + sVar6 * 0x1e)); FUN_004129d4(*(undefined4 *)(DAT_00467c44 + 0x16 + sVar6 * 0x1e), *(undefined2 *)(DAT_00467c44 + 2 + sVar6 * 0x1e)); iVar2 = *(short *)(DAT_00467c44 + 6 + sVar6 * 0x1e) * 0x12; iVar3 = *(short *)(DAT_00467c44 + 4 + sVar6 * 0x1e) * 0xf; FUN_0041395c(*(undefined4 *)(DAT_00467c44 + 0x16 + sVar6 * 0x1e), CONCAT22((short)((uint)iVar3 >> 0x10),(short)iVar3 + 0x89), CONCAT22((short)((uint)iVar2 >> 0x10),(short)iVar2 + 0x3b),0xf); } } for (sVar6 = 1; sVar6 < DAT_00467c3c; sVar6 = sVar6 + 1) { if (6 < *(short *)(DAT_00467c44 + sVar6 * 0x1e)) { sVar1 = *(short *)(DAT_00467c44 + sVar6 * 0x1e); if (sVar1 == 7) { if (*(short *)(DAT_00467c44 + 0x10 + sVar6 * 0x1e) < *(short *)(DAT_00467c44 + 2 + sVar6 * 0x1e)) { bVar4 = true; } else if (*(short *)(DAT_00467c44 + 2 + sVar6 * 0x1e) == 0) { bVar5 = false; } uVar7 = *(undefined4 *)(DAT_00467c44 + 0x16 + sVar6 * 0x1e); BigThing6Eh::processNodes_(uVar7); FUN_00412e70(sVar6 * 0xf,DAT_00467c44,uVar7, *(undefined4 *)(DAT_00467c44 + 0x16 + sVar6 * 0x1e)); FUN_004129d4(*(undefined4 *)(DAT_00467c44 + 0x16 + sVar6 * 0x1e), *(undefined2 *)(DAT_00467c44 + 2 + sVar6 * 0x1e)); iVar2 = *(short *)(DAT_00467c44 + 6 + sVar6 * 0x1e) * 0x12; iVar3 = *(short *)(DAT_00467c44 + 4 + sVar6 * 0x1e) * 5; FUN_0041395c(*(undefined4 *)(DAT_00467c44 + 0x16 + sVar6 * 0x1e), CONCAT22((short)((uint)iVar3 >> 0x10),(short)iVar3 + 0x9d), CONCAT22((short)((uint)iVar2 >> 0x10),(short)iVar2 + 0x40),0xf); } else if (sVar1 == 8) { if (*(short *)(DAT_00467c44 + 0x10 + sVar6 * 0x1e) < *(short *)(DAT_00467c44 + 2 + sVar6 * 0x1e)) { bVar4 = true; } else if (*(short *)(DAT_00467c44 + 2 + sVar6 * 0x1e) == 0) { bVar5 = false; } uVar7 = *(undefined4 *)(DAT_00467c44 + 0x16 + sVar6 * 0x1e); BigThing6Eh::processNodes_(uVar7); FUN_00412e70(sVar6 * 0xf,DAT_00467c44,uVar7, *(undefined4 *)(DAT_00467c44 + 0x16 + sVar6 * 0x1e)); FUN_004129d4(*(undefined4 *)(DAT_00467c44 + 0x16 + sVar6 * 0x1e), *(undefined2 *)(DAT_00467c44 + 2 + sVar6 * 0x1e)); iVar2 = *(short *)(DAT_00467c44 + 6 + sVar6 * 0x1e) * 0x12; iVar3 = *(short *)(DAT_00467c44 + 4 + sVar6 * 0x1e) * 5; FUN_0041395c(*(undefined4 *)(DAT_00467c44 + 0x16 + sVar6 * 0x1e), CONCAT22((short)((uint)iVar3 >> 0x10),(short)iVar3 + 0x95), CONCAT22((short)((uint)iVar2 >> 0x10),(short)iVar2 + 0x40),0xf); } else if (sVar1 == 9) { if (*(short *)(DAT_00467c44 + 0x10 + sVar6 * 0x1e) < *(short *)(DAT_00467c44 + 2 + sVar6 * 0x1e)) { bVar4 = true; } else if (*(short *)(DAT_00467c44 + 2 + sVar6 * 0x1e) == 0) { bVar5 = false; } uVar7 = *(undefined4 *)(DAT_00467c44 + 0x16 + sVar6 * 0x1e); BigThing6Eh::processNodes_(uVar7); FUN_00412e70(sVar6 * 0xf,DAT_00467c44,uVar7, *(undefined4 *)(DAT_00467c44 + 0x16 + sVar6 * 0x1e)); FUN_004129d4(*(undefined4 *)(DAT_00467c44 + 0x16 + sVar6 * 0x1e), *(undefined2 *)(DAT_00467c44 + 2 + sVar6 * 0x1e)); iVar2 = *(short *)(DAT_00467c44 + 6 + sVar6 * 0x1e) * 6; iVar3 = *(short *)(DAT_00467c44 + 4 + sVar6 * 0x1e) * 0xf; FUN_0041395c(*(undefined4 *)(DAT_00467c44 + 0x16 + sVar6 * 0x1e), CONCAT22((short)((uint)iVar3 >> 0x10),(short)iVar3 + 0x93), CONCAT22((short)((uint)iVar2 >> 0x10),(short)iVar2 + 0x45),0xf); } else if (sVar1 == 10) { if (*(short *)(DAT_00467c44 + 0x10 + sVar6 * 0x1e) < *(short *)(DAT_00467c44 + 2 + sVar6 * 0x1e)) { bVar4 = true; } else if (*(short *)(DAT_00467c44 + 2 + sVar6 * 0x1e) == 0) { bVar5 = false; } uVar7 = *(undefined4 *)(DAT_00467c44 + 0x16 + sVar6 * 0x1e); BigThing6Eh::processNodes_(uVar7); FUN_00412e70(sVar6 * 0xf,DAT_00467c44,uVar7, *(undefined4 *)(DAT_00467c44 + 0x16 + sVar6 * 0x1e)); FUN_004129d4(*(undefined4 *)(DAT_00467c44 + 0x16 + sVar6 * 0x1e), *(undefined2 *)(DAT_00467c44 + 2 + sVar6 * 0x1e)); iVar2 = *(short *)(DAT_00467c44 + 6 + sVar6 * 0x1e) * 6; iVar3 = *(short *)(DAT_00467c44 + 4 + sVar6 * 0x1e) * 0xf; FUN_0041395c(*(undefined4 *)(DAT_00467c44 + 0x16 + sVar6 * 0x1e), CONCAT22((short)((uint)iVar3 >> 0x10),(short)iVar3 + 0x93), CONCAT22((short)((uint)iVar2 >> 0x10),(short)iVar2 + 0x53),0xf); } } } if (in_stack_00000004 != 0) { if (bVar5) { FUN_004465a5(0x4a54,10,0); } else if (bVar4) { FUN_004465a5(0x4a54,5,0); } } FUN_00430abc(0x89,2,0x165,0xf9); return; } void FUN_0042d141(void) { short sVar1; short sVar2; short in_stack_00000004; *(undefined2 *)(DAT_00467c44 + 0xe + in_stack_00000004 * 0x1e) = 1; for (sVar2 = 0; sVar2 < DAT_00467c3c; sVar2 = sVar2 + 1) { if ((in_stack_00000004 != sVar2) && (*(short *)(DAT_00467c44 + 4 + sVar2 * 0x1e) != -99)) { if ((code *)(&PTR_FUN_0046193c) [*(short *)(DAT_00467c44 + in_stack_00000004 * 0x1e) * 0xb + (int)*(short *)(DAT_00467c44 + sVar2 * 0x1e)] != (code *)0x0) { sVar1 = (*(code *)(&PTR_FUN_0046193c) [*(short *)(DAT_00467c44 + in_stack_00000004 * 0x1e) * 0xb + (int)*(short *)(DAT_00467c44 + sVar2 * 0x1e)])(); if (sVar1 != 0) { if (*(short *)(DAT_00467c44 + 0xe + sVar2 * 0x1e) == 0) { FUN_0042d141(); } } } } } return; } void FUN_0042d1fc(void) { short sVar1; undefined4 extraout_ECX; undefined4 extraout_EDX; short in_stack_00000004; sVar1 = *(short *)(DAT_00467c44 + in_stack_00000004 * 0x1e); FUN_0042f348(); if (sVar1 == 0) { FUN_0043b4e2(0xffffffff,extraout_EDX,extraout_ECX,DAT_00467ca8); } else if (sVar1 == 1) { FUN_0043b4e2(0,extraout_EDX,extraout_ECX,DAT_00467cac); } DAT_00461a44 = 4; DAT_00467c84 = sVar1; BigThing6Eh::processNodes_(*(undefined4 *)(DAT_00467c44 + 0x16 + in_stack_00000004 * 0x1e)); *(undefined2 *)(DAT_00467c44 + 6 + in_stack_00000004 * 0x1e) = 0xff9d; *(undefined2 *)(DAT_00467c44 + 4 + in_stack_00000004 * 0x1e) = 0xff9d; DAT_00467c3e = in_stack_00000004; FUN_004465a5(0x4a4e,5,0); FUN_0042c89d(); return; } void FUN_0042d2bf(void) { short *psVar1; short sVar2; ushort uVar3; int iVar4; short sVar5; short sVar6; short sVar7; int iVar8; short sVar9; short sVar10; short in_stack_00000004; short in_stack_00000008; short local_8; iVar4 = DAT_00467c44; sVar5 = (short)(((short)(in_stack_00000004 + *(short *)(&DAT_00461920 + *(short *)(DAT_00467c44 + DAT_00467c3e * 0x1e) * 2)) + -0x92) / 0xf); sVar6 = (short)(((short)(in_stack_00000008 + *(short *)(&DAT_00461920 + *(short *)(DAT_00467c44 + DAT_00467c3e * 0x1e) * 2)) + -0x41) / 0x12); if ((((*(char *)(DAT_00467c40 + sVar5 + sVar6 * 0x17) != '\0') && (-1 < sVar5)) && (-1 < sVar6)) && (((sVar5 < 0x17 && (sVar6 < 0xc)) && (sVar2 = *(short *)(DAT_00467c44 + DAT_00467c3e * 0x1e), iVar8 = (int)sVar5 - (int)*(short *)(DAT_00467c44 + 4), uVar3 = (ushort)(iVar8 >> 0x1f), sVar9 = ((ushort)iVar8 ^ uVar3) - uVar3, iVar8 = (int)sVar6 - (int)*(short *)(DAT_00467c44 + 6), uVar3 = (ushort)(iVar8 >> 0x1f), sVar7 = ((ushort)iVar8 ^ uVar3) - uVar3, (int)*(short *)(&DAT_00461840 + sVar2 * 4) <= (int)sVar9 * (int)sVar9 + (int)sVar7 * (int)sVar7)))) { local_8 = -1; for (sVar7 = 0; sVar7 < DAT_00467c3c; sVar7 = sVar7 + 1) { iVar8 = (int)sVar5 - (int)*(short *)(DAT_00467c44 + 4 + sVar7 * 0x1e); uVar3 = (ushort)(iVar8 >> 0x1f); sVar10 = ((ushort)iVar8 ^ uVar3) - uVar3; iVar8 = (int)sVar6 - (int)*(short *)(DAT_00467c44 + 6 + sVar7 * 0x1e); uVar3 = (ushort)(iVar8 >> 0x1f); sVar9 = ((ushort)iVar8 ^ uVar3) - uVar3; if (((sVar7 != DAT_00467c3e) && (*(short *)(DAT_00467c44 + 4 + sVar7 * 0x1e) != -99)) && (*(short *)(DAT_00467c44 + sVar7 * 0x1e) < 2)) { if ((int)sVar10 * (int)sVar10 + (int)sVar9 * (int)sVar9 < (int)*(short *)(&DAT_00461840 + *(short *)(DAT_00467c44 + sVar7 * 0x1e) * 2 + sVar2 * 4) ) { return; } if (((sVar10 < 5) && (sVar9 < 5)) && (*(short *)(&DAT_00461848 + sVar10 * 2 + sVar9 * 10 + *(short *)(DAT_00467c44 + sVar7 * 0x1e) * 0x32 + sVar2 * 100) != 0)) { local_8 = sVar7; } } } if (((local_8 != -1) && ((*(ushort *)(DAT_00467c44 + 2 + DAT_00467c3e * 0x1e) & 1) == (*(ushort *)(DAT_00467c44 + 2 + local_8 * 0x1e) & 1))) && (iVar8 = (int)DAT_00467c3e, psVar1 = (short *)(DAT_00467c44 + 2 + iVar8 * 0x1e), *psVar1 = *psVar1 + 1, *(short *)(&DAT_00461934 + sVar2 * 2) <= *(short *)(iVar4 + 2 + iVar8 * 0x1e))) { *(undefined2 *)(DAT_00467c44 + 2 + DAT_00467c3e * 0x1e) = 0; } *(short *)(DAT_00467c44 + 4 + DAT_00467c3e * 0x1e) = sVar5; *(short *)(DAT_00467c44 + 6 + DAT_00467c3e * 0x1e) = sVar6; FUN_004465a5(0x4a4f,5,0); FUN_00412e70(); DAT_00461a44 = 2; FUN_0042f355(); FUN_0042c89d(); FUN_0042b98f(); } return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address undefined4 FUN_0042d67c(void) { short *psVar1; short sVar2; ushort uVar3; short sVar4; short sVar5; int iVar6; undefined4 uVar7; int iVar8; undefined2 uVar9; short in_stack_00000004; short in_stack_00000008; iVar6 = (int)*(short *)(DAT_00467c44 + 4 + in_stack_00000004 * 0x1e) - (int)*(short *)(DAT_00467c44 + 4 + in_stack_00000008 * 0x1e); uVar3 = (ushort)(iVar6 >> 0x1f); sVar4 = ((ushort)iVar6 ^ uVar3) - uVar3; iVar6 = (int)*(short *)(DAT_00467c44 + 6 + in_stack_00000004 * 0x1e) - (int)*(short *)(DAT_00467c44 + 6 + in_stack_00000008 * 0x1e); uVar3 = (ushort)(iVar6 >> 0x1f); sVar5 = ((ushort)iVar6 ^ uVar3) - uVar3; if ((sVar4 < 5) && (sVar5 < 5)) { sVar2 = *(short *)(DAT_00467c44 + in_stack_00000008 * 0x1e); if (*(short *)(&DAT_00461848 + sVar4 * 2 + sVar5 * 10 + sVar2 * 0x32 + *(short *)(DAT_00467c44 + in_stack_00000004 * 0x1e) * 100) == 0) { uVar7 = 0; } else if (*(short *)(DAT_00467c44 + 0xc + in_stack_00000008 * 0x1e) == 0) { if (*(short *)(DAT_00467c44 + 0xc + in_stack_00000004 * 0x1e) == -1) { *(undefined2 *)(DAT_00467c44 + 0xc + in_stack_00000008 * 0x1e) = 1; iVar6 = DAT_00467c44; iVar8 = (int)in_stack_00000008; psVar1 = (short *)(DAT_00467c44 + 2 + iVar8 * 0x1e); *psVar1 = *psVar1 + -1; uVar9 = (undefined2)((uint)(iVar8 * 0xf) >> 0x10); if (*(short *)(iVar6 + 2 + iVar8 * 0x1e) < 0) { uVar9 = (undefined2)((uint)(in_stack_00000008 * 0xf) >> 0x10); *(short *)(DAT_00467c44 + 2 + in_stack_00000008 * 0x1e) = *(short *)(&DAT_00461934 + sVar2 * 2) + -1; } } else { *(undefined2 *)(DAT_00467c44 + 0xc + in_stack_00000008 * 0x1e) = 0xffff; iVar6 = DAT_00467c44; iVar8 = (int)in_stack_00000008; psVar1 = (short *)(DAT_00467c44 + 2 + iVar8 * 0x1e); *psVar1 = *psVar1 + 1; uVar9 = (undefined2)((uint)(iVar8 * 0xf) >> 0x10); if (*(short *)(&DAT_00461934 + sVar2 * 2) <= *(short *)(iVar6 + 2 + iVar8 * 0x1e)) { uVar9 = (undefined2)((uint)(in_stack_00000008 * 0xf) >> 0x10); *(undefined2 *)(DAT_00467c44 + 2 + in_stack_00000008 * 0x1e) = 0; } } uVar7 = CONCAT22(uVar9,1); } else { if (*(short *)(DAT_00467c44 + 0xc + in_stack_00000008 * 0x1e) == *(short *)(DAT_00467c44 + 0xc + in_stack_00000004 * 0x1e)) { _DAT_00467c3a = 1; } uVar7 = CONCAT22((short)((uint)(in_stack_00000008 * 0xf) >> 0x10),1); } } else { uVar7 = 0; } return uVar7; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address undefined4 FUN_0042d875(void) { short *psVar1; short sVar2; short in_stack_00000004; short in_stack_00000008; if (*(short *)(DAT_00467c44 + 6 + in_stack_00000004 * 0x1e) != *(short *)(DAT_00467c44 + 6 + in_stack_00000008 * 0x1e)) { return 0; } sVar2 = *(short *)(DAT_00467c44 + 4 + in_stack_00000004 * 0x1e) - *(short *)(DAT_00467c44 + 0xc + in_stack_00000004 * 0x1e); if (*(short *)(DAT_00467c44 + 4 + in_stack_00000008 * 0x1e) < sVar2) { if ((*(short *)(DAT_00467c44 + in_stack_00000004 * 0x1e) == *(short *)(DAT_00467c44 + in_stack_00000008 * 0x1e)) && (0 < *(short *)(DAT_00467c44 + 0xc + in_stack_00000004 * 0x1e))) { return 0; } if ((int)sVar2 <= (int)*(short *)(DAT_00467c44 + 4 + in_stack_00000008 * 0x1e) + *(short *)(DAT_00467c44 + 8 + in_stack_00000008 * 0x1e) * 2) { if (*(short *)(DAT_00467c44 + 0xc + in_stack_00000008 * 0x1e) == 0) { sVar2 = *(short *)(DAT_00467c44 + 0xc + in_stack_00000004 * 0x1e); *(short *)(DAT_00467c44 + 0xc + in_stack_00000008 * 0x1e) = sVar2; psVar1 = (short *)(DAT_00467c44 + 4 + in_stack_00000008 * 0x1e); *psVar1 = *psVar1 + sVar2; } if (*(short *)(DAT_00467c44 + 0xc + in_stack_00000004 * 0x1e) != *(short *)(DAT_00467c44 + 0xc + in_stack_00000008 * 0x1e)) { _DAT_00467c3a = 1; } return CONCAT22((short)((uint)(in_stack_00000008 * 0xf) >> 0x10),1); } } else { if ((*(short *)(DAT_00467c44 + in_stack_00000004 * 0x1e) == *(short *)(DAT_00467c44 + in_stack_00000008 * 0x1e)) && (*(short *)(DAT_00467c44 + 0xc + in_stack_00000004 * 0x1e) < 0)) { return 0; } if (*(short *)(DAT_00467c44 + 4 + in_stack_00000008 * 0x1e) <= (short)(*(short *)(DAT_00467c44 + 8 + in_stack_00000004 * 0x1e) * 2 + sVar2)) { if (*(short *)(DAT_00467c44 + 0xc + in_stack_00000008 * 0x1e) == 0) { sVar2 = *(short *)(DAT_00467c44 + 0xc + in_stack_00000004 * 0x1e); *(short *)(DAT_00467c44 + 0xc + in_stack_00000008 * 0x1e) = sVar2; psVar1 = (short *)(DAT_00467c44 + 4 + in_stack_00000008 * 0x1e); *psVar1 = *psVar1 + sVar2; } if (*(short *)(DAT_00467c44 + 0xc + in_stack_00000004 * 0x1e) != *(short *)(DAT_00467c44 + 0xc + in_stack_00000008 * 0x1e)) { _DAT_00467c3a = 1; } return CONCAT22((short)((uint)(in_stack_00000008 * 0xf) >> 0x10),1); } } return 0; } undefined4 FUN_0042dad0(void) { short sVar1; short in_stack_00000004; short in_stack_00000008; if (*(short *)(DAT_00467c44 + 6 + in_stack_00000004 * 0x1e) == *(short *)(DAT_00467c44 + 6 + in_stack_00000008 * 0x1e)) { if (*(short *)(DAT_00467c44 + in_stack_00000008 * 0x1e) == 7) { sVar1 = *(short *)(DAT_00467c44 + 4 + in_stack_00000004 * 0x1e) - *(short *)(DAT_00467c44 + 0xc + in_stack_00000004 * 0x1e); if (*(short *)(DAT_00467c44 + 4 + in_stack_00000008 * 0x1e) + 7 == (int)sVar1) { if (0 < *(short *)(DAT_00467c44 + 0xc + in_stack_00000004 * 0x1e)) { *(undefined2 *)(DAT_00467c44 + 2 + in_stack_00000008 * 0x1e) = 0; } } else if ((*(short *)(DAT_00467c44 + 4 + in_stack_00000008 * 0x1e) + 8 == (int)sVar1) && (*(short *)(DAT_00467c44 + 0xc + in_stack_00000004 * 0x1e) < 0)) { *(undefined2 *)(DAT_00467c44 + 2 + in_stack_00000008 * 0x1e) = 1; } } else { sVar1 = (*(short *)(DAT_00467c44 + 4 + in_stack_00000004 * 0x1e) - *(short *)(DAT_00467c44 + 0xc + in_stack_00000004 * 0x1e)) + *(short *)(DAT_00467c44 + 8 + in_stack_00000004 * 0x1e) * 2; if (*(short *)(DAT_00467c44 + 4 + in_stack_00000008 * 0x1e) + 1 == (int)sVar1) { if (*(short *)(DAT_00467c44 + 0xc + in_stack_00000004 * 0x1e) < 0) { *(undefined2 *)(DAT_00467c44 + 2 + in_stack_00000008 * 0x1e) = 0; } } else if ((sVar1 == *(short *)(DAT_00467c44 + 4 + in_stack_00000008 * 0x1e)) && (0 < *(short *)(DAT_00467c44 + 0xc + in_stack_00000004 * 0x1e))) { *(undefined2 *)(DAT_00467c44 + 2 + in_stack_00000008 * 0x1e) = 1; } } } return 0; } undefined4 FUN_0042dce3(void) { short sVar1; short in_stack_00000004; short in_stack_00000008; if (*(short *)(DAT_00467c44 + 4 + in_stack_00000004 * 0x1e) == *(short *)(DAT_00467c44 + 4 + in_stack_00000008 * 0x1e)) { if (*(short *)(DAT_00467c44 + in_stack_00000008 * 0x1e) == 10) { sVar1 = *(short *)(DAT_00467c44 + 6 + in_stack_00000004 * 0x1e) - *(short *)(DAT_00467c44 + 0xc + in_stack_00000004 * 0x1e); if (*(short *)(DAT_00467c44 + 6 + in_stack_00000008 * 0x1e) + 8 == (int)sVar1) { if (0 < *(short *)(DAT_00467c44 + 0xc + in_stack_00000004 * 0x1e)) { *(undefined2 *)(DAT_00467c44 + 2 + in_stack_00000008 * 0x1e) = 0; } } else if ((*(short *)(DAT_00467c44 + 6 + in_stack_00000008 * 0x1e) + 9 == (int)sVar1) && (*(short *)(DAT_00467c44 + 0xc + in_stack_00000004 * 0x1e) < 0)) { *(undefined2 *)(DAT_00467c44 + 2 + in_stack_00000008 * 0x1e) = 1; } } else { sVar1 = (*(short *)(DAT_00467c44 + 6 + in_stack_00000004 * 0x1e) - *(short *)(DAT_00467c44 + 0xc + in_stack_00000004 * 0x1e)) + *(short *)(DAT_00467c44 + 8 + in_stack_00000004 * 0x1e) * 2; if (*(short *)(DAT_00467c44 + 6 + in_stack_00000008 * 0x1e) + 1 == (int)sVar1) { if (*(short *)(DAT_00467c44 + 0xc + in_stack_00000004 * 0x1e) < 0) { *(undefined2 *)(DAT_00467c44 + 2 + in_stack_00000008 * 0x1e) = 0; } } else if ((sVar1 == *(short *)(DAT_00467c44 + 6 + in_stack_00000008 * 0x1e)) && (0 < *(short *)(DAT_00467c44 + 0xc + in_stack_00000004 * 0x1e))) { *(undefined2 *)(DAT_00467c44 + 2 + in_stack_00000008 * 0x1e) = 1; } } } return 0; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address undefined4 FUN_0042def6(void) { short *psVar1; short sVar2; short in_stack_00000004; short in_stack_00000008; if (*(short *)(DAT_00467c44 + 4 + in_stack_00000004 * 0x1e) != *(short *)(DAT_00467c44 + 4 + in_stack_00000008 * 0x1e)) { return 0; } sVar2 = *(short *)(DAT_00467c44 + 6 + in_stack_00000004 * 0x1e) - *(short *)(DAT_00467c44 + 0xc + in_stack_00000004 * 0x1e); if (*(short *)(DAT_00467c44 + 6 + in_stack_00000008 * 0x1e) < sVar2) { if ((*(short *)(DAT_00467c44 + in_stack_00000004 * 0x1e) == *(short *)(DAT_00467c44 + in_stack_00000008 * 0x1e)) && (0 < *(short *)(DAT_00467c44 + 0xc + in_stack_00000004 * 0x1e))) { return 0; } if ((int)sVar2 <= (int)*(short *)(DAT_00467c44 + 6 + in_stack_00000008 * 0x1e) + *(short *)(DAT_00467c44 + 8 + in_stack_00000008 * 0x1e) * 2) { if (*(short *)(DAT_00467c44 + 0xc + in_stack_00000008 * 0x1e) == 0) { sVar2 = *(short *)(DAT_00467c44 + 0xc + in_stack_00000004 * 0x1e); *(short *)(DAT_00467c44 + 0xc + in_stack_00000008 * 0x1e) = sVar2; psVar1 = (short *)(DAT_00467c44 + 6 + in_stack_00000008 * 0x1e); *psVar1 = *psVar1 + sVar2; } if (*(short *)(DAT_00467c44 + 0xc + in_stack_00000004 * 0x1e) != *(short *)(DAT_00467c44 + 0xc + in_stack_00000008 * 0x1e)) { _DAT_00467c3a = 1; } return CONCAT22((short)((uint)(in_stack_00000008 * 0xf) >> 0x10),1); } } else { if ((*(short *)(DAT_00467c44 + in_stack_00000004 * 0x1e) == *(short *)(DAT_00467c44 + in_stack_00000008 * 0x1e)) && (*(short *)(DAT_00467c44 + 0xc + in_stack_00000004 * 0x1e) < 0)) { return 0; } if (*(short *)(DAT_00467c44 + 6 + in_stack_00000008 * 0x1e) <= (short)(*(short *)(DAT_00467c44 + 8 + in_stack_00000004 * 0x1e) * 2 + sVar2)) { if (*(short *)(DAT_00467c44 + 0xc + in_stack_00000008 * 0x1e) == 0) { sVar2 = *(short *)(DAT_00467c44 + 0xc + in_stack_00000004 * 0x1e); *(short *)(DAT_00467c44 + 0xc + in_stack_00000008 * 0x1e) = sVar2; psVar1 = (short *)(DAT_00467c44 + 6 + in_stack_00000008 * 0x1e); *psVar1 = *psVar1 + sVar2; } if (*(short *)(DAT_00467c44 + 0xc + in_stack_00000004 * 0x1e) != *(short *)(DAT_00467c44 + 0xc + in_stack_00000008 * 0x1e)) { _DAT_00467c3a = 1; } return CONCAT22((short)((uint)(in_stack_00000008 * 0xf) >> 0x10),1); } } return 0; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address undefined4 FUN_0042e151(void) { short *psVar1; short sVar2; undefined4 uVar3; short sVar4; short sVar5; short in_stack_00000004; short in_stack_00000008; sVar2 = *(short *)(DAT_00467c44 + in_stack_00000004 * 0x1e); sVar4 = *(short *)(DAT_00467c44 + 6 + in_stack_00000008 * 0x1e) - *(short *)(DAT_00467c44 + 6 + in_stack_00000004 * 0x1e); if ((int)sVar4 == sVar2 + 1) { sVar4 = *(short *)(DAT_00467c44 + 0xc + in_stack_00000004 * 0x1e); } else { if ((int)sVar4 != -(sVar2 + 2)) { return 0; } sVar4 = -*(short *)(DAT_00467c44 + 0xc + in_stack_00000004 * 0x1e); } sVar5 = (*(short *)(DAT_00467c44 + 4 + in_stack_00000008 * 0x1e) - *(short *)(DAT_00467c44 + 0xc + in_stack_00000008 * 0x1e)) + sVar4; if ((int)(((int)*(short *)(DAT_00467c44 + 4 + in_stack_00000004 * 0x1e) + (int)sVar2) * 3 + ((int)sVar2 ^ 1U)) < (int)sVar5) { uVar3 = 0; } else if ((int)(short)(sVar5 + *(short *)(DAT_00467c44 + 8 + in_stack_00000008 * 0x1e) * 2) < ((int)*(short *)(DAT_00467c44 + 4 + in_stack_00000004 * 0x1e) - (int)sVar2) * 3) { uVar3 = 0; } else { if (*(short *)(DAT_00467c44 + 0xc + in_stack_00000008 * 0x1e) == 0) { *(short *)(DAT_00467c44 + 0xc + in_stack_00000008 * 0x1e) = sVar4; psVar1 = (short *)(DAT_00467c44 + 4 + in_stack_00000008 * 0x1e); *psVar1 = *psVar1 + sVar4; } if (*(short *)(DAT_00467c44 + 0xc + in_stack_00000008 * 0x1e) != sVar4) { _DAT_00467c3a = 1; } if (*(short *)(DAT_00467c44 + 4 + in_stack_00000008 * 0x1e) < 0) { _DAT_00467c3a = 1; } uVar3 = CONCAT22((short)((uint)(in_stack_00000008 * 0xf) >> 0x10),1); } return uVar3; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address undefined4 FUN_0042e331(void) { short *psVar1; short sVar2; int iVar3; undefined4 uVar4; short sVar5; short in_stack_00000004; short in_stack_00000008; sVar2 = *(short *)(DAT_00467c44 + in_stack_00000008 * 0x1e); sVar5 = *(short *)(DAT_00467c44 + 6 + in_stack_00000004 * 0x1e) - *(short *)(DAT_00467c44 + 6 + in_stack_00000008 * 0x1e); if ((int)sVar5 == sVar2 + 1) { sVar5 = *(short *)(DAT_00467c44 + 0xc + in_stack_00000004 * 0x1e); } else { if ((int)sVar5 != -(sVar2 + 2)) { return 0; } sVar5 = -*(short *)(DAT_00467c44 + 0xc + in_stack_00000004 * 0x1e); } if ((int)(((int)*(short *)(DAT_00467c44 + 4 + in_stack_00000008 * 0x1e) + (int)sVar2) * 3 + ((int)sVar2 ^ 1U)) < (int)*(short *)(DAT_00467c44 + 4 + in_stack_00000004 * 0x1e)) { uVar4 = 0; } else if ((int)*(short *)(DAT_00467c44 + 4 + in_stack_00000004 * 0x1e) + *(short *)(DAT_00467c44 + 8 + in_stack_00000004 * 0x1e) * 2 < ((int)*(short *)(DAT_00467c44 + 4 + in_stack_00000008 * 0x1e) - (int)sVar2) * 3) { uVar4 = 0; } else { if (*(short *)(DAT_00467c44 + 0xc + in_stack_00000008 * 0x1e) == 0) { *(short *)(DAT_00467c44 + 0xc + in_stack_00000008 * 0x1e) = sVar5; iVar3 = DAT_00467c44; if (sVar5 == 1) { psVar1 = (short *)(DAT_00467c44 + 2 + in_stack_00000008 * 0x1e); *psVar1 = *psVar1 + -1; if (*(short *)(iVar3 + 2 + in_stack_00000008 * 0x1e) < 0) { *(short *)(DAT_00467c44 + 2 + in_stack_00000008 * 0x1e) = *(short *)(&DAT_00461934 + sVar2 * 2) + -1; } } else { psVar1 = (short *)(DAT_00467c44 + 2 + in_stack_00000008 * 0x1e); *psVar1 = *psVar1 + 1; if (*(short *)(&DAT_00461934 + sVar2 * 2) <= *(short *)(iVar3 + 2 + in_stack_00000008 * 0x1e)) { *(undefined2 *)(DAT_00467c44 + 2 + in_stack_00000008 * 0x1e) = 0; } } } if (*(short *)(DAT_00467c44 + 0xc + in_stack_00000008 * 0x1e) != sVar5) { _DAT_00467c3a = 1; } uVar4 = CONCAT22((short)((uint)(in_stack_00000008 * 0xf) >> 0x10),1); } return uVar4; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address undefined4 FUN_0042e55b(void) { short *psVar1; short sVar2; undefined4 uVar3; short sVar4; short sVar5; short in_stack_00000004; short in_stack_00000008; sVar2 = *(short *)(DAT_00467c44 + in_stack_00000004 * 0x1e); sVar4 = *(short *)(DAT_00467c44 + 4 + in_stack_00000008 * 0x1e) - *(short *)(DAT_00467c44 + 4 + in_stack_00000004 * 0x1e); if ((int)sVar4 == sVar2 + 1) { sVar4 = -*(short *)(DAT_00467c44 + 0xc + in_stack_00000004 * 0x1e); } else { if ((int)sVar4 != -(sVar2 + 2)) { return 0; } sVar4 = *(short *)(DAT_00467c44 + 0xc + in_stack_00000004 * 0x1e); } sVar5 = (*(short *)(DAT_00467c44 + 6 + in_stack_00000008 * 0x1e) - *(short *)(DAT_00467c44 + 0xc + in_stack_00000008 * 0x1e)) + sVar4; if ((int)(((int)*(short *)(DAT_00467c44 + 6 + in_stack_00000004 * 0x1e) + (int)sVar2) * 3 + ((int)sVar2 ^ 1U)) < (int)sVar5) { uVar3 = 0; } else if ((int)(short)(sVar5 + *(short *)(DAT_00467c44 + 8 + in_stack_00000008 * 0x1e) * 2) < ((int)*(short *)(DAT_00467c44 + 6 + in_stack_00000004 * 0x1e) - (int)sVar2) * 3) { uVar3 = 0; } else { if (*(short *)(DAT_00467c44 + 0xc + in_stack_00000008 * 0x1e) == 0) { *(short *)(DAT_00467c44 + 0xc + in_stack_00000008 * 0x1e) = sVar4; psVar1 = (short *)(DAT_00467c44 + 6 + in_stack_00000008 * 0x1e); *psVar1 = *psVar1 + sVar4; } if (*(short *)(DAT_00467c44 + 0xc + in_stack_00000008 * 0x1e) != sVar4) { _DAT_00467c3a = 1; } if (*(short *)(DAT_00467c44 + 6 + in_stack_00000008 * 0x1e) < 0) { _DAT_00467c3a = 1; } uVar3 = CONCAT22((short)((uint)(in_stack_00000008 * 0xf) >> 0x10),1); } return uVar3; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address undefined4 FUN_0042e73b(void) { short *psVar1; short sVar2; int iVar3; undefined4 uVar4; short sVar5; short in_stack_00000004; short in_stack_00000008; sVar2 = *(short *)(DAT_00467c44 + in_stack_00000008 * 0x1e); sVar5 = *(short *)(DAT_00467c44 + 4 + in_stack_00000004 * 0x1e) - *(short *)(DAT_00467c44 + 4 + in_stack_00000008 * 0x1e); if ((int)sVar5 == sVar2 + 1) { sVar5 = -*(short *)(DAT_00467c44 + 0xc + in_stack_00000004 * 0x1e); } else { if ((int)sVar5 != -(sVar2 + 2)) { return 0; } sVar5 = *(short *)(DAT_00467c44 + 0xc + in_stack_00000004 * 0x1e); } if ((int)(((int)*(short *)(DAT_00467c44 + 6 + in_stack_00000008 * 0x1e) + (int)sVar2) * 3 + ((int)sVar2 ^ 1U)) < (int)*(short *)(DAT_00467c44 + 6 + in_stack_00000004 * 0x1e)) { uVar4 = 0; } else if ((int)*(short *)(DAT_00467c44 + 6 + in_stack_00000004 * 0x1e) + *(short *)(DAT_00467c44 + 8 + in_stack_00000004 * 0x1e) * 2 < ((int)*(short *)(DAT_00467c44 + 6 + in_stack_00000008 * 0x1e) - (int)sVar2) * 3) { uVar4 = 0; } else { if (*(short *)(DAT_00467c44 + 0xc + in_stack_00000008 * 0x1e) == 0) { *(short *)(DAT_00467c44 + 0xc + in_stack_00000008 * 0x1e) = sVar5; iVar3 = DAT_00467c44; if (sVar5 == 1) { psVar1 = (short *)(DAT_00467c44 + 2 + in_stack_00000008 * 0x1e); *psVar1 = *psVar1 + -1; if (*(short *)(iVar3 + 2 + in_stack_00000008 * 0x1e) < 0) { *(short *)(DAT_00467c44 + 2 + in_stack_00000008 * 0x1e) = *(short *)(&DAT_00461934 + sVar2 * 2) + -1; } } else { psVar1 = (short *)(DAT_00467c44 + 2 + in_stack_00000008 * 0x1e); *psVar1 = *psVar1 + 1; if (*(short *)(&DAT_00461934 + sVar2 * 2) <= *(short *)(iVar3 + 2 + in_stack_00000008 * 0x1e)) { *(undefined2 *)(DAT_00467c44 + 2 + in_stack_00000008 * 0x1e) = 0; } } } if (*(short *)(DAT_00467c44 + 0xc + in_stack_00000008 * 0x1e) != sVar5) { _DAT_00467c3a = 1; } uVar4 = CONCAT22((short)((uint)(in_stack_00000008 * 0xf) >> 0x10),1); } return uVar4; } void FUN_0042e965(uint param_1,undefined4 param_2,uint param_3,short param_4) { DAT_00467c40 = Resource::Load(param_4 + 0x3714,&_GEAR); DAT_00467c44 = (undefined2 *)((int)DAT_00467c40 + 0x116); DAT_00467c54 = DAT_00467c40; *DAT_00467c44 = 6; DAT_00467c44[1] = 0; DAT_00467c3c = 0; FUN_0042eb10(); return; } void FUN_0042e9c4(void) { FUN_0042eb45(); FUN_0042eb45(); FUN_0042eb45(); FUN_0042eb45(); FUN_0042eb45(); FUN_0042eb45(); return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_0042eb10(void) { _DAT_00467c36 = *(short *)(DAT_00467c44 + 4) * 0xf + 0x9b; _DAT_00467c38 = *(short *)(DAT_00467c44 + 6) * 0x12 + 0x4c; return; } void FUN_0042eb45(void) { short sVar1; short sVar2; short in_stack_00000004; undefined2 in_stack_00000008; short in_stack_0000000c; sVar1 = in_stack_00000004; if (in_stack_0000000c < in_stack_00000004) { sVar1 = in_stack_0000000c; in_stack_0000000c = in_stack_00000004; } sVar2 = 0; if (0 < (short)(in_stack_0000000c - sVar1)) { do { FUN_00431588(); sVar2 = sVar2 + 1; } while (sVar2 < (short)(in_stack_0000000c - sVar1)); } FUN_00430abc(sVar1,in_stack_00000008,(in_stack_0000000c - sVar1) + 1,1); return; } void FUN_0042ebc4(void) { short sVar1; DAT_00467c4e = 0; DAT_00467c4c = 0; for (sVar1 = 0; sVar1 < DAT_00467c3c; sVar1 = sVar1 + 1) { if ((*(short *)(DAT_00467c44 + sVar1 * 0x1e) < 2) && (*(short *)(DAT_00467c44 + 4 + sVar1 * 0x1e) == -99)) { (&DAT_00467c4c)[*(short *)(DAT_00467c44 + sVar1 * 0x1e)] = (&DAT_00467c4c)[*(short *)(DAT_00467c44 + sVar1 * 0x1e)] + 1; } } return; } void FUN_0042ec27(undefined4 param_1,undefined4 param_2,uint param_3) { undefined4 uVar1; short sVar2; ushort unaff_SI; sVar2 = 0; do { if (*(short *)(DAT_00467c44 + sVar2 * 0x1e) != -1) { switch(*(undefined2 *)(DAT_00467c44 + sVar2 * 0x1e)) { case 0: unaff_SI = 0x36bc; break; case 1: unaff_SI = 0x36b7; break; case 2: unaff_SI = *(short *)(DAT_00467c44 + 8 + sVar2 * 0x1e) + 0x36c6; break; case 3: unaff_SI = *(short *)(DAT_00467c44 + 8 + sVar2 * 0x1e) + 0x36e6; break; case 4: unaff_SI = 0x36c3; break; case 5: unaff_SI = 0x36c4; break; case 6: unaff_SI = 0x36b8; break; case 7: unaff_SI = 0x36c2; break; case 8: unaff_SI = 0x36c1; break; case 9: unaff_SI = 0x36bf; break; case 10: unaff_SI = 0x36c0; } DAT_00467c3c = DAT_00467c3c + 1; uVar1 = FUN_00412ac4(unaff_SI); *(undefined4 *)(DAT_00467c44 + 0x16 + sVar2 * 0x1e) = uVar1; } sVar2 = sVar2 + 1; } while (sVar2 < 100); FUN_0042ebc4(); return; } void FUN_0042ed2a(uint param_1,undefined4 param_2,uint param_3) { uint uVar1; uint extraout_ECX; undefined4 extraout_EDX; short sVar2; short sVar3; FUN_00431024(param_1,param_2,param_3,14000); DAT_00467c88 = FUN_00412ac4(14000); uVar1 = FUN_00413cf4(); FUN_00412d0c(uVar1,extraout_EDX,extraout_ECX,DAT_00467c88); sVar3 = 0; do { sVar2 = 0; do { if (*(char *)(DAT_00467c40 + sVar2 + sVar3 * 0x17) != '\0') { Is256Color(); FUN_0042e9c4(); } sVar2 = sVar2 + 1; } while (sVar2 < 0x17); sVar3 = sVar3 + 1; } while (sVar3 < 0xc); FUN_00430db4(); FUN_0042c89d(); FUN_0042ebc4(); FUN_0042c389(); return; } undefined4 FUN_0042edde(void) { short sVar1; int iVar2; iVar2 = 0; while( true ) { sVar1 = (short)iVar2; if (DAT_00467c3c <= sVar1) { return CONCAT22((short)((uint)iVar2 >> 0x10),1); } if ((6 < *(short *)(DAT_00467c44 + sVar1 * 0x1e)) && (*(short *)(DAT_00467c44 + 2 + sVar1 * 0x1e) == 0)) break; iVar2 = iVar2 + 1; } return 0; } void FUN_0042ee23(void) { short sVar1; for (sVar1 = 0; sVar1 < DAT_00467c3c; sVar1 = sVar1 + 1) { switch(*(undefined2 *)(DAT_00467c44 + sVar1 * 0x1e)) { case 0: case 1: *(undefined2 *)(DAT_00467c44 + 8 + sVar1 * 0x1e) = *(undefined2 *)(DAT_00467c44 + 2 + sVar1 * 0x1e); break; case 2: case 4: *(undefined2 *)(DAT_00467c44 + 2 + sVar1 * 0x1e) = *(undefined2 *)(DAT_00467c44 + 4 + sVar1 * 0x1e); break; case 3: case 5: *(undefined2 *)(DAT_00467c44 + 2 + sVar1 * 0x1e) = *(undefined2 *)(DAT_00467c44 + 6 + sVar1 * 0x1e); } } return; } void FUN_0042eee4(void) { ushort uVar1; short sVar2; for (sVar2 = 0; sVar2 < DAT_00467c3c; sVar2 = sVar2 + 1) { uVar1 = *(ushort *)(DAT_00467c44 + sVar2 * 0x1e); if ((uVar1 < 2) || (uVar1 == 6)) { *(undefined2 *)(DAT_00467c44 + 8 + sVar2 * 0x1e) = *(undefined2 *)(DAT_00467c44 + 2 + sVar2 * 0x1e); } } return; } void FUN_0042ef3a(void) { short sVar1; for (sVar1 = 0; sVar1 < DAT_00467c3c; sVar1 = sVar1 + 1) { switch(*(undefined2 *)(DAT_00467c44 + sVar1 * 0x1e)) { case 0: case 1: case 6: *(undefined2 *)(DAT_00467c44 + 2 + sVar1 * 0x1e) = *(undefined2 *)(DAT_00467c44 + 8 + sVar1 * 0x1e); break; case 2: case 4: *(undefined2 *)(DAT_00467c44 + 4 + sVar1 * 0x1e) = *(undefined2 *)(DAT_00467c44 + 2 + sVar1 * 0x1e); break; case 3: case 5: *(undefined2 *)(DAT_00467c44 + 6 + sVar1 * 0x1e) = *(undefined2 *)(DAT_00467c44 + 2 + sVar1 * 0x1e); break; case 7: case 8: case 9: case 10: *(undefined2 *)(DAT_00467c44 + 2 + sVar1 * 0x1e) = 0; } } FUN_0042c89d(); FUN_0042b98f(); return; } void FUN_0042f1a8(uint param_1,undefined4 param_2,uint param_3) { FUN_0042ed2a(param_1,param_2,param_3); FUN_0042c389(); FUN_0042c89d(); FUN_0043fef9(DAT_00461938); return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_0042f1c8(void) { void *pvVar1; short sVar2; void *apvStackY_20400 [32762]; void *local_400 [5]; undefined1 local_3ec [1000]; FUN_004465a5(0x1f5c,5,0); FUN_00412dc8(DAT_00467c90); FUN_00412784(); BigThing6Eh::processNodes_(DAT_00467c90); FUN_00412784(); Memset(local_3ec,0,1000); local_400[0] = Resource::Load(DAT_004697a8,&_TEXT14); FUN_0044ffac(); FUN_0045008c(); for (sVar2 = 1; sVar2 < _DAT_0046977c; sVar2 = sVar2 + 1) { pvVar1 = Resource::Load((&DAT_004697a8)[sVar2],&_TEXT15); local_400[sVar2] = pvVar1; FUN_0044ffac(); FUN_0044ffc8(); } FUN_0043f27a(); for (sVar2 = 0; sVar2 < _DAT_0046977c; sVar2 = sVar2 + 1) { FUN_00440695((&DAT_004697a8)[sVar2],&_TEXT16); } return; } void FUN_0042f2ed(void) { undefined4 uVar1; undefined2 *puVar2; short in_stack_00000004; undefined4 uVar3; if (in_stack_00000004 == 0) { PoolFree(DAT_00467c48); } uVar3 = 0x10; puVar2 = PoolAlloc(0x10); DAT_00467c48 = puVar2; *puVar2 = 0; puVar2[1] = 5; puVar2[3] = 0x17a; puVar2[2] = 0x1ff; uVar1 = DAT_00467cb4; *(undefined4 *)(puVar2 + 6) = DAT_00467cb4; puVar2[5] = 0; FUN_0043b9d2(puVar2,uVar1,uVar3,DAT_00467c48,1); return; } void FUN_0042f348(void) { FUN_0043b9d2(); return; } void FUN_0042f355(void) { FUN_0042f2ed(); return; } undefined4 FUN_0042f440(undefined4 param_1,undefined4 param_2,undefined4 param_3,int param_4,short param_5) { short in_stack_0000000c; ushort in_stack_00000010; if (param_5 == -0x28a) { FUN_0043cd08(param_4 + 0x3a,param_2,param_3,param_4 + 0x3a); } else if (param_5 == -0x27d) { FUN_00446b08(); } else if (param_5 == -0x27c) { FUN_004465a5(*(undefined2 *)(DAT_00461aa8 + in_stack_0000000c * 2),in_stack_00000010 & 0xff, (short)(char)(in_stack_00000010 >> 8)); } return 0; } void __stdcall FUN_0042f4ab(void) { FUN_00415d3e(); FUN_0044ed2d(); FUN_0043c35e(); _GameState = PoolAlloc(5999); FUN_0042aec8(); FUN_0041a954(); return; } void FUN_0042f4e7(void) { FUN_0043be66(); FUN_0043bfee(1,2,1); FUN_0043bfee(2,0xffff,1); FUN_0043be66(); FUN_0043bfee(4,0xffff,1); FUN_0043bfee(8,0xffff,1); return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_0042fbf7(void) { PartDefinition *pPVar1; short *psVar2; short sVar3; psVar2 = &DAT_0046954c; pPVar1 = _Level_partDefinitions; for (sVar3 = 0; sVar3 < _Level_partResource->definitionCount; sVar3 = sVar3 + 1) { if ((*(short *)&pPVar1->field_0xc == 0) && ((pPVar1->flags & 0x80) != 0)) { *psVar2 = sVar3; psVar2 = psVar2 + 1; } pPVar1 = pPVar1 + 1; } *psVar2 = -1; _DAT_00461aca = 0; Puzzles::SetVtableForGivenCategory(&PTR_LAB_00461b50); return; } void FUN_0042fc9c(void) { short in_stack_00000004; short in_stack_00000008; *(int *)&_GameState->field_0x10 = *(int *)&_GameState->field_0x10 + (int)in_stack_00000004; if (in_stack_00000008 != 0) { DAT_004605b6 = DAT_004605b6 | 4; } return; } void FUN_0042fcbd(void) { short in_stack_00000004; _GameState->field28_0x1c = _GameState->field28_0x1c + in_stack_00000004; DAT_004605b6 = DAT_004605b6 | 8; return; } bool FUN_0042fcd7(void) { undefined2 *object; void *pvVar1; undefined4 uVar2; undefined4 uVar3; undefined4 extraout_EDX; undefined4 extraout_EDX_00; ushort in_stack_00000004; ushort in_stack_00000008; undefined2 *puVar4; undefined4 uVar5; char local_54 [80]; object = (undefined2 *)FUN_0044c2df(); *object = 0xffff; object[1] = 0xffff; pvVar1 = Resource::Load(in_stack_00000004,_pTEXT); *(void **)(object + 0xd) = pvVar1; GetWinapiString(local_54,0x4e59); Sprintf_(&DAT_00467cfa,local_54,&DAT_00461caf); *(undefined **)(object + 0xf) = &DAT_00467cfa; pvVar1 = Resource::Load(in_stack_00000008,_pTEXT); *(void **)(object + 0x11) = pvVar1; puVar4 = object; uVar2 = FUN_0044c371(object); uVar5 = *(undefined4 *)(object + 0xd); uVar3 = FUN_0044073c(uVar2,extraout_EDX,puVar4); FUN_0044073c(uVar3,extraout_EDX_00,uVar5,*(undefined4 *)(object + 0x11)); PoolFree(object); return (short)uVar2 != 0; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address undefined4 FUN_0042fe06(void) { bool bVar1; undefined3 extraout_var; undefined4 uVar2; uVar2 = 0; if (_DAT_004634c8 == 0) { if ((_DAT_004617c8 == 0) && (bVar1 = FUN_0042fcd7(), (short)CONCAT31(extraout_var,bVar1) == 0)) { return 0; } FUN_0042b260(); Puzzles::SetVtableForGivenCategory(&PTR_LAB_00461b74); uVar2 = 1; } return uVar2; } void FUN_0042fe4c(void) { undefined4 uVar1; uint uVar2; uint extraout_ECX; uint extraout_ECX_00; uint extraout_ECX_01; undefined4 extraout_EDX; undefined4 extraout_EDX_00; undefined4 extraout_EDX_01; FUN_0041a42a(); FUN_0041a8fe(); FUN_00417c57(); FUN_00416f98(); uVar1 = FUN_0044634d(); FUN_004145e2(uVar1,extraout_EDX,extraout_ECX); uVar2 = FUN_004143a5(); uVar1 = FUN_00434d2a(uVar2,extraout_EDX_00,extraout_ECX_00); FUN_0043d7c3(uVar1,extraout_EDX_01,extraout_ECX_01); DlistInit((Dlist *)_Actors[0]._114_4_); FUN_0044c950(); FUN_00447746(); return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_0042fe9d(void) { if (_DAT_00467da0 == 0) { FUN_0041161a(); FUN_0043ba1d(); FUN_00413a2c(); FUN_0043b443(); FUN_00447634(); _DAT_00467da0 = 1; if (_DAT_00467da2 != 0) { FUN_0043b47e(); } FUN_0044ca89(); } return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_0042fee7(void) { uint uVar1; if (_DAT_00467da0 != 0) { FUN_0044ca7e(); if (DAT_00469544 != (code *)0x0) { (*DAT_00469544)(); } FUN_0043b9f5(); FUN_004476a9(); FUN_0043b427(); _DAT_00467da0 = 0; FUN_00413a24(); uVar1 = FUN_0043b4a4(); _DAT_00467da2 = (undefined2)uVar1; } return; } undefined4 FUN_0042ff2e(void) { undefined2 extraout_var; undefined2 extraout_var_00; undefined2 uVar1; short in_stack_00000004; if (in_stack_00000004 == 0x52) { LAB_0042ff54: FUN_00426848(); uVar1 = extraout_var_00; } else { if (in_stack_00000004 != 0x53) { if (in_stack_00000004 == 0x72) goto LAB_0042ff54; if (in_stack_00000004 != 0x73) { return 0; } } FUN_004104c9(); uVar1 = extraout_var; } return CONCAT22(uVar1,1); } void FUN_0042ff68(void) { short in_stack_00000004; if (in_stack_00000004 != 0) { FUN_0041161a(); return; } FUN_0041161a(); return; } void FUN_0042ff86(void) { PTR_DoNothing_0046023c = DoNothing; Game::onWmActivate = DoNothing; Game::onWmActivateapp = DoNothing; FUN_00445eea(); FUN_004128c8(); FUN_004267f8(); FUN_0044d55a(); FUN_0044c9e9(); FUN_00416c01(); FUN_00440342(); FUN_0043078c(); FUN_0043abad(); FUN_0043c249(); return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address undefined4 FUN_0042ffd7(void) { undefined4 uVar1; uint uVar2; undefined2 extraout_var; undefined4 extraout_EDX; undefined4 extraout_EDX_00; undefined4 extraout_EDX_01; short sVar3; undefined *puVar4; undefined4 uVar5; undefined4 uVar6; FUN_0043c1c0(); uVar1 = FUN_0044b62f(); if ((short)uVar1 == 0) { return 0; } FUN_00440318(); sVar3 = 0; do { puVar4 = (&PTR_s_gizmo_dat_00461acc)[sVar3]; uVar1 = FUN_004403be(); if ((short)uVar1 == 0) { FUN_0041a08d(); return 0; } sVar3 = sVar3 + 1; } while (sVar3 < 0x12); FUN_0044c970(uVar1,extraout_EDX,puVar4,1000); FUN_004305fc(0x200,0x180,2); FUN_004127bc(); FUN_004267cc(); uVar2 = FUN_00416bad(); FUN_00445d1d(uVar2); FUN_0044d531(); FUN_0043ab87(); FUN_004548e0(FUN_0042ff86); GetWinapiString(&DAT_00467d4a,0x4e22); FUN_004116a2(); FUN_0043bc68(); Game::onWmActivate = FUN_0042fe9d; Game::onWmActivateapp = FUN_0042fee7; Game::onWmQueryendsessionOrSyscommandF060h = FUN_0042fe06; Game::onWmChar = FUN_0042ff2e; Game::onWmInitmenu = FUN_0042fee7; Game::onWmMenuselect = FUN_0042fe9d; Game::onWmCommand = FUN_0043b1cc; Nfnt::LoadWithCache(200); SetCurrentFont(200); FUN_0042f4ab(); FUN_0043b972(); FUN_0044b434(2,&PTR_FUN_004627d8); uVar5 = 0; uVar1 = FUN_0041161a(); uVar6 = 0; uVar1 = FUN_00455430(uVar1,extraout_EDX_00,uVar5); FUN_00454224(uVar1,extraout_EDX_01,uVar6,uVar1); FUN_0043b3e0(); FUN_00431df5(); _DAT_00467da0 = 1; return CONCAT22(extraout_var,1); } // WARNING: Globals starting with '_' overlap smaller symbols at the same address undefined4 FUN_0043013c(undefined4 param_1) { UINT uMode; DAT_00461cc8 = (HMODULE)0x0; if (DAT_00467db0 == 3) { uMode = SetErrorMode(0x8000); DAT_00461cc8 = LoadLibraryA(s_WING32_DLL_004624d4); SetErrorMode(uMode); if (DAT_00461cc8 < (HMODULE)0x20) { param_1 = 0; } else { DAT_0046842c = GetProcAddress(DAT_00461cc8,(LPCSTR)0x3); DAT_00468430 = GetProcAddress(DAT_00461cc8,(LPCSTR)0x8); DAT_00468434 = GetProcAddress(DAT_00461cc8,(LPCSTR)0x2); _DAT_00468438 = GetProcAddress(DAT_00461cc8,(LPCSTR)0x7); _DAT_0046843c = GetProcAddress(DAT_00461cc8,(LPCSTR)0x6); DAT_00468440 = GetProcAddress(DAT_00461cc8,(LPCSTR)0x9); DAT_00468444 = GetProcAddress(DAT_00461cc8,(LPCSTR)0x1); _DAT_00468448 = GetProcAddress(DAT_00461cc8,(LPCSTR)0xa); param_1 = CONCAT22((short)((uint)_DAT_00468448 >> 0x10),1); } } return param_1; } void FUN_004301fc(void) { if (DAT_00461cc8 != (HMODULE)0x0) { FreeLibrary(DAT_00461cc8); DAT_00461cc8 = (HMODULE)0x0; } return; } void FUN_0043025c(void) { int DestHeight; DestHeight = (int)DAT_00467e18; StretchDIBits(DAT_00468428,(int)DAT_00467e12 + (int)Game::drawAreaX, (int)DAT_00467e14 + (int)Game::drawAreaY,(int)DAT_00467e16,DestHeight, (int)DAT_00467e12,(int)DAT_00467dcc - (DAT_00467e14 + DestHeight),(int)DAT_00467e16, DestHeight,DAT_00467dd2,DAT_00467dc4,(int)DAT_00461cb4,0xcc0020); return; } void FUN_004302cc(void) { int iVar1; void *pvVar2; int iVar3; undefined1 *puVar4; undefined4 uVar5; HGDIOBJ pvVar6; undefined1 *puVar7; ushort uVar8; short sVar9; uint len; short in_stack_00000004; short in_stack_00000008; short in_stack_0000000c; undefined2 local_428; undefined1 local_408 [1026]; undefined2 local_6; local_6 = 0; iVar1 = (int)in_stack_00000004; Memset(&DAT_00467dc8 + iVar1 * 0xe,0,0x1c); (&DAT_00467dc8)[iVar1 * 0xe] = DAT_00467db0; (&DAT_00467dca)[iVar1 * 0xe] = in_stack_00000008; (&DAT_00467dcc)[iVar1 * 0xe] = in_stack_0000000c; uVar8 = in_stack_00000008 + 3U & 0xfffc; (&DAT_00467dce)[iVar1 * 0xe] = uVar8; len = (int)(short)uVar8 * (int)in_stack_0000000c; if ((len & 0xffff) == 0) { len = len + 100; } if (DAT_00467db0 == 1) { (&DAT_00467dd6)[iVar1 * 0xe] = 0; (&DAT_00467dd0)[iVar1 * 0xe] = 1; pvVar2 = PoolAlloc(len); (&DAT_00467dd2)[iVar1 * 7] = pvVar2; } else if (DAT_00467db0 == 3) { (&DAT_00467dd6)[iVar1 * 0xe] = 1; iVar3 = (*DAT_00468430)(); if (iVar3 != 0) { sVar9 = 0; puVar4 = local_408 + 2; puVar7 = &DAT_00468124; do { *puVar4 = *puVar7; puVar4[-1] = puVar7[1]; puVar4[-2] = puVar7[2]; puVar4[1] = 0; sVar9 = sVar9 + 1; puVar4 = puVar4 + 4; puVar7 = puVar7 + 3; } while (sVar9 < 0x100); uVar5 = (*DAT_0046842c)(); (&DAT_00467dd8)[iVar1 * 7] = uVar5; (&DAT_00467dd0)[iVar1 * 0xe] = local_428; if ((&DAT_00467dd8)[iVar1 * 7] != 0) { pvVar6 = (HGDIOBJ)(*DAT_00468434)(); (&DAT_00467ddc)[iVar1 * 7] = pvVar6; if (pvVar6 != (HGDIOBJ)0x0) { pvVar6 = SelectObject((HDC)(&DAT_00467dd8)[iVar1 * 7],pvVar6); (&DAT_00467de0)[iVar1 * 7] = pvVar6; } } } } return; } void FUN_00430434(void) { int iVar1; short in_stack_00000004; iVar1 = (int)in_stack_00000004; if (DAT_00467db0 == 1) { PoolFree((void *)(&DAT_00467dd2)[iVar1 * 7]); return; } if (DAT_00467db0 != 3) { return; } SelectObject((HDC)(&DAT_00467dd8)[iVar1 * 7],(HGDIOBJ)(&DAT_00467de0)[iVar1 * 7]); DeleteObject((HGDIOBJ)(&DAT_00467ddc)[iVar1 * 7]); DeleteDC((HDC)(&DAT_00467dd8)[iVar1 * 7]); return; } void FUN_00430494(void) { HBRUSH hbr; HWND hWnd; BOOL BVar1; int iVar2; tagRECT *ptVar3; RECT *pRVar4; HDC in_stack_00000004; RECT *in_stack_00000008; RECT local_24; tagRECT local_14; hbr = GetStockObject(1); ptVar3 = &local_14; hWnd = GetDesktopWindow(); GetWindowRect(hWnd,ptVar3); ptVar3 = &local_14; pRVar4 = &local_24; for (iVar2 = 4; iVar2 != 0; iVar2 = iVar2 + -1) { pRVar4->left = ptVar3->left; ptVar3 = (tagRECT *)&ptVar3->top; pRVar4 = (RECT *)&pRVar4->top; } local_24.bottom = Game::drawAreaY + local_24.top; FillRect(in_stack_00000004,&local_24,hbr); local_24.bottom = local_14.bottom; local_24.top = local_24.top + (int)Game::drawAreaY + (int)DAT_00467db8; FillRect(in_stack_00000004,&local_24,hbr); local_24.top = local_14.top; local_24.right = (LONG)Game::drawAreaX; FillRect(in_stack_00000004,&local_24,hbr); local_24.right = local_14.right; local_24.left = local_24.left + (int)Game::drawAreaX + (int)DAT_00467db6; FillRect(in_stack_00000004,&local_24,hbr); SetRect(&local_14,(int)Game::drawAreaX,(int)Game::drawAreaY, (int)DAT_00467db6 + (int)Game::drawAreaX,(int)DAT_00467db8 + (int)Game::drawAreaY); BVar1 = IntersectRect(&local_24,in_stack_00000008,&local_14); if (BVar1 != 0) { DAT_00468428 = in_stack_00000004; DAT_00467e12 = (short)local_24.left - Game::drawAreaX; DAT_00467e14 = (short)local_24.top - Game::drawAreaY; DAT_00467e16 = (short)local_24.right - (short)local_24.left; DAT_00467e18 = (short)local_24.bottom - (short)local_24.top; if (DAT_0046811c != (HPALETTE)0x0) { SelectPalette(in_stack_00000004,DAT_0046811c,0); RealizePalette(DAT_00468428); } (*DAT_00468424)(); } return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address undefined4 __cdecl FUN_004305fc(short param_1,short param_2,short param_3) { short sVar1; undefined4 in_EAX; undefined2 uVar5; char *pcVar2; undefined4 uVar3; undefined4 *puVar4; undefined2 extraout_var; undefined2 extraout_var_00; undefined2 extraout_var_01; undefined4 extraout_ECX; undefined4 extraout_ECX_00; short *psVar6; undefined4 extraout_EDX; undefined4 extraout_EDX_00; undefined4 uVar7; uVar5 = (undefined2)((uint)in_EAX >> 0x10); if (DAT_00467da4 == -0x5aa6) { if (_DAT_00461cbc == 0) { Game::SetDrawAreaXY((undefined2)Game::mouseInputRect.left,(undefined2)Game::mouseInputRect.top ); PTR_FUN_0046021c = FUN_00430494; FUN_004310f8(); if (DAT_00467db0 == 1) { DAT_00468424 = FUN_0043025c; puVar4 = PoolAlloc(0x428); DAT_00467dc4 = puVar4; *puVar4 = 0x28; *(undefined2 *)(puVar4 + 3) = 1; *(undefined2 *)((int)puVar4 + 0xe) = 8; puVar4[4] = 0; puVar4[7] = 0; puVar4[6] = 0; puVar4[9] = 0; puVar4[8] = 0; puVar4[1] = (int)param_1; puVar4[2] = (int)param_2; puVar4[5] = (int)param_1 * (int)param_2; psVar6 = (short *)(DAT_00467dc4 + 10); sVar1 = 0; do { *psVar6 = sVar1; psVar6 = psVar6 + 1; sVar1 = sVar1 + 1; } while (sVar1 < 0x100); } else if (DAT_00467db0 == 3) { DAT_00468424 = (code *)&LAB_00430214; } if (2 < param_3) { param_3 = 2; } FUN_00431d24(); _DAT_00467e10 = param_3; sVar1 = 0; uVar3 = extraout_ECX; uVar7 = extraout_EDX; uVar5 = extraout_var; if (0 < param_3) { do { FUN_004302cc(); sVar1 = sVar1 + 1; uVar3 = extraout_ECX_00; uVar7 = extraout_EDX_00; uVar5 = extraout_var_00; } while (sVar1 < param_3); } FUN_00412156(CONCAT22(uVar5,DAT_00467dc8),uVar7,uVar3,DAT_00467dc8,DAT_00467dd0); FUN_00431420(); FUN_00431b20(); FUN_004313d8(); FUN_00431b20(); _DAT_00461cbc = 1; uVar5 = extraout_var_01; } uVar3 = CONCAT22(uVar5,1); } else { pcVar2 = GetWinapiStringAlloc(0x4e8a); ShowAlertMessage(pcVar2); TurboFree_(pcVar2); uVar3 = 0; } return uVar3; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_0043078c(void) { short sVar1; if (_DAT_00461cbc != 0) { FUN_00431b20(); FUN_00430bbc(); for (sVar1 = 0; sVar1 < _DAT_00467e10; sVar1 = sVar1 + 1) { FUN_00430434(); } if (DAT_0046811c != (HGDIOBJ)0x0) { DeleteObject(DAT_0046811c); } if (DAT_00467db0 == 1) { PoolFree(DAT_00467dc4); } PTR_FUN_0046021c = FUN_00412250; _DAT_00461cbc = 0; } FUN_004301fc(); return; } void FUN_00430810(void) { HDC hdc; int iVar1; undefined4 uVar2; short in_stack_00000004; short in_stack_00000008; byte in_stack_0000000c; if (in_stack_00000004 == 2) { in_stack_00000004 = 3; in_stack_00000008 = 1; } hdc = GetDC((HWND)0x0); iVar1 = GetDeviceCaps(hdc,0xc); DAT_00467da8 = (short)iVar1; iVar1 = GetDeviceCaps(hdc,0xe); DAT_00467db4 = (short)iVar1; iVar1 = GetDeviceCaps(hdc,8); DAT_00467daa = (undefined2)iVar1; iVar1 = GetDeviceCaps(hdc,10); DAT_00467dac = (undefined2)iVar1; iVar1 = ReleaseDC((HWND)0x0,hdc); DAT_00467db0 = 0; DAT_00467db2 = 1; if ((DAT_00467db4 == 1) && (7 < DAT_00467da8)) { _ColorMode = 256; DAT_00467db0 = in_stack_00000004; if (in_stack_00000004 == 3) { uVar2 = FUN_0043013c(iVar1); if ((short)uVar2 == 0) { DAT_00467db0 = in_stack_00000008; } } if ((8 < DAT_00467da8) && (in_stack_00000004 == 2)) { DAT_00467db0 = in_stack_00000008; } } if (((DAT_00467db4 == 4) && (DAT_00467da8 == 1)) || ((DAT_00467db4 == 1 && (DAT_00467da8 == 4)))) { _ColorMode = 16; DAT_00467db0 = 4; DAT_00467db2 = 0; } if ((in_stack_0000000c & 1) != 0) { DAT_00461cb4 = 2; } DAT_00467da4 = 0xa55a; return; } void FUN_00430a20(void) { short sVar1; bool *pbVar2; short sVar3; short sVar4; short *in_stack_00000004; short local_8; short local_6; local_6 = *in_stack_00000004; sVar3 = local_6 + in_stack_00000004[2] + -1; sVar1 = in_stack_00000004[1]; local_8 = sVar1 + in_stack_00000004[3] + -1; if (local_6 < 0) { local_6 = 0; } if (0x1ff < sVar3) { sVar3 = 0x1ff; } if (sVar1 < 0) { sVar1 = 0; } if (0x17f < local_8) { local_8 = 0x17f; } for (sVar1 = sVar1 >> 4; sVar1 <= local_8 >> 4; sVar1 = sVar1 + 1) { pbVar2 = Draw::dirtyTiles[sVar1] + (local_6 >> 4); for (sVar4 = local_6 >> 4; sVar4 <= sVar3 >> 4; sVar4 = sVar4 + 1) { *pbVar2 = false; pbVar2 = pbVar2 + 1; } } return; } void __stdcall FUN_00430abc(short param_1,short param_2,short param_3,short param_4) { Rect16 local_c; local_c.x = param_1; local_c.y = param_2; local_c.w = param_3; local_c.h = param_4; Draw::DirtyRect(&local_c); return; } void FUN_00430af0(void) { char *pcVar1; undefined1 unaff_DI; undefined2 in_stack_00000004; undefined2 in_stack_00000008; undefined2 in_stack_0000000c; undefined2 in_stack_00000010; byte in_stack_00000014; DAT_00467e12 = in_stack_00000004; DAT_00467e14 = in_stack_00000008; DAT_00467e16 = in_stack_0000000c; DAT_00467e18 = in_stack_00000010; DAT_00468428 = GetDC(Game::window); if (DAT_00468428 == (HDC)0x0) { pcVar1 = GetWinapiStringAlloc(0x4e8b); FUN_0041acce(pcVar1,unaff_DI); TurboFree_(pcVar1); } if (DAT_0046811c != (HPALETTE)0x0) { SelectPalette(DAT_00468428,DAT_0046811c,0); RealizePalette(DAT_00468428); } (*DAT_00468424)(); ReleaseDC(Game::window,DAT_00468428); if ((in_stack_00000014 & 1) != 0) { FUN_00430a20(); } return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address undefined4 FUN_00430bbc(void) { char cVar1; char *pcVar2; short sVar3; undefined4 uVar4; short sVar5; bool *pbVar6; short sStack_18; bool *pbStack_14; uVar4 = 0; if ((_DAT_00461cc4 == 0) && (_DAT_00461cc6 == 0)) { FUN_00426842(); if (Draw::dirtyMode < 0) { DAT_00467e14 = 0; DAT_00467e12 = 0; DAT_00467e16 = 0x200; DAT_00467e18 = 0x180; DAT_00468428 = GetDC(Game::window); if (DAT_00468428 == (HDC)0x0) { pcVar2 = GetWinapiStringAlloc(0x4e8c); ShowAlertMessage(pcVar2); TurboFree_(pcVar2); } if (DAT_0046811c != (HPALETTE)0x0) { SelectPalette(DAT_00468428,DAT_0046811c,0); RealizePalette(DAT_00468428); } (*DAT_00468424)(); ReleaseDC(Game::window,DAT_00468428); Draw::dirtyMode = 0; uVar4 = 1; } if (Draw::dirtyMode != 0) { Draw::dirtyMode = 0; pbStack_14 = Draw::dirtyTiles[0]; DAT_00467e18 = 0x10; DAT_00468428 = GetDC(Game::window); if (DAT_0046811c != (HPALETTE)0x0) { SelectPalette(DAT_00468428,DAT_0046811c,0); RealizePalette(DAT_00468428); } sStack_18 = 0; DAT_00467e14 = 0; do { DAT_00467e12 = 0; sVar5 = 0; pbVar6 = pbStack_14; do { for (sVar3 = 0; (cVar1 = *pbVar6, pbVar6 = pbVar6 + 1, cVar1 != '\0' && ((int)sVar5 + (int)sVar3 < 0x20)); sVar3 = sVar3 + 1) { } if (sVar3 == 0) { sVar5 = sVar5 + 1; } else { DAT_00467e16 = sVar3 << 4; (*DAT_00468424)(); sVar5 = sVar5 + sVar3 + 1; DAT_00467e12 = DAT_00467e16 + DAT_00467e12; uVar4 = 1; } DAT_00467e12 = DAT_00467e12 + 0x10; } while (sVar5 < 0x20); pbStack_14 = pbStack_14 + 0x20; DAT_00467e14 = DAT_00467e14 + 0x10; sStack_18 = sStack_18 + 1; } while (sStack_18 < 0x18); ReleaseDC(Game::window,DAT_00468428); } Draw::DirtyInit(); if (_DAT_00461cc4 != 0) { FUN_0043139c(); } } else { uVar4 = 0; } return uVar4; } void FUN_00430db4(void) { FUN_0041202e(); return; } void __stdcall FUN_00430de8(short param_1,short param_2,short param_3,short param_4) { Rect16 local_c; local_c.x = param_1; local_c.y = param_2; local_c.w = param_3; local_c.h = param_4; FUN_00412086(); Draw::DirtyRect(&local_c); return; } void FUN_00430e28(void) { PALETTEENTRY *pPVar1; HDC hdc; HPALETTE pHVar2; int iVar3; undefined4 *puVar4; LOGPALETTE *pLVar5; LOGPALETTE aLStack_410 [128]; puVar4 = &DAT_00461ccc; pLVar5 = aLStack_410; for (iVar3 = 0x101; iVar3 != 0; iVar3 = iVar3 + -1) { *(undefined4 *)pLVar5 = *puVar4; puVar4 = puVar4 + 1; pLVar5 = (LOGPALETTE *)((int)pLVar5 + 4); } iVar3 = 0; pPVar1 = aLStack_410[0].palPalEntry; do { pPVar1->peRed = '\0'; pPVar1->peGreen = '\0'; pPVar1->peBlue = '\0'; pPVar1->peFlags = '\x04'; iVar3 = iVar3 + 1; pPVar1 = pPVar1 + 1; } while (iVar3 < 0x100); hdc = GetDC((HWND)0x0); pHVar2 = CreatePalette(aLStack_410); if (pHVar2 != (HPALETTE)0x0) { pHVar2 = SelectPalette(hdc,pHVar2,0); RealizePalette(hdc); pHVar2 = SelectPalette(hdc,pHVar2,0); DeleteObject(pHVar2); } ReleaseDC((HWND)0x0,hdc); return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_00430ef8(void) { BYTE BVar1; undefined1 *puVar2; BYTE *pBVar3; UINT UVar4; char *pcVar5; BYTE *pBVar6; PALETTEENTRY *pPVar7; short sVar8; short in_stack_00000004; short in_stack_00000008; undefined2 *in_stack_0000000c; BYTE local_804 [1024]; PALETTEENTRY local_404 [256]; puVar2 = &DAT_00468124 + in_stack_00000004 * 3; for (sVar8 = in_stack_00000004; sVar8 < (short)(in_stack_00000004 + in_stack_00000008); sVar8 = sVar8 + 1) { *puVar2 = (char)((ushort)*in_stack_0000000c >> 8); puVar2[1] = (char)((ushort)in_stack_0000000c[1] >> 8); puVar2[2] = (char)((ushort)in_stack_0000000c[2] >> 8); in_stack_0000000c = in_stack_0000000c + 3; puVar2 = puVar2 + 3; } pBVar3 = &DAT_00468124 + in_stack_00000004 * 3; sVar8 = 0; pBVar6 = local_804 + 2; pPVar7 = local_404; if (0 < in_stack_00000008) { do { BVar1 = *pBVar3; pPVar7->peRed = BVar1; *pBVar6 = BVar1; BVar1 = pBVar3[1]; pPVar7->peGreen = BVar1; pBVar6[-1] = BVar1; BVar1 = pBVar3[2]; pPVar7->peBlue = BVar1; pBVar6[-2] = BVar1; pPVar7->peFlags = '\0'; pBVar6[1] = '\0'; pBVar3 = pBVar3 + 3; pPVar7 = pPVar7 + 1; pBVar6 = pBVar6 + 4; sVar8 = sVar8 + 1; } while (sVar8 < in_stack_00000008); } UVar4 = SetPaletteEntries(DAT_0046811c,(int)in_stack_00000004,(int)in_stack_00000008,local_404); if (UVar4 == 0) { pcVar5 = GetWinapiStringAlloc(0x4e8d); ShowAlertMessage(pcVar5); TurboFree_(pcVar5); } if (((DAT_00467db0 != 1) && (DAT_00467db0 != 2)) && (DAT_00467db0 == 3)) { for (sVar8 = 0; sVar8 < _DAT_00467e10; sVar8 = sVar8 + 1) { (*DAT_00468440)(); } } return; } void FUN_00431024(uint param_1,undefined4 param_2,uint param_3,ushort param_4) { DAT_00468122 = param_4; Resource::Load(param_4,&_RRGB0); FUN_00430ef8(); FUN_00440695(param_4,&_RRGB1); return; } void FUN_00431084(uint param_1,undefined4 param_2,uint param_3,ushort param_4) { Resource::Load(param_4,&_RRGB2); FUN_00430ef8(); FUN_00440695(param_4,&_RRGB3); return; } void FUN_004310d0(uint param_1,undefined4 param_2,uint param_3,short param_4) { if (param_4 == 0) { DAT_00468120 = DAT_00468122; return; } FUN_00431024(CONCAT22((short)(param_1 >> 0x10),DAT_00468120),param_2,param_3,DAT_00468120); return; } void FUN_004310f8(void) { undefined4 uVar1; short sVar2; HDC hdc; UINT UVar3; uint uVar4; int iVar5; PALETTEENTRY *pPVar6; undefined4 *puVar7; undefined1 *puVar8; BYTE *pBVar9; LOGPALETTE *pLVar10; LOGPALETTE local_414 [128]; undefined1 local_14; undefined1 local_13; undefined1 local_12; undefined1 local_11; puVar7 = &DAT_004620d0; pLVar10 = local_414; for (iVar5 = 0x101; iVar5 != 0; iVar5 = iVar5 + -1) { uVar1 = *puVar7; pLVar10->palVersion = (short)uVar1; pLVar10->palNumEntries = (short)((uint)uVar1 >> 0x10); puVar7 = puVar7 + 1; pLVar10 = (LOGPALETTE *)pLVar10->palPalEntry; } hdc = GetDC((HWND)0x0); DAT_00468122 = 0xffff; FUN_00430e28(); UVar3 = GetSystemPaletteUse(hdc); if (UVar3 == 2) { puVar8 = &DAT_00468124; pPVar6 = local_414[0].palPalEntry; for (sVar2 = 0; sVar2 < _ColorMode; sVar2 = sVar2 + 1) { pPVar6->peRed = '\0'; *puVar8 = 0; pPVar6->peGreen = '\0'; puVar8[1] = 0; pPVar6->peBlue = '\0'; puVar8[2] = 0; pPVar6->peFlags = '\x04'; puVar8 = puVar8 + 3; pPVar6 = pPVar6 + 1; } local_14 = 0xff; DAT_00468421 = 0xff; local_13 = 0xff; DAT_00468422 = 0xff; local_12 = 0xff; DAT_00468423 = 0xff; local_11 = 0; local_414[0].palPalEntry[0].peRed = '\0'; DAT_00468124 = 0; local_414[0].palPalEntry[0].peGreen = '\0'; DAT_00468125 = 0; local_414[0].palPalEntry[0].peBlue = '\0'; DAT_00468126 = 0; local_414[0].palPalEntry[0].peFlags = '\0'; } else { uVar4 = GetDeviceCaps(hdc,0x18); GetSystemPaletteEntries(hdc,0,0x100,local_414[0].palPalEntry); iVar5 = (int)uVar4 >> 1; if (iVar5 < 0) { iVar5 = iVar5 + (uint)((uVar4 & 1) != 0); } pBVar9 = &DAT_00468124; pPVar6 = local_414[0].palPalEntry; for (sVar2 = 0; sVar2 < iVar5; sVar2 = sVar2 + 1) { *pBVar9 = pPVar6->peRed; pBVar9[1] = pPVar6->peGreen; pBVar9[2] = pPVar6->peBlue; pPVar6->peFlags = '\0'; pBVar9 = pBVar9 + 3; pPVar6 = pPVar6 + 1; } pPVar6 = local_414[0].palPalEntry + sVar2; pBVar9 = &DAT_00468124 + sVar2 * 3; for (; (int)sVar2 < 0x100 - iVar5; sVar2 = sVar2 + 1) { pPVar6->peRed = *pBVar9; pPVar6->peGreen = pBVar9[1]; pPVar6->peBlue = pBVar9[2]; pPVar6->peFlags = '\x01'; pPVar6 = pPVar6 + 1; pBVar9 = pBVar9 + 3; } sVar2 = 0x100 - (short)iVar5; pBVar9 = &DAT_00468124 + sVar2 * 3; pPVar6 = local_414[0].palPalEntry + sVar2; for (; sVar2 < 0x100; sVar2 = sVar2 + 1) { *pBVar9 = pPVar6->peRed; pBVar9[1] = pPVar6->peGreen; pBVar9[2] = pPVar6->peBlue; pPVar6->peFlags = '\0'; pBVar9 = pBVar9 + 3; pPVar6 = pPVar6 + 1; } } ReleaseDC((HWND)0x0,hdc); DAT_0046811c = CreatePalette(local_414); return; } int FUN_004312c4(void) { byte *pbVar1; int iVar2; ushort uVar3; ushort uVar4; int iVar5; iVar5 = 0; uVar4 = (ushort)DAT_00468124 + (ushort)DAT_00468125 + (ushort)DAT_00468126; uVar3 = (ushort)DAT_00468421 + (ushort)DAT_00468422 + (ushort)DAT_00468423; if (uVar3 < uVar4) { iVar5 = 0xff; uVar4 = uVar3; } iVar2 = 1; pbVar1 = &DAT_00468127; do { uVar3 = (ushort)*pbVar1 + (ushort)pbVar1[1] + (ushort)pbVar1[2]; if (uVar3 < uVar4) { iVar5 = iVar2; uVar4 = uVar3; } iVar2 = iVar2 + 1; pbVar1 = pbVar1 + 3; } while ((short)iVar2 < 0xff); return iVar5; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_00431348(void) { if (_DAT_00461cc4 == 0) { FUN_004312c4(); Draw::dirtyMode = 0xffff; FUN_00431b20(); FUN_00430bbc(); _DAT_00461cc4 = 1; if (DAT_00461cb8 != (code *)0x0) { (*DAT_00461cb8)(); } } return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_0043139c(void) { if ((_DAT_00461cc4 != 0) && (_DAT_00461cc4 = 0, DAT_00461cb8 != (code *)0x0)) { (*DAT_00461cb8)(); } return; } undefined1 * FUN_004313c4(void) { short in_stack_00000004; return &DAT_00468124 + in_stack_00000004 * 3; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_004313d8(void) { DAT_00467e00 = 0; DAT_00467e04 = DAT_00467dd2; DAT_00467e08 = DAT_00467dee; DAT_00467db6 = DAT_00467dca; DAT_00467db8 = DAT_00467dcc; _DAT_00467e0c = 0; _DAT_00467e0e = 1; return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_00431420(void) { DAT_00467e00 = 1; DAT_00467e04 = DAT_00467dee; DAT_00467e08 = DAT_00467dd2; DAT_00467db6 = DAT_00467de6; DAT_00467db8 = DAT_00467de8; _DAT_00467e0c = 1; _DAT_00467e0e = 0; return; } void FUN_004314f0(void) { undefined1 uVar1; short sVar2; short sVar3; short sVar4; undefined2 extraout_var; undefined1 *puVar5; undefined2 extraout_var_00; undefined1 *puVar6; undefined4 extraout_ECX; undefined4 extraout_ECX_00; undefined4 extraout_EDX; undefined4 extraout_EDX_00; short sVar7; short *in_stack_0000000c; short local_c; short local_8; sVar2 = *in_stack_0000000c; local_8 = in_stack_0000000c[1]; sVar3 = in_stack_0000000c[2]; sVar4 = in_stack_0000000c[3]; local_c = 0; if (0 < sVar4) { do { FUN_00431420(); puVar5 = (undefined1 *) FUN_00431a1c(CONCAT22(extraout_var,sVar2),extraout_EDX,extraout_ECX,sVar2,local_8); FUN_004313d8(); puVar6 = (undefined1 *) FUN_00431a1c(CONCAT22(extraout_var_00,sVar2),extraout_EDX_00,extraout_ECX_00,sVar2, local_8); sVar7 = 0; if (0 < sVar3) { do { uVar1 = *puVar6; *puVar6 = *puVar5; puVar6 = puVar6 + 1; *puVar5 = uVar1; puVar5 = puVar5 + 1; sVar7 = sVar7 + 1; } while (sVar7 < sVar3); } local_8 = local_8 + 1; local_c = local_c + 1; } while (local_c < sVar4); } return; } void FUN_00431588(void) { undefined2 in_stack_00000004; undefined2 in_stack_00000008; FUN_004118bf(); FUN_00430abc(in_stack_00000004,in_stack_00000008,1,1); return; } void FUN_004315b4(void) { short sVar1; byte bVar2; byte bVar3; short sVar4; short sVar5; short sVar6; int iVar7; short sVar8; byte *pbVar9; byte *pbVar10; byte *pbVar11; short in_stack_00000004; short in_stack_00000008; int in_stack_0000000c; short local_1a; short local_14; short local_12; byte *local_c; local_12 = *(short *)(in_stack_0000000c + 4) + in_stack_00000008; sVar5 = in_stack_00000008; if (in_stack_00000008 < DAT_00467dbe) { sVar5 = DAT_00467dbe; } if (sVar5 <= DAT_00467dc0) { if (DAT_00467dc0 < local_12) { local_12 = DAT_00467dc0 + 1; } sVar4 = *(short *)(in_stack_0000000c + 2); pbVar10 = (byte *)(in_stack_0000000c + 6); local_14 = sVar4; do { while( true ) { if (DAT_00467dbe <= in_stack_00000008) { local_1a = DAT_00467dce; if (DAT_00467dd0 == -1) { iVar7 = (int)sVar5 * (int)DAT_00467dce + (int)in_stack_00000004; } else { iVar7 = (0x17f - sVar5) * (int)DAT_00467dce + (int)in_stack_00000004; local_1a = -DAT_00467dce; } pbVar9 = (byte *)(iVar7 + DAT_00467e04); for (; sVar6 = in_stack_00000004, sVar1 = sVar4, local_c = pbVar9, sVar5 < local_12; sVar5 = sVar5 + 1) { while (sVar1 != 0) { bVar2 = *pbVar10; pbVar11 = pbVar10 + 1; if (bVar2 == 0) { bVar2 = *pbVar11; local_c = local_c + bVar2; sVar1 = sVar1 - (ushort)bVar2; sVar6 = sVar6 + (ushort)bVar2; pbVar10 = pbVar10 + 2; } else if (bVar2 == 0xff) { bVar2 = *pbVar11; bVar3 = pbVar10[2]; pbVar10 = pbVar10 + 3; sVar1 = sVar1 - (ushort)bVar3; for (sVar8 = 0; sVar8 < (short)(ushort)bVar3; sVar8 = sVar8 + 1) { if ((DAT_00467dba <= sVar6) && (sVar6 <= DAT_00467dbc)) { *local_c = bVar2; } sVar6 = sVar6 + 1; local_c = local_c + 1; } } else { sVar1 = sVar1 - (ushort)bVar2; for (sVar8 = 0; pbVar10 = pbVar11, sVar8 < (short)(ushort)bVar2; sVar8 = sVar8 + 1) { if ((DAT_00467dba <= sVar6) && (sVar6 <= DAT_00467dbc)) { *local_c = *pbVar11; } pbVar11 = pbVar11 + 1; local_c = local_c + 1; sVar6 = sVar6 + 1; } } } pbVar9 = pbVar9 + local_1a; } return; } bVar2 = *pbVar10; if (bVar2 != 0) break; bVar2 = pbVar10[1]; pbVar10 = pbVar10 + 2; joined_r0x00431654: local_14 = local_14 - (ushort)bVar2; if ((local_14 == 0) && (in_stack_00000008 = in_stack_00000008 + 1, local_14 = sVar4, in_stack_00000008 == local_12)) { return; } } if (bVar2 == 0xff) { bVar2 = pbVar10[2]; pbVar10 = pbVar10 + 3; goto joined_r0x00431654; } local_14 = local_14 - (ushort)bVar2; pbVar10 = pbVar10 + 1 + bVar2; } while ((local_14 != 0) || (in_stack_00000008 = in_stack_00000008 + 1, local_14 = sVar4, in_stack_00000008 != local_12)); } return; } void FUN_004317e8(void) { short sVar1; byte bVar2; byte bVar3; short sVar4; int iVar5; int iVar6; int iVar7; int iVar8; byte *pbVar9; byte *pbVar10; short in_stack_00000004; short in_stack_00000008; int in_stack_0000000c; short local_1c; short local_16; int local_14; byte *local_c; iVar7 = (int)in_stack_00000008; local_14 = iVar7 + *(short *)(in_stack_0000000c + 4); if (in_stack_00000008 < DAT_00467dbe) { in_stack_00000008 = DAT_00467dbe; } if ((in_stack_00000008 <= DAT_00467dc0) && (DAT_00467dbe <= local_14)) { if (DAT_00467dc0 < local_14) { local_14 = (int)DAT_00467dc0; } sVar4 = *(short *)(in_stack_0000000c + 2); pbVar9 = (byte *)(in_stack_0000000c + 6); local_16 = sVar4; do { while( true ) { if (DAT_00467dbe <= iVar7) { local_1c = DAT_00467dce; if (DAT_00467dd0 == -1) { iVar7 = (int)in_stack_00000008 * (int)DAT_00467dce; } else { iVar7 = (0x17f - in_stack_00000008) * (int)DAT_00467dce; local_1c = -DAT_00467dce; } iVar7 = iVar7 + DAT_00467e04; for (iVar5 = (int)in_stack_00000008; iVar5 < local_14; iVar5 = iVar5 + 1) { iVar6 = (int)in_stack_00000004 + (int)sVar4 + -1; local_c = (byte *)(iVar7 + iVar6); sVar1 = sVar4; while (sVar1 != 0) { bVar2 = *pbVar9; pbVar10 = pbVar9 + 1; if (bVar2 == 0) { bVar2 = *pbVar10; local_c = local_c + -(uint)bVar2; sVar1 = sVar1 - (ushort)bVar2; iVar6 = iVar6 - (uint)bVar2; pbVar9 = pbVar9 + 2; } else if (bVar2 == 0xff) { bVar2 = *pbVar10; bVar3 = pbVar9[2]; pbVar9 = pbVar9 + 3; sVar1 = sVar1 - (ushort)bVar3; for (iVar8 = 0; iVar8 < (int)(uint)bVar3; iVar8 = iVar8 + 1) { if ((DAT_00467dba <= iVar6) && (iVar6 <= DAT_00467dbc)) { *local_c = bVar2; } local_c = local_c + -1; iVar6 = iVar6 + -1; } } else { sVar1 = sVar1 - (ushort)bVar2; for (iVar8 = 0; pbVar9 = pbVar10, iVar8 < (int)(uint)bVar2; iVar8 = iVar8 + 1) { if ((DAT_00467dba <= iVar6) && (iVar6 <= DAT_00467dbc)) { *local_c = *pbVar10; } pbVar10 = pbVar10 + 1; local_c = local_c + -1; iVar6 = iVar6 + -1; } } } iVar7 = iVar7 + local_1c; } return; } bVar2 = *pbVar9; if (bVar2 != 0) break; bVar2 = pbVar9[1]; pbVar9 = pbVar9 + 2; joined_r0x00431894: local_16 = local_16 - (ushort)bVar2; if ((local_16 == 0) && (iVar7 = iVar7 + 1, local_16 = sVar4, iVar7 == local_14)) { return; } } if (bVar2 == 0xff) { bVar2 = pbVar9[2]; pbVar9 = pbVar9 + 3; goto joined_r0x00431894; } local_16 = local_16 - (ushort)bVar2; pbVar9 = pbVar9 + 1 + bVar2; } while ((local_16 != 0) || (iVar7 = iVar7 + 1, local_16 = sVar4, iVar7 != local_14)); } return; } int FUN_00431a1c(int param_1,undefined4 param_2,undefined4 param_3,short param_4,short param_5) { if (DAT_00467db0 != 1) { if (1 < (int)DAT_00467db0 - 2U) goto LAB_00431a93; if ((&DAT_00467dd0)[DAT_00467e00 * 0xe] == -1) { param_1 = (int)param_5 * (int)(short)(&DAT_00467dce)[DAT_00467e00 * 0xe] + (int)param_4; goto LAB_00431a93; } } param_1 = (((short)(&DAT_00467dcc)[DAT_00467e00 * 0xe] + -1) - (int)param_5) * (int)(short)(&DAT_00467dce)[DAT_00467e00 * 0xe] + (int)param_4; LAB_00431a93: return (&DAT_00467dd2)[DAT_00467e00 * 7] + param_1; } void FUN_00431ab0(void) { undefined2 in_stack_00000004; undefined2 in_stack_00000008; undefined2 in_stack_0000000c; short in_stack_00000010; ClampColorIndex_(in_stack_00000010); FUN_00411838(); FUN_00430abc(in_stack_00000004,in_stack_00000008,in_stack_0000000c,1); return; } void FUN_00431ae8(void) { undefined2 in_stack_00000004; undefined2 in_stack_00000008; undefined2 in_stack_0000000c; short in_stack_00000010; ClampColorIndex_(in_stack_00000010); FUN_0041187c(); FUN_00430abc(in_stack_00000004,in_stack_00000008,1,in_stack_0000000c); return; } void FUN_00431b20(void) { undefined2 in_stack_00000004; undefined2 in_stack_00000008; undefined2 in_stack_0000000c; undefined2 in_stack_00000010; short in_stack_00000014; ClampColorIndex_(in_stack_00000014); FUN_00411991(); FUN_00430abc(in_stack_00000004,in_stack_00000008,in_stack_0000000c,in_stack_00000010); return; } void FUN_00431b60(void) { FUN_00431ab0(); FUN_00431ab0(); FUN_00431ae8(); FUN_00431ae8(); return; } void FUN_00431bc4(void) { return; } short FUN_00431bcc(void) { byte bVar1; bool bVar2; short sVar3; byte *pbVar4; byte *pbVar5; short sVar6; short sVar7; short in_stack_00000004; short in_stack_00000008; int in_stack_0000000c; sVar7 = *(short *)(in_stack_0000000c + 2); pbVar4 = (byte *)(in_stack_0000000c + 6); sVar6 = 0; if ((in_stack_00000004 < sVar7) && (in_stack_00000008 < *(short *)(in_stack_0000000c + 4))) { sVar3 = sVar7; if (in_stack_00000008 != 0) { do { bVar1 = *pbVar4; pbVar5 = pbVar4 + 1; if (bVar1 == 0) { pbVar4 = pbVar4 + 2; sVar3 = sVar3 - (ushort)*pbVar5; if (sVar3 == 0) { sVar6 = sVar6 + 1; sVar3 = sVar7; } } else if (bVar1 == 0xff) { sVar3 = sVar3 - (ushort)pbVar4[2]; pbVar4 = pbVar4 + 3; if (sVar3 == 0) { sVar6 = sVar6 + 1; sVar3 = sVar7; } } else { sVar3 = sVar3 - (ushort)bVar1; pbVar4 = pbVar5 + bVar1; if (sVar3 == 0) { sVar6 = sVar6 + 1; sVar3 = sVar7; } } } while (sVar6 != in_stack_00000008); } sVar7 = 0; bVar2 = false; while (!bVar2) { bVar1 = *pbVar4; pbVar5 = pbVar4 + 1; if (bVar1 == 0) { pbVar4 = pbVar4 + 2; in_stack_00000004 = in_stack_00000004 - (ushort)*pbVar5; if (in_stack_00000004 < 0) { bVar2 = true; } } else if (bVar1 == 0xff) { pbVar5 = pbVar4 + 2; pbVar4 = pbVar4 + 3; in_stack_00000004 = in_stack_00000004 - (ushort)*pbVar5; if (in_stack_00000004 < 0) { bVar2 = true; sVar7 = 1; } } else { in_stack_00000004 = in_stack_00000004 - (ushort)bVar1; pbVar4 = pbVar5 + bVar1; if (in_stack_00000004 < 0) { bVar2 = true; sVar7 = 1; } } } } else { sVar7 = 0; } return sVar7; } undefined4 FUN_00431cb8(void) { undefined4 uVar1; short *in_stack_00000004; short *in_stack_00000008; if (((((short)(*in_stack_00000008 + in_stack_00000008[2] + -1) < *in_stack_00000004) || ((short)(*in_stack_00000004 + in_stack_00000004[2] + -1) < *in_stack_00000008)) || ((short)(in_stack_00000008[1] + in_stack_00000008[3] + -1) < in_stack_00000004[1])) || ((short)(in_stack_00000004[1] + in_stack_00000004[3] + -1) < in_stack_00000008[1])) { uVar1 = 0; } else { uVar1 = CONCAT22((short)((uint)in_stack_00000004 >> 0x10),1); } return uVar1; } void FUN_00431d24(void) { short in_stack_00000004; short in_stack_00000008; short in_stack_0000000c; short in_stack_00000010; if (-1 < in_stack_00000004) { DAT_00467dba = in_stack_00000004; } if (-1 < in_stack_00000008) { DAT_00467dbe = in_stack_00000008; } if ((-1 < in_stack_0000000c) && (DAT_00467dbc = in_stack_0000000c + -1 + in_stack_00000004, 0x1ff < DAT_00467dbc)) { DAT_00467dbc = 0x1ff; } if ((-1 < in_stack_00000010) && (DAT_00467dc0 = in_stack_00000010 + -1 + in_stack_00000008, 0x17f < DAT_00467dc0)) { DAT_00467dc0 = 0x17f; } return; } ushort __stdcall ClampColorIndex_(short color) { ushort result; if (_ColorMode == 16) { result = color >> 8; } else { result = color & 0xff; } return result; } void FUN_00431dc9(void) { undefined2 *in_stack_00000004; undefined2 *in_stack_00000008; *in_stack_00000004 = 0x200; *in_stack_00000008 = 0x180; return; } int FUN_00431dde(void) { short in_stack_00000004; short in_stack_00000008; return (int)in_stack_00000004 * (int)in_stack_00000008 + 8; } void FUN_00431df5(void) { undefined4 in_stack_00000004; DAT_00461cb8 = in_stack_00000004; return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_00431ef2(void) { int iVar1; undefined4 uVar2; undefined4 extraout_EDX; undefined4 uVar3; FUN_0044bd20(); uVar3 = 0; SetCurrentColor(0); iVar1 = (int)DAT_0046a8b0 >> 1; if (iVar1 < 0) { iVar1 = iVar1 + (uint)(((int)DAT_0046a8b0 & 1U) != 0); } uVar2 = CONCAT22((short)((uint)iVar1 >> 0x10),(short)iVar1 + _DAT_0046a8ac); FUN_0044ced4(uVar2,extraout_EDX,uVar3,0xffffffff,DAT_0046845e,uVar2,DAT_0046a8ae + 4,0xffffffff); FUN_00410408(); return; } // WARNING: Removing unreachable block (ram,0x00432034) // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_00431f6c(void) { int iVar1; DlistNode *pDVar2; ClickHandler *onClick; short sVar3; undefined4 unaff_EBX; short sVar4; undefined4 unaff_EDI; DlistNode *in_stack_00000004; FUN_00431ef2(); iVar1 = DlistPrev(in_stack_00000004); if (iVar1 == 0) { DAT_00468450 = 0; } else { DAT_00468450 = DAT_004624f8; } pDVar2 = DlistNext(in_stack_00000004); if (pDVar2 == (DlistNode *)0x0) { DAT_00468454 = DAT_004624fc; } else { DAT_00468454 = DAT_004624f4; } if (iVar1 != 0) { sVar3 = DAT_0046a8a4 + 0x14; unaff_EBX = CONCAT22((short)((uint)unaff_EBX >> 0x10),sVar3); sVar4 = DAT_0046a8a6 + _DAT_0046a8aa + 10; unaff_EDI = CONCAT22((short)((uint)unaff_EDI >> 0x10),sVar4); FUN_004129d4(DAT_00468450,0); FUN_0041395c(DAT_00468450,unaff_EBX,unaff_EDI,0x66); FUN_00412e18(DAT_00468450); PickapuzzleHitTest_(sVar3,sVar4,0x7a,0x1d,10,(ClickHandler *)&LAB_00431e2c); FUN_00417206(); } sVar3 = DAT_0046a8a4 + DAT_0046a8a8 + -0x90; sVar4 = DAT_0046a8a6 + _DAT_0046a8aa + 10; FUN_0041395c(DAT_00468454,CONCAT22((short)((uint)unaff_EBX >> 0x10),sVar3), CONCAT22((short)((uint)unaff_EDI >> 0x10),sVar4),0x66); FUN_004129d4(DAT_00468454,1); _DAT_00468458 = DAT_00468454; FUN_00412e18(DAT_00468454); if (pDVar2 == (DlistNode *)0x0) { onClick = (ClickHandler *)&LAB_00431eb0; } else { onClick = (ClickHandler *)&LAB_00431e6e; } PickapuzzleHitTest_(sVar3,sVar4,0x7a,0x1d,10,onClick); FUN_00417206(); for (sVar3 = 0; sVar3 < *(short *)&in_stack_00000004[1].next; sVar3 = sVar3 + 1) { FUN_0041395c(*(undefined4 *)((int)&in_stack_00000004[1].next + sVar3 * 4 + 2), CONCAT22(sVar3 >> 0xf, *(short *)((int)&in_stack_00000004[2].next + sVar3 * 2 + 2) + 0x1e), CONCAT22(sVar3 >> 0xf, *(short *)((int)&in_stack_00000004[2].prev + sVar3 * 2 + 2) + DAT_0046a8a6 ),0x65); FUN_00412e18(*(undefined4 *)((int)&in_stack_00000004[1].next + sVar3 * 4 + 2)); } return; } void FUN_00432128(void) { short sVar1; int in_stack_00000004; FUN_00417255(); for (sVar1 = 0; sVar1 < *(short *)(in_stack_00000004 + 8); sVar1 = sVar1 + 1) { BigThing6Eh::processNodes_(*(undefined4 *)(in_stack_00000004 + 10 + sVar1 * 4)); } BigThing6Eh::processNodes_(DAT_004624f4); BigThing6Eh::processNodes_(DAT_004624fc); BigThing6Eh::processNodes_(DAT_004624f8); return; } // WARNING: Heritage AFTER dead removal. Example location: EAX : 0x0043229e // WARNING: Globals starting with '_' overlap smaller symbols at the same address // WARNING: Restarted to delay deadcode elimination for space: register void FUN_004321b3(void) { uint uVar1; int iVar2; void **ppvVar3; DlistNode *pDVar4; int extraout_EDX; undefined2 extraout_var; short sVar5; void **ppvVar6; undefined4 uVar7; short local_a; void *local_8; FUN_00413838(); FUN_00416f4d(); _DAT_00468478 = FUN_0044ca04(); FUN_0043be66(); FUN_004102ee(); FUN_004476a9(); FUN_0043b9f5(); _DAT_004601ac = 1; FUN_0041704f(); PickapuzzleHitTest_(0x1e,0x1b,0x1c4,0x136,5,(ClickHandler *)0x0); FUN_0041029e(); local_8 = Resource::Load(DAT_0046844c + 9000,&_HELP0); uVar1 = FUN_0044fcf7(); _DAT_0046845c = (short)uVar1; DAT_0046845e = local_8; iVar2 = FUN_0044ffac(); local_8 = (void *)((int)local_8 + iVar2 + 1); DAT_00468462 = DlistNew(); for (local_a = 0; local_a < _DAT_0046845c; local_a = local_a + 1) { pDVar4 = PoolAlloc(0x1e); ppvVar3 = &local_8; uVar1 = FUN_0044fcf7(); *(short *)&pDVar4[1].next = (short)uVar1; iVar2 = extraout_EDX; for (sVar5 = 0; sVar5 < *(short *)&pDVar4[1].next; sVar5 = sVar5 + 1) { ppvVar6 = &local_8; uVar1 = FUN_0044fcf7(uVar1,iVar2,ppvVar3); *(short *)((int)&pDVar4[2].next + sVar5 * 2 + 2) = (short)uVar1; ppvVar3 = &local_8; uVar1 = FUN_0044fcf7(uVar1,(int)sVar5,ppvVar6); *(short *)((int)&pDVar4[2].prev + sVar5 * 2 + 2) = (short)uVar1; ppvVar3 = (void **)FUN_0044fcf7(uVar1,(int)sVar5,ppvVar3); uVar7 = FUN_00412ac4((ushort)ppvVar3); iVar2 = (int)sVar5; *(undefined4 *)((int)&pDVar4[1].next + iVar2 * 4 + 2) = uVar7; uVar1 = (uint)sVar5; *(undefined2 *)(*(int *)((int)&pDVar4[1].next + uVar1 * 4 + 2) + 0x4e) = 3; } DlistInsert(DAT_00468462,pDVar4,-1); } for (pDVar4 = DlistHead(DAT_00468462); pDVar4 != (DlistNode *)0x0; pDVar4 = DlistNext(pDVar4)) { *(void **)((int)&pDVar4[3].next + 2) = local_8; iVar2 = FUN_0044ffac(); local_8 = (void *)((int)local_8 + iVar2 + 1); } DAT_00468470 = DlistHead(DAT_00468462); DAT_004624f4 = FUN_00412ac4(0x232d); DAT_004624f8 = FUN_00412ac4(0x232e); uVar7 = 0x232f; DAT_004624fc = FUN_00412ac4(0x232f); *(undefined2 *)(DAT_004624fc + 0x4e) = 3; *(undefined2 *)(DAT_004624f8 + 0x4e) = 3; iVar2 = DAT_004624f4; *(undefined2 *)(DAT_004624f4 + 0x4e) = 3; FUN_00431f6c(iVar2,CONCAT22(extraout_var,3),uVar7); _DAT_0046846c = 0; return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_004323c3(void) { Dlist *pDVar1; uint uVar2; DlistNode *node; Dlist *pDVar3; undefined4 extraout_EDX; undefined4 extraout_EDX_00; undefined4 extraout_EDX_01; undefined4 extraout_EDX_02; undefined4 extraout_EDX_03; undefined4 uVar4; short sVar5; short sVar6; undefined *puVar7; uint uVar8; _DAT_004601ac = 0; puVar7 = &DAT_0046a89c; uVar2 = FUN_0041408d(); uVar8 = DAT_004624f4; DAT_004624f4 = FUN_00412d0c(uVar2,extraout_EDX,(uint)puVar7,DAT_004624f4); uVar2 = DAT_004624f8; DAT_004624f8 = FUN_00412d0c(DAT_004624f4,extraout_EDX_00,uVar8,DAT_004624f8); DAT_004624fc = FUN_00412d0c(DAT_004624f8,extraout_EDX_01,uVar2,DAT_004624fc); for (sVar6 = 0; sVar6 < _DAT_0046845c; sVar6 = sVar6 + 1) { pDVar3 = DAT_00468462; node = DlistHead(DAT_00468462); uVar4 = extraout_EDX_02; for (sVar5 = 0; sVar5 < *(short *)&node[1].next; sVar5 = sVar5 + 1) { pDVar1 = *(Dlist **)((int)&node[1].next + sVar5 * 4 + 2); FUN_00412d0c((int)sVar5,uVar4,(uint)pDVar3,(uint)pDVar1); pDVar3 = pDVar1; uVar4 = extraout_EDX_03; } DlistRemove(DAT_00468462,node); PoolFree(node); } PoolFreeIfNotNull(DAT_00468462); FUN_00440695(DAT_0046844c + 9000,&_HELP1); FUN_0041030c(); FUN_00413868(); FUN_00416ffd(); FUN_0043bfee(0xff,0xffff,0); FUN_0043ba1d(); FUN_00447634(); FUN_0044c95d(); return; } void FUN_004324b1(void) { short sVar1; undefined4 extraout_EDX; undefined4 extraout_EDX_00; DlistNode *pDVar2; if (DAT_00462500 != 0) { sVar1 = FUN_00413ed0(DAT_00468450); if (sVar1 == 4) { return; } sVar1 = FUN_00413ed0(DAT_00468454); if (sVar1 == 4) { return; } DAT_00462502 = DAT_00462500; DAT_00462500 = 0; } if (DAT_00462502 == 1) { FUN_00432128(); pDVar2 = DAT_00468470; DAT_00468470 = DlistNext(DAT_00468470); FUN_00431f6c(DAT_00468470,extraout_EDX,pDVar2,DAT_00468470); } else if (DAT_00462502 == 2) { FUN_00432128(); pDVar2 = DAT_00468470; DAT_00468470 = (DlistNode *)DlistPrev(DAT_00468470); FUN_00431f6c(DAT_00468470,extraout_EDX_00,pDVar2,DAT_00468470); } else if ((DAT_00462502 != 0xd) && (DAT_00462502 == 0x1b)) { FUN_00432128(); FUN_0044b3e5(); } DAT_00462502 = 0; return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void Puzzles::SetParametersForJigsaw__(void) { uint uVar1; uint extraout_ECX; undefined4 extraout_EDX; undefined4 extraout_EDX_00; undefined4 extraout_EDX_01; undefined2 *puVar2; undefined1 *puVar3; _DAT_004685e0 = 0; DAT_00469742 = 0x1f73; DAT_00469744 = 0x1f74; DAT_00469746 = 0x1f5b; DAT_00469748 = 0x1fa7; DAT_0046974a = 0x1f5c; DAT_0046974c = 0x4a77; DAT_0046974e = 0xffff; puVar2 = &DAT_00469742; uVar1 = FUN_0043ff91(&DAT_00469742); FUN_00440113(uVar1,extraout_EDX,(uint)puVar2); puVar3 = &LAB_00433f92; uVar1 = FUN_0044c950(); FUN_00431024(uVar1,extraout_EDX_00,(uint)puVar3,11000); DAT_004685d0 = FUN_00412ac4(11000); uVar1 = FUN_00413cf4(); FUN_00412d0c(uVar1,extraout_EDX_01,extraout_ECX,DAT_004685d0); SetParametersForJigsaw_(); FUN_0043fef9(DAT_0046251e); FUN_00432aea(); FUN_00432f2f(); FUN_0041029e(); DAT_004685d8 = FUN_00412ac4(0x3aa1); FUN_0041395c(DAT_004685d8,0x18e,0x143,10); DAT_004685c8 = FUN_00412ac4(0x2b75); DAT_004685dc = FUN_00412ac4(0x3a9d); FUN_0041395c(DAT_004685dc,0x2a,0x19,1); DAT_004685c4 = FUN_00412ac4(0x2b74); DAT_004685cc = FUN_0043b58e(); *(undefined2 *)(DAT_004685cc + 0x12) = 0; FUN_00433ff3(); DAT_00469544 = &LAB_00434064; FUN_0043139c(); return; } void FUN_004326e8(void) { char *format; short in_stack_00000004; short in_stack_00000008; DAT_004685be = 15000; Nfnt::LoadWithCache(15000); FUN_00430de8(10,200,0x96,0x14); format = GetWinapiStringAlloc(0x4e8e); Sprintf_(&DAT_0046858c,format,(int)in_stack_00000004,(int)in_stack_00000008,(int)DAT_0046847c); TurboFree_(format); Draw::String(DAT_004685be,&DAT_0046858c,10,0xd2,0); FUN_00430abc(10,0xd2,0x96,0x14); Nfnt::Unload(DAT_004685be); return; } void FUN_00432947(uint param_1,undefined4 param_2,uint param_3) { uint uVar1; uint uVar2; undefined4 extraout_EDX; undefined4 extraout_EDX_00; undefined4 extraout_EDX_01; undefined4 extraout_EDX_02; short sVar3; uint uVar4; for (sVar3 = 0; sVar3 < DAT_00468480; sVar3 = sVar3 + 1) { uVar4 = *(uint *)((int)&DAT_0046848c + sVar3 * 0x16); param_1 = FUN_00412d0c(sVar3 * 0xb,param_2,param_3,uVar4); param_3 = uVar4; param_2 = extraout_EDX; } uVar4 = DAT_004685d4; uVar1 = FUN_00412d0c(param_1,param_2,param_3,DAT_004685d4); uVar2 = DAT_004685dc; uVar1 = FUN_00412d0c(uVar1,extraout_EDX_00,uVar4,DAT_004685dc); uVar4 = DAT_004685d8; uVar2 = FUN_00412d0c(uVar1,extraout_EDX_01,uVar2,DAT_004685d8); FUN_00412d0c(uVar2,extraout_EDX_02,uVar4,DAT_004685c8); return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_0043299b(void) { void *pvVar1; short sVar2; void *apvStackY_20400 [32762]; void *local_400 [5]; undefined1 local_3ec [1000]; FUN_004465a5(0x1f5c,5,0); FUN_00412dc8(DAT_004685dc); FUN_00412784(); BigThing6Eh::processNodes_(DAT_004685dc); FUN_00412784(); Memset(local_3ec,0,1000); local_400[0] = Resource::Load(DAT_004697a8,&_TEXT18); FUN_0044ffac(); FUN_0045008c(); for (sVar2 = 1; sVar2 < _DAT_0046977c; sVar2 = sVar2 + 1) { pvVar1 = Resource::Load((&DAT_004697a8)[sVar2],&_TEXT19); local_400[sVar2] = pvVar1; FUN_0044ffac(); FUN_0044ffc8(); } FUN_0043f27a(); for (sVar2 = 0; sVar2 < _DAT_0046977c; sVar2 = sVar2 + 1) { FUN_00440695((&DAT_004697a8)[sVar2],&_TEXT20); } return; } void FUN_00432aea(void) { int iVar1; short sVar2; FUN_00416f98(); PickapuzzleHitTest_(0x29,0x19,0x3a,0x1c,5,FUN_0043299b); PickapuzzleHitTest_(0x18e,0x144,100,0x32,5,(ClickHandler *)&LAB_00432906); PickapuzzleHitTest_(0,0,0x200,0x180,0,(ClickHandler *)&LAB_00432c30); DAT_00468588 = PickapuzzleHitTest_(10,0x9e,0x7f,0x76,5,FUN_00432d2e); *(undefined4 *)(DAT_00468588 + 0x1e) = 0; for (sVar2 = 0; sVar2 < DAT_00468480; sVar2 = sVar2 + 1) { if ((&DAT_00468496)[sVar2 * 0xb] == 1) { iVar1 = PickapuzzleHitTest_((&DAT_00468482)[sVar2 * 0xb],(&DAT_00468484)[sVar2 * 0xb], (&DAT_00468486)[sVar2 * 0xb],(&DAT_00468488)[sVar2 * 0xb], (&DAT_0046848a)[sVar2 * 0xb],FUN_00432d2e); (&DAT_00468560)[sVar2] = iVar1; *(int *)((&DAT_00468560)[sVar2] + 0x1e) = sVar2 + 1000; } } if (DAT_0046251e != 0) { PickapuzzleHitTest_(10,0x140,0x14e,0x3c,0x19,(ClickHandler *)&LAB_00432c1d); } return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void Puzzles::SetParametersForJigsaw_(void) { short sVar1; sVar1 = 0; do { (&DAT_00468496)[sVar1 * 0xb] = 0; (&DAT_00468490)[sVar1 * 0xb] = 0; (&DAT_00468492)[sVar1 * 0xb] = 0; (&DAT_0046848a)[sVar1 * 0xb] = 0; sVar1 = sVar1 + 1; } while (sVar1 < 10); DAT_0046251e = 0; _DAT_00462520 = 0; DAT_00462522 = 0; DAT_0046847c = 0xb; SetParametersForJigsaw(currentPuzzle); DAT_0046977e = 11000; DAT_00469780 = 11000; DAT_00469770 = Resource::Load(11000,&_TEXT21); return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address int FUN_00432d2e(void) { int iVar1; int iVar2; undefined4 extraout_ECX; undefined4 extraout_EDX; int in_stack_00000004; if (DAT_00462522 == 0) { iVar1 = *(int *)(in_stack_00000004 + 0x1e); if (iVar1 == 0) { iVar1 = FUN_00432e65(); return iVar1; } iVar2 = iVar1 + -0x3f2; if (iVar1 - 1000U < 10) { FUN_0043404e(); FUN_004465a5(0x1f73,5,0); BigThing6Eh::processNodes_(DAT_004685d4); FUN_00433e79(); DAT_0046847c = *(short *)(in_stack_00000004 + 0x1e) + -1000; BigThing6Eh::processNodes_(*(undefined4 *)((int)&DAT_0046848c + DAT_0046847c * 0x16)); DAT_00462522 = 3; FUN_00412784(); iVar1 = FUN_0043b58e(); FUN_0043b4e2(iVar1,extraout_EDX,extraout_ECX,iVar1); iVar1 = FUN_0043b318(); return iVar1; } } else { iVar1 = DAT_00462522 + -3; if (iVar1 != 0) { return iVar1; } if (9 < *(int *)(in_stack_00000004 + 0x1e) - 1000U) { return *(int *)(in_stack_00000004 + 0x1e) + -0x3f2; } iVar2 = FUN_00433a0e(); if (DAT_0046251e == 0) { iVar2 = FUN_00433cca(); DAT_0046251e = (short)iVar2; if ((DAT_0046251e != 0) && (_DAT_00462520 == 0)) { _DAT_00462520 = 1; FUN_0043fdaa(); FUN_0043fd88(); iVar2 = FUN_00432aea(); } } } return iVar2; } void FUN_00432e65(void) { int iVar1; undefined4 extraout_ECX; undefined4 extraout_EDX; if ((DAT_0046847c == 0xb) && (0 < DAT_0046251c)) { FUN_0043404e(); FUN_004340b1(); DAT_0046251c = DAT_0046251c + -1; do { if (DAT_00468480 == 0) { DAT_0046847c = 0; } else { iVar1 = Random(); DAT_0046847c = (short)(iVar1 % (int)DAT_00468480); } } while ((&DAT_00468496)[DAT_0046847c * 0xb] == 1); DAT_00462522 = 3; FUN_004340fd(); FUN_00432f2f(); iVar1 = FUN_0043b58e(); FUN_0043b4e2(iVar1,extraout_EDX,extraout_ECX,iVar1); FUN_0043b318(); FUN_004465a5(0x1f73,5,0); } return; } void FUN_00432f2f(void) { char local_10 [12]; Nfnt::LoadWithCache(15000); FUN_00430de8(0x3c,0xf5,0x1a,0x1a); if (0 < DAT_0046251c) { Sprintf_(local_10,&DAT_00462549,(int)DAT_0046251c); Draw::String(15000,local_10,0x41,0x104,0); } FUN_00430abc(0x3c,0xf5,0x1a,0x1a); Nfnt::Unload(15000); return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void __cdecl Puzzles::SetParametersForJigsaw(PuzzleNumberOneBased puzzle) { ushort uVar1; undefined4 uVar2; short sVar3; short unaff_DI; undefined2 auStackY_10040 [10]; undefined2 auStackY_1002c [10]; undefined2 auStackY_10018 [32738]; undefined2 local_40 [10]; undefined2 local_2c [10]; undefined2 local_18 [10]; if (20 < puzzle) { puzzle = 1; } switch(puzzle) { case 1: unaff_DI = 0x2b03; DAT_00468480 = 2; local_2c[0] = 0; local_2c[1] = 4; local_40[0] = 0; local_40[1] = 0x2c; local_18[0] = 1; local_18[1] = 2; break; case 2: unaff_DI = 0x2b3f; DAT_00468480 = 4; local_2c[0] = 0x2f; local_2c[1] = 0; local_2c[2] = 0xb5; local_2c[3] = 0xf; local_40[0] = 2; local_40[1] = 1; local_40[2] = 0; local_40[3] = 0x59; local_18[0] = 2; local_18[1] = 3; local_18[2] = 3; local_18[3] = 1; break; case 3: unaff_DI = 0x2b34; DAT_00468480 = 3; local_2c[0] = 0x10; local_40[0] = 0xb; local_18[0] = 1; local_2c[1] = 0; local_40[1] = 0; local_18[1] = 2; local_2c[2] = 0x10; local_40[2] = 0xc1; local_18[2] = 3; break; case 4: unaff_DI = 0x2b4a; DAT_00468480 = 4; local_2c[0] = 7; local_2c[1] = 0; local_2c[2] = 0x45; local_2c[3] = 0xb9; local_40[0] = 0x45; local_40[1] = 0x16; local_40[2] = 0x49; local_40[3] = 0; local_18[0] = 3; local_18[1] = 2; local_18[2] = 1; local_18[3] = 3; break; case 5: unaff_DI = 0x2b2e; DAT_00468480 = 4; local_2c[0] = 0x4e; local_2c[1] = 0x41; local_2c[2] = 0; local_2c[3] = 0x5c; local_40[0] = 0x52; local_40[1] = 0x8e; local_40[2] = 0; local_40[3] = 0x47; local_18[0] = 3; local_18[1] = 3; local_18[2] = 1; local_18[3] = 2; break; case 6: unaff_DI = 0x2b57; DAT_00468480 = 5; local_2c[0] = 0x51; local_2c[1] = 0; local_2c[2] = 0x31; local_2c[3] = 0x30; local_2c[4] = 0x55; local_40[0] = 0x18; local_40[1] = 0x24; local_40[2] = 0x20; local_40[3] = 1; local_40[4] = 0; local_18[0] = 5; local_18[1] = 1; local_18[2] = 2; local_18[3] = 3; local_18[4] = 1; break; case 7: unaff_DI = 0x2b1b; DAT_00468480 = 3; local_2c[0] = 0; local_2c[1] = 0x55; local_2c[2] = 0x3a; local_40[0] = 0x41; local_40[1] = 0xd; local_40[2] = 0; local_18[0] = 1; local_18[1] = 3; local_18[2] = 2; break; case 8: unaff_DI = 0x2b69; DAT_00468480 = 3; local_2c[0] = 0; local_2c[1] = 0xd; local_2c[2] = 0x2e; local_40[0] = 0; local_40[1] = 0x1e; local_40[2] = 0x17; local_18[0] = 3; local_18[1] = 2; local_18[2] = 1; break; case 9: unaff_DI = 0x2b63; DAT_00468480 = 4; local_2c[0] = 0x96; local_2c[1] = 0; local_2c[2] = 0x49; local_2c[3] = 0x5e; local_40[0] = 0x3a; local_40[1] = 0; local_40[2] = 0x15; local_40[3] = 0x40; local_18[0] = 1; local_18[1] = 2; local_18[2] = 3; local_18[3] = 4; break; case 10: unaff_DI = 0x2b0e; DAT_00468480 = 4; local_2c[0] = 0; local_2c[1] = 0; local_2c[2] = 0x3d; local_2c[3] = 0xb0; local_40[0] = 0x7b; local_40[1] = 0x86; local_40[2] = 0; local_40[3] = 0xa8; local_18[0] = 3; local_18[1] = 1; local_18[2] = 4; local_18[3] = 2; break; case 0xb: unaff_DI = 0x2b16; DAT_00468480 = 3; local_2c[0] = 0; local_2c[1] = 0xf9; local_2c[2] = 0xc; local_40[0] = 0; local_40[1] = 0xe; local_40[2] = 0x53; local_18[0] = 2; local_18[1] = 1; local_18[2] = 3; break; case 0xc: unaff_DI = 0x2b45; DAT_00468480 = 3; local_2c[0] = 0x8c; local_2c[1] = 0; local_2c[2] = 1; local_40[0] = 0x49; local_40[1] = 0; local_40[2] = 0x30; local_18[0] = 3; local_18[1] = 1; local_18[2] = 2; break; case 0xd: unaff_DI = 0x2afc; DAT_00468480 = 5; local_2c[0] = 0; local_2c[1] = 4; local_2c[2] = 0x29; local_2c[3] = 0x85; local_2c[4] = 0x12; local_40[0] = 0x35; local_40[1] = 0x19; local_40[2] = 0x38; local_40[3] = 0; local_40[4] = 0xe; local_18[0] = 3; local_18[1] = 4; local_18[2] = 2; local_18[3] = 5; local_18[4] = 6; break; case 0xe: unaff_DI = 0x2b39; DAT_00468480 = 4; local_2c[0] = 0; local_2c[1] = 0x14; local_2c[2] = 0x14; local_2c[3] = 0x15; local_40[0] = 0x8c; local_40[1] = 0; local_40[2] = 0x49; local_40[3] = 0xd; local_18[0] = 3; local_18[1] = 2; local_18[2] = 2; local_18[3] = 1; break; case 0xf: unaff_DI = 0x2b20; DAT_00468480 = 5; local_2c[0] = 0xed; local_2c[1] = 0xef; local_2c[2] = 0; local_2c[3] = 0; local_2c[4] = 0x15; local_40[0] = 0x91; local_40[1] = 0x71; local_40[2] = 0; local_40[3] = 6; local_40[4] = 0x3f; local_18[0] = 5; local_18[1] = 3; local_18[2] = 1; local_18[3] = 1; local_18[4] = 4; break; case 0x10: unaff_DI = 0x2b50; DAT_00468480 = 5; local_2c[0] = 0xde; local_2c[1] = 0xb; local_2c[2] = 0; local_2c[3] = 0xce; local_2c[4] = 0x5a; local_40[0] = 0x34; local_40[1] = 0x49; local_40[2] = 0x5b; local_40[3] = 0xa1; local_40[4] = 0; local_18[0] = 1; local_18[1] = 2; local_18[2] = 3; local_18[3] = 4; local_18[4] = 1; break; case 0x11: unaff_DI = 0x2b07; local_2c[0] = 0x51; local_2c[1] = 0x9b; local_2c[2] = 0xe8; local_2c[3] = 4; local_2c[4] = 0; local_40[0] = 0x14; local_40[1] = 0; local_40[2] = 0x18; local_40[3] = 0x1a; local_40[4] = 0x7d; local_18[0] = 2; local_18[1] = 1; local_18[2] = 3; local_18[3] = 4; local_18[4] = 1; DAT_00468480 = 5; break; case 0x12: unaff_DI = 0x2b5e; DAT_00468480 = 3; local_2c[0] = 0x103; local_2c[1] = 0; local_2c[2] = 7; local_40[0] = 0x19; local_40[1] = 0; local_40[2] = 0x21; local_18[0] = 3; local_18[1] = 2; local_18[2] = 1; break; case 0x13: unaff_DI = 0x2b6e; DAT_00468480 = 4; local_2c[0] = 10; local_2c[1] = 0; local_2c[2] = 4; local_2c[3] = 0x18; local_40[0] = 0x19; local_40[1] = 6; local_40[2] = 0x35; local_40[3] = 0; local_18[0] = 1; local_18[1] = 3; local_18[2] = 2; local_18[3] = 3; break; case 0x14: unaff_DI = 0x2b27; DAT_00468480 = 5; local_2c[0] = 0; local_2c[1] = 0x58; local_2c[2] = 0x58; local_2c[3] = 0x58; local_2c[4] = 0x42; local_40[0] = 0x5b; local_40[1] = 0x5c; local_40[2] = 0x3a; local_40[3] = 0x11; local_40[4] = 0; local_18[0] = 2; local_18[1] = 2; local_18[2] = 3; local_18[3] = 4; local_18[4] = 1; } _DAT_0046977a = 5; _DAT_0046977c = 3; DAT_004697a8 = 0x2b0d; DAT_004697aa = currentPuzzle + 11000; _DAT_004697ac = 0x2b0e; DAT_0046978a = 0x2b0d; DAT_0046978c = currentPuzzle + 11000; DAT_0046978e = 0x2b0e; DAT_00469790 = 0x2b0f; DAT_00469792 = 0x2b10; DAT_00469794 = 0xffff; for (sVar3 = 0; sVar3 < DAT_00468480; sVar3 = sVar3 + 1) { (&DAT_00468490)[sVar3 * 0xb] = local_2c[sVar3]; (&DAT_00468492)[sVar3 * 0xb] = local_40[sVar3]; (&DAT_0046848a)[sVar3 * 0xb] = local_18[sVar3]; uVar2 = FUN_00412ac4(sVar3 + unaff_DI); *(undefined4 *)((int)&DAT_0046848c + sVar3 * 0x16) = uVar2; uVar1 = FUN_00413774(*(undefined4 *)((int)&DAT_0046848c + sVar3 * 0x16),0); (&DAT_00468486)[sVar3 * 0xb] = uVar1; uVar1 = FUN_00413794(*(undefined4 *)((int)&DAT_0046848c + sVar3 * 0x16),0); (&DAT_00468488)[sVar3 * 0xb] = uVar1; (&DAT_00468494)[sVar3 * 0xb] = sVar3; } DAT_0046251c = DAT_00468480; DAT_004685d4 = FUN_00412ac4(unaff_DI + DAT_00468480 + 1); return; } void FUN_00433840(void) { short sVar1; short sVar2; short sVar3; short in_stack_00000004; short in_stack_00000008; short local_6; for (sVar3 = 0; sVar3 < DAT_00468480; sVar3 = sVar3 + 1) { if ((&DAT_00468494)[sVar3 * 0xb] == DAT_0046847e) { sVar1 = (&DAT_00468490)[sVar3 * 0xb] + in_stack_00000004; sVar2 = (&DAT_00468492)[sVar3 * 0xb] + in_stack_00000008; if (sVar1 < 0x95) { in_stack_00000004 = in_stack_00000004 + (0x95 - sVar1); } else if (499 < (short)((&DAT_00468486)[sVar3 * 0xb] + sVar1)) { in_stack_00000004 = in_stack_00000004 - ((&DAT_00468486)[sVar3 * 0xb] + sVar1 + -499); } if (sVar2 < 0x1a) { in_stack_00000008 = in_stack_00000008 + (0x1a - sVar2); } else if (299 < (short)((&DAT_00468488)[sVar3 * 0xb] + sVar2)) { in_stack_00000008 = in_stack_00000008 - ((&DAT_00468488)[sVar3 * 0xb] + sVar2 + -299); } } } for (sVar3 = 0; sVar3 < DAT_00468480; sVar3 = sVar3 + 1) { if ((&DAT_00468494)[sVar3 * 0xb] == DAT_0046847e) { sVar1 = (short)((((int)in_stack_00000004 + (int)(short)(&DAT_00468490)[sVar3 * 0xb]) - (int)(short)(&DAT_00468482)[sVar3 * 0xb]) / 5); sVar2 = (short)((((int)in_stack_00000008 + (int)(short)(&DAT_00468492)[sVar3 * 0xb]) - (int)(short)(&DAT_00468484)[sVar3 * 0xb]) / 5); if ((sVar1 != 0) || (sVar2 != 0)) { local_6 = 0; do { (&DAT_00468482)[sVar3 * 0xb] = (&DAT_00468482)[sVar3 * 0xb] + sVar1; (&DAT_00468484)[sVar3 * 0xb] = (&DAT_00468484)[sVar3 * 0xb] + sVar2; FUN_00433e79(); FUN_00412784(); local_6 = local_6 + 1; } while (local_6 < 5); } (&DAT_00468482)[sVar3 * 0xb] = (&DAT_00468490)[sVar3 * 0xb] + in_stack_00000004; (&DAT_00468484)[sVar3 * 0xb] = (&DAT_00468492)[sVar3 * 0xb] + in_stack_00000008; FUN_00433e79(); } } return; } void FUN_00433a0e(void) { short sVar1; int iVar2; int iVar3; short sVar4; short sVar5; DAT_00462522 = 0; if (DAT_0046847c != 0xb) { FUN_0043b6bf(); DAT_0046847e = (&DAT_00468494)[DAT_0046847c * 0xb]; if ((((0x94 < (short)(&DAT_00468482)[DAT_0046847c * 0xb]) && (0x19 < (short)(&DAT_00468484)[DAT_0046847c * 0xb])) && ((int)(short)(&DAT_00468482)[DAT_0046847c * 0xb] + (int)(short)(&DAT_00468486)[DAT_0046847c * 0xb] < 500)) && ((int)(short)(&DAT_00468484)[DAT_0046847c * 0xb] + (int)(short)(&DAT_00468488)[DAT_0046847c * 0xb] < 300)) { for (iVar2 = 0; sVar1 = (short)iVar2, sVar1 < DAT_00468480; iVar2 = iVar2 + 1) { if ((sVar1 != DAT_0046847c) && ((&DAT_00468496)[sVar1 * 0xb] == 1)) { sVar5 = (&DAT_00468482)[sVar1 * 0xb] - (&DAT_00468490)[sVar1 * 0xb]; sVar4 = (&DAT_00468484)[sVar1 * 0xb] - (&DAT_00468492)[sVar1 * 0xb]; if ((((int)(short)((&DAT_00468482)[DAT_0046847c * 0xb] - (&DAT_00468490)[DAT_0046847c * 0xb]) < sVar5 + 0x14) && ((sVar5 + -0x14 < (int)(short)((&DAT_00468482)[DAT_0046847c * 0xb] - (&DAT_00468490)[DAT_0046847c * 0xb]) && ((int)(short)((&DAT_00468484)[DAT_0046847c * 0xb] - (&DAT_00468492)[DAT_0046847c * 0xb]) < sVar4 + 0x14)))) && (sVar4 + -0x14 < (int)(short)((&DAT_00468484)[DAT_0046847c * 0xb] - (&DAT_00468492)[DAT_0046847c * 0xb] ))) { (&DAT_00468482)[DAT_0046847c * 0xb] = (&DAT_00468490)[DAT_0046847c * 0xb] + sVar5; sVar5 = (&DAT_00468492)[DAT_0046847c * 0xb]; iVar3 = (int)DAT_0046847c; (&DAT_00468484)[iVar3 * 0xb] = sVar5 + sVar4; FUN_00433dc0(iVar2,sVar5 + sVar4,iVar3 * 0xb,sVar1); break; } } } FUN_00433840(); FUN_004465a5(0x1f74,5,0); FUN_00433e79(); (&DAT_00468496)[DAT_0046847c * 0xb] = 1; FUN_00412e70(); FUN_0041395c(*(undefined4 *)((int)&DAT_0046848c + DAT_0046847c * 0x16), CONCAT22((short)((uint)(DAT_0046847c * 0xb) >> 0x10), (&DAT_00468482)[DAT_0046847c * 0xb]), CONCAT22((short)((uint)(DAT_0046847c * 0xb) >> 0x10), (&DAT_00468484)[DAT_0046847c * 0xb]),(&DAT_0046848a)[DAT_0046847c * 0xb] ); DAT_0046847c = 0xb; FUN_00430de8(0x95,0x1a,0x15e,0x111); FUN_00430abc(0x95,0x1a,0x15e,0x111); FUN_00412784(); FUN_0043405b(); FUN_00432aea(); } } return; } undefined4 FUN_00433cca(void) { undefined4 uVar1; undefined2 extraout_var; undefined2 extraout_var_00; short sVar2; if (DAT_00468496 == 1) { for (sVar2 = 1; sVar2 < DAT_00468480; sVar2 = sVar2 + 1) { if ((&DAT_00468496)[sVar2 * 0xb] != 1) { return 0; } if ((int)(&DAT_00468482)[sVar2 * 0xb] - (int)(&DAT_00468490)[sVar2 * 0xb] != (int)(short)(DAT_00468482 - DAT_00468490)) { return 0; } if ((int)(&DAT_00468484)[sVar2 * 0xb] - (int)(&DAT_00468492)[sVar2 * 0xb] != (int)(short)(DAT_00468484 - DAT_00468492)) { return 0; } } for (sVar2 = 0; sVar2 < DAT_00468480; sVar2 = sVar2 + 1) { BigThing6Eh::processNodes_(*(undefined4 *)((int)&DAT_0046848c + sVar2 * 0x16)); } FUN_004465a5(0x1f5b,5,0); FUN_00412e70(); FUN_0041395c(DAT_004685d4,CONCAT22(extraout_var,DAT_00468482 - DAT_00468490), CONCAT22(extraout_var,DAT_00468484 - DAT_00468492),0x32); uVar1 = CONCAT22(extraout_var_00,1); } else { uVar1 = 0; } return uVar1; } void FUN_00433dc0(undefined4 param_1,short param_2,undefined4 param_3,short param_4) { short sVar1; if ((short)(&DAT_00468494)[DAT_0046847c * 0xb] < (short)(&DAT_00468494)[param_4 * 0xb]) { DAT_0046847e = (&DAT_00468494)[DAT_0046847c * 0xb]; param_2 = (&DAT_00468494)[param_4 * 0xb]; } else if ((short)(&DAT_00468494)[param_4 * 0xb] < (short)(&DAT_00468494)[DAT_0046847c * 0xb]) { param_2 = (&DAT_00468494)[DAT_0046847c * 0xb]; DAT_0046847e = (&DAT_00468494)[param_4 * 0xb]; } for (sVar1 = 0; sVar1 < DAT_00468480; sVar1 = sVar1 + 1) { if (param_2 == (&DAT_00468494)[sVar1 * 0xb]) { (&DAT_00468494)[sVar1 * 0xb] = DAT_0046847e; } } return; } void FUN_00433e79(void) { short sVar1; for (sVar1 = 0; sVar1 < DAT_00468480; sVar1 = sVar1 + 1) { if (((((&DAT_00468496)[sVar1 * 0xb] == 1) && (0x94 < (short)(&DAT_00468482)[sVar1 * 0xb])) && ((int)(short)(&DAT_00468482)[sVar1 * 0xb] + (int)(short)(&DAT_00468486)[sVar1 * 0xb] < 500)) && ((0x19 < (short)(&DAT_00468484)[sVar1 * 0xb] && ((int)(short)(&DAT_00468484)[sVar1 * 0xb] + (int)(short)(&DAT_00468488)[sVar1 * 0xb] < 300)))) { BigThing6Eh::processNodes_(*(undefined4 *)((int)&DAT_0046848c + sVar1 * 0x16)); FUN_0041395c(*(undefined4 *)((int)&DAT_0046848c + sVar1 * 0x16), CONCAT22((short)((uint)(sVar1 * 0xb) >> 0x10),(&DAT_00468482)[sVar1 * 0xb]), CONCAT22((short)((uint)(sVar1 * 0xb) >> 0x10),(&DAT_00468484)[sVar1 * 0xb]), (&DAT_0046848a)[sVar1 * 0xb]); FUN_00412e70(); } } FUN_00430de8(0x95,0x1a,0x15e,0x111); FUN_00430abc(0x95,0x1a,0x15e,0x111); return; } void FUN_00433fe0(void) { FUN_0043fef9(DAT_0046251e); FUN_00432f2f(); return; } void FUN_00433ff3(void) { undefined4 uVar1; undefined2 *puVar2; short in_stack_00000004; undefined4 uVar3; if (in_stack_00000004 == 0) { PoolFree(DAT_004685c0); } uVar3 = 0x10; puVar2 = PoolAlloc(0x10); DAT_004685c0 = puVar2; *puVar2 = 0; puVar2[1] = 5; puVar2[3] = 0x17a; puVar2[2] = 0x1ff; uVar1 = DAT_004685cc; *(undefined4 *)(puVar2 + 6) = DAT_004685cc; puVar2[5] = 0; FUN_0043b9d2(puVar2,uVar1,uVar3,DAT_004685c0,1); return; } void FUN_0043404e(void) { FUN_0043b9d2(); return; } void FUN_0043405b(void) { FUN_00433ff3(); return; } void FUN_004340b1(void) { BigThing6Eh::processNodes_(DAT_004685c8); FUN_00412fe4(DAT_004685c8); FUN_004129d4(DAT_004685c8,1); FUN_0041395c(DAT_004685c8,0xe,0xb7,0x14); FUN_00412dc8(DAT_004685c8); return; } void FUN_004340fd(void) { BigThing6Eh::processNodes_(DAT_004685c8); FUN_00412fe4(DAT_004685c8); FUN_0041395c(DAT_004685c8,0xe,0xb7,0x14); FUN_004129d4(DAT_004685c8,0); FUN_00412dc8(DAT_004685c8); return; } uint FUN_0043414c(void) { uint uVar1; BYTE local_104 [17]; byte local_f3; byte local_e4; byte local_df; byte local_de; byte local_dd; byte local_dc; uVar1 = 0; GetKeyboardState(local_104); if ((local_f3 & 0x80) != 0) { uVar1 = 0x10; } if ((local_df & 0x80) != 0) { uVar1 = uVar1 | 1; } if ((local_dd & 0x80) != 0) { uVar1 = uVar1 | 2; } if ((local_de & 0x80) != 0) { uVar1 = uVar1 | 4; } if ((local_dc & 0x80) != 0) { uVar1 = uVar1 | 8; } if ((local_e4 & 0x80) != 0) { uVar1 = uVar1 | 0x20; } return uVar1; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address uint FUN_004341b9(void) { uint uVar1; int iVar2; uint uVar3; uVar1 = FUN_0043414c(); uVar3 = (uint)(short)uVar1; uVar1 = FUN_0044ca04(); if (uVar3 == 0) { _DAT_00460bea = 0; iVar2 = FUN_0044ca1c(); if ((iVar2 + _DAT_004667ec < uVar1) && (_DAT_00460be8 == 0)) { uVar3 = 0x40; _DAT_00460be8 = 1; } } else { if ((uVar3 & 0xffffffef) == 0) { _DAT_0046a944 = 0; } else { _DAT_0046a944 = 1; if (_DAT_00460bea != 0) { _DAT_0046a944 = 0; } } _DAT_00460be8 = 0; _DAT_004667ec = uVar1; } return uVar3 | (int)(short)_Actors[0]._72_2_ << 0x10; } int FUN_00434250(void) { short sVar1; int iVar2; short *psVar3; int in_stack_00000004; iVar2 = 0; psVar3 = *(short **)(in_stack_00000004 + 4); while (sVar1 = *psVar3, psVar3 = psVar3 + 5, sVar1 != -1000) { iVar2 = iVar2 + 1; } return iVar2; } void FUN_0043426d(void) { undefined2 *puVar1; int iVar2; short in_stack_00000004; short in_stack_00000008; iVar2 = (int)in_stack_00000004; *(undefined2 *)&_Actors[iVar2].field_0x1e = *(undefined2 *)&_Actors[iVar2].field_0x18; *(short *)&_Actors[iVar2].field_0x18 = in_stack_00000008; puVar1 = *(undefined2 **)(_Actors[iVar2].currentDynamics + in_stack_00000008 * 4); *(undefined2 *)&_Actors[iVar2].field_0x22 = 0; *(undefined2 *)&_Actors[iVar2].field_0x12 = *puVar1; *(undefined2 *)&_Actors[iVar2].field_0x4c = puVar1[1]; return; } short * __stdcall GetEseqResource_(ushort param_1,int param_2,short **param_3,short **param_4) { short sVar1; short sVar2; short sVar3; short *psVar4; short *psVar5; psVar4 = Resource::Load(param_1,&_ESEQ); sVar3 = *psVar4; psVar5 = psVar4 + 1; *param_3 = psVar5; psVar5 = psVar5 + sVar3; *param_4 = psVar5; sVar1 = psVar5[sVar3]; psVar5 = psVar5 + sVar3 + 1; sVar3 = 0; if (0 < sVar1) { do { *(short **)(param_2 + sVar3 * 4) = psVar5; sVar2 = psVar5[4]; *(short **)(*(int *)(param_2 + sVar3 * 4) + 4) = psVar5 + 5; psVar5 = psVar5 + 5 + sVar2 * 5; sVar3 = sVar3 + 1; } while (sVar3 < sVar1); } *(undefined4 *)(param_2 + sVar3 * 4) = 0; return psVar4; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_0043435b(void) { _DAT_00468de0 = 1; return; } uint FUN_00434369(void) { short sVar1; ushort uVar2; int iVar3; ushort uVar4; int iVar5; GameState *pGVar6; int iVar7; undefined2 extraout_var; undefined2 *puVar8; uint uVar9; int iVar10; short sVar11; Actor *pAVar12; int iVar13; short *psVar14; short in_stack_00000004; undefined2 local_6; iVar5 = (int)in_stack_00000004; pAVar12 = _Actors + iVar5; local_6 = 0; uVar4 = RoomIsObverse(*(short *)&_Actors[iVar5].field_0x1a); iVar10 = *(int *)(iVar5 * 0xa8 + 0x46865e + (short)uVar4 * 4); iVar3 = *(int *)(iVar5 * 0xa8 + 0x468666 + (short)uVar4 * 4); iVar13 = *(int *)(*(int *)(_Actors[iVar5].currentDynamics + *(short *)&_Actors[iVar5].field_0x18 * 4) + 4); while (sVar11 = *(short *)&_Actors[iVar5].field_0x22, *(short *)(iVar13 + sVar11 * 10) < 0) { sVar1 = *(short *)(iVar13 + 2 + sVar11 * 10); uVar2 = *(ushort *)(iVar13 + 4 + sVar11 * 10); pGVar6 = (GameState *)(*(short *)(iVar13 + sVar11 * 10) + 0x2e); switch(pGVar6) { case (GameState *)0x0: sVar11 = 0x1fe; if (uVar4 == 0) { sVar11 = 0x1fc; } *(short *)&_Actors[iVar5].field_0x14 = sVar11 - *(short *)(iVar10 + sVar1 * 2); *(short *)&_Actors[iVar5].field_0x22 = *(short *)&_Actors[iVar5].field_0x22 + 1; break; case (GameState *)0x3: if (sVar1 == -1) { FUN_0043c382(); } else { FUN_0043c382(); } *(short *)&_Actors[iVar5].field_0x22 = *(short *)&_Actors[iVar5].field_0x22 + 1; break; case (GameState *)0x4: if ((_Actors[iVar5].field_0x48 & 1) == 0) { *(short *)&_Actors[iVar5].field_0x22 = *(short *)&_Actors[iVar5].field_0x22 + 1; } else { *(short *)&_Actors[iVar5].field_0x22 = sVar1; } break; case (GameState *)0x5: psVar14 = (short *)FUN_00414eb6(); *(short *)&_Actors[iVar5].field_0x14 = *psVar14 + 4; *(short *)&_Actors[iVar5].field_0x22 = *(short *)&_Actors[iVar5].field_0x22 + 1; break; case (GameState *)0x6: psVar14 = (short *)FUN_00414eb6(); *(short *)&_Actors[iVar5].field_0x14 = *psVar14 + *(short *)(iVar10 + sVar1 * 2) + -7; *(short *)&_Actors[iVar5].field_0x22 = *(short *)&_Actors[iVar5].field_0x22 + 1; break; case (GameState *)0x9: if (*(short *)&_Actors[iVar5].field_0x1a == _RoomIndex) { FUN_00446b08(); } *(short *)&_Actors[iVar5].field_0x22 = *(short *)&_Actors[iVar5].field_0x22 + 1; break; case (GameState *)0xa: if ((*(short *)&_Actors[iVar5].field_0x1a == _RoomIndex) && (sVar11 = FUN_00446fc9(), sVar11 == 0)) { FUN_004465a5(*(undefined2 *)(DAT_00461aa8 + sVar1 * 2),uVar2 & 0xff, (short)(char)(uVar2 >> 8)); } *(short *)&_Actors[iVar5].field_0x22 = *(short *)&_Actors[iVar5].field_0x22 + 1; break; case (GameState *)0xd: FUN_004174d3(); *(short *)&_Actors[iVar5].field_0x22 = *(short *)&_Actors[iVar5].field_0x22 + 1; break; case (GameState *)0xe: *(short *)&_Actors[iVar5].field_0x26 = *(short *)&_Actors[iVar5].field_0x26 + -1; if (*(short *)&_Actors[iVar5].field_0x26 == 0) { *(short *)&_Actors[iVar5].field_0x22 = *(short *)&_Actors[iVar5].field_0x22 + 1; } else { *(undefined2 *)&_Actors[iVar5].field_0x22 = *(undefined2 *)&_Actors[iVar5].field_0x28; } break; case (GameState *)0xf: *(undefined2 *)&_Actors[iVar5].field_0x26 = *(undefined2 *)(&DAT_00462558 + _GameState->levelInBuilding * 2); *(short *)&_Actors[iVar5].field_0x22 = *(short *)&_Actors[iVar5].field_0x22 + 1; *(undefined2 *)&_Actors[iVar5].field_0x28 = *(undefined2 *)&_Actors[iVar5].field_0x22; break; case (GameState *)0x10: _Actors[1]._42_2_ = 1; *(short *)&_Actors[iVar5].field_0x22 = *(short *)&_Actors[iVar5].field_0x22 + 1; if (_GameState->field28_0x1c == 0) { FUN_0043c382(); } BigThing6Eh::processNodes_(_Actors[1]._162_4_); break; case (GameState *)0x11: (**(code **)&_Actors[iVar5].field_0x6a)(); *(short *)&_Actors[iVar5].field_0x22 = *(short *)&_Actors[iVar5].field_0x22 + 1; break; case (GameState *)0x12: *(short *)&_Actors[iVar5].field_0x30 = sVar1; *(short *)&_Actors[iVar5].field_0x22 = *(short *)&_Actors[iVar5].field_0x22 + 1; break; case (GameState *)0x13: FUN_0041aab9(); *(short *)&_Actors[iVar5].field_0x22 = *(short *)&_Actors[iVar5].field_0x22 + 1; break; case (GameState *)0x14: puVar8 = (undefined2 *)FUN_00414eb6(); *(undefined2 *)&_Actors[iVar5].field_0x14 = *puVar8; *(short *)&_Actors[iVar5].field_0x22 = *(short *)&_Actors[iVar5].field_0x22 + 1; break; case (GameState *)0x15: *(undefined2 *)&_Actors[iVar5].field_0x2a = 1; pGVar6 = _GameState; if (_GameState->field28_0x1c == 0) { pGVar6 = (GameState *)FUN_0043c382(); } LAB_00434a96: return CONCAT22((short)((uint)pGVar6 >> 0x10),local_6); case (GameState *)0x16: *(short *)&_Actors[iVar5].field_0x12 = sVar1; *(short *)&_Actors[iVar5].field_0x22 = *(short *)&_Actors[iVar5].field_0x22 + 1; break; case (GameState *)0x17: if (uVar2 == 0xffff) { FUN_00414eb6(); FUN_00414734(); } else { FUN_0041472f(); } *(short *)&_Actors[iVar5].field_0x22 = *(short *)&_Actors[iVar5].field_0x22 + 1; break; case (GameState *)0x18: if (uVar2 == 0xffff) { FUN_00414eb6(); FUN_00414739(); } else { FUN_0041472a(); } *(short *)&_Actors[iVar5].field_0x22 = *(short *)&_Actors[iVar5].field_0x22 + 1; break; case (GameState *)0x19: if (sVar1 != -0x8000) { psVar14 = (short *)FUN_00414edc(); *(short *)&_Actors[iVar5].field_0x14 = *psVar14 + sVar1; } if (uVar2 != 0x8000) { iVar7 = FUN_00414edc(); *(ushort *)&_Actors[iVar5].field_0x16 = uVar2 + *(short *)(iVar7 + 2); } *(short *)&_Actors[iVar5].field_0x22 = *(short *)&_Actors[iVar5].field_0x22 + 1; break; case (GameState *)0x1d: *(undefined2 *)&_Actors[iVar5].field_0x2e = 0; *(short *)&_Actors[iVar5].field_0x22 = *(short *)&_Actors[iVar5].field_0x22 + 1; break; case (GameState *)0x1e: *(undefined2 *)&_Actors[iVar5].field_0x2e = 1; *(undefined2 *)&_Actors[iVar5].field_0x32 = 0; *(short *)&_Actors[iVar5].field_0x22 = *(short *)&_Actors[iVar5].field_0x22 + 1; break; case (GameState *)0x1f: *(short *)&_Actors[iVar5].field_0x16 = sVar1; *(short *)&_Actors[iVar5].field_0x22 = *(short *)&_Actors[iVar5].field_0x22 + 1; break; case (GameState *)0x20: *(short *)&_Actors[iVar5].field_0x14 = sVar1; *(short *)&_Actors[iVar5].field_0x22 = *(short *)&_Actors[iVar5].field_0x22 + 1; break; case (GameState *)0x21: *(short *)&_Actors[iVar5].field_0x16 = *(short *)&_Actors[iVar5].field_0x16 + sVar1; *(ushort *)&_Actors[iVar5].field_0x1c = *(short *)&_Actors[iVar5].field_0x1c + uVar2; *(short *)&_Actors[iVar5].field_0x22 = *(short *)&_Actors[iVar5].field_0x22 + 1; break; case (GameState *)0x22: *(short *)&_Actors[iVar5].field_0x14 = *(short *)&_Actors[iVar5].field_0x14 + sVar1; *(short *)&_Actors[iVar5].field_0x22 = *(short *)&_Actors[iVar5].field_0x22 + 1; break; case (GameState *)0x23: (**(code **)&_Actors[iVar5].field_0x88)(); if (in_stack_00000004 == 0) { local_6 = 1; DAT_00462550 = 1; pGVar6 = (GameState *)CONCAT22(extraout_var,1); goto LAB_00434a96; } (**(code **)&_Actors[iVar5].field_0x8c)(); *(undefined2 *)&_Actors[iVar5].field_0x22 = 0; iVar13 = *(int *)(*(int *)(_Actors[iVar5].currentDynamics + *(short *)&_Actors[iVar5].field_0x18 * 4) + 4); break; case (GameState *)0x24: (**(code **)&_Actors[iVar5].field_0x66)(); *(short *)&_Actors[iVar5].field_0x22 = *(short *)&_Actors[iVar5].field_0x22 + 1; break; case (GameState *)0x25: iVar7 = FUN_00414edc(); if (*(short *)&_Actors[iVar5].field_0x1a == _RoomIndex) { FUN_00412e18(*(undefined4 *)(iVar7 + 10)); } *(short *)&_Actors[iVar5].field_0x22 = *(short *)&_Actors[iVar5].field_0x22 + 1; break; case (GameState *)0x26: *(short *)&_Actors[iVar5].field_0x22 = *(short *)&_Actors[iVar5].field_0x22 + 1; *(ushort *)&_Actors[iVar5].field_0x8 = *(ushort *)&_Actors[iVar5].field_0x8 | 0x8000; goto LAB_00434a96; case (GameState *)0x27: FUN_0043426d(); iVar13 = *(int *)(*(int *)(_Actors[iVar5].currentDynamics + *(short *)&_Actors[iVar5].field_0x18 * 4) + 4); *(undefined2 *)&_Actors[iVar5].field_0x22 = 0; break; case (GameState *)0x28: FUN_0043426d(); iVar13 = *(int *)(*(int *)(_Actors[iVar5].currentDynamics + *(short *)&_Actors[iVar5].field_0x18 * 4) + 4); *(undefined2 *)&_Actors[iVar5].field_0x22 = 0; break; case (GameState *)0x2a: *(short *)&_Actors[iVar5].field_0x22 = sVar1; break; case (GameState *)0x2d: *(undefined2 *)&_Actors[iVar5].field_0x22 = 0; } } psVar14 = (short *)(iVar13 + sVar11 * 10); *(short *)&_Actors[iVar5].field_0x8 = psVar14[3]; *(undefined2 *)&_Actors[iVar5].field_0x4 = *(undefined2 *)(iVar10 + *psVar14 * 2); *(undefined2 *)&_Actors[iVar5].field_0x6 = *(undefined2 *)(iVar3 + *psVar14 * 2); sVar11 = *(short *)&_Actors[iVar5].field_0x14 + psVar14[1]; *(short *)pAVar12 = sVar11; *(short *)&_Actors[iVar5].field_0x14 = sVar11; *(short *)&_Actors[iVar5].field_0x2 = psVar14[2] + *(short *)&_Actors[iVar5].field_0x16; if (*(short *)&_Actors[iVar5].field_0x2e != 0) { uVar9 = FUN_00418ea1(); if ((short)uVar9 == 0) { *(undefined2 *)&_Actors[iVar5].field_0x32 = 0; } else if ((short)uVar9 == 2) { if (*(short *)&_Actors[iVar5].field_0x4c < 2) { sVar11 = *(short *)&_Actors[iVar5].field_0x4e + 1; *(short *)pAVar12 = sVar11; *(short *)&_Actors[iVar5].field_0x14 = sVar11; *(undefined2 *)&_Actors[iVar5].field_0x32 = 0xffff; } } else if (-2 < *(short *)&_Actors[iVar5].field_0x4c) { sVar11 = (*(short *)&_Actors[iVar5].field_0x4e - *(short *)&_Actors[iVar5].field_0x4) + 1; *(short *)pAVar12 = sVar11; *(short *)&_Actors[iVar5].field_0x14 = sVar11; *(undefined2 *)&_Actors[iVar5].field_0x32 = 1; } } if (*(short *)&_Actors[iVar5].field_0x14 < 1) { *(short *)pAVar12 = 1; *(undefined2 *)&_Actors[iVar5].field_0x14 = 1; } iVar10 = (int)*(short *)pAVar12 + (int)*(short *)&_Actors[iVar5].field_0x4; if (0x1ff < iVar10) { sVar11 = 0x1ff - *(short *)&_Actors[iVar5].field_0x4; iVar10 = CONCAT22((short)((uint)iVar10 >> 0x10),sVar11); *(short *)&_Actors[iVar5].field_0x14 = sVar11; *(short *)pAVar12 = sVar11; } sVar11 = *psVar14; *(short *)&_Actors[iVar5].field_0xa6 = sVar11; *(short *)&_Actors[iVar5].field_0x22 = *(short *)&_Actors[iVar5].field_0x22 + 1; pGVar6 = (GameState *)CONCAT22((short)((uint)iVar10 >> 0x10),sVar11); goto LAB_00434a96; } void FUN_00434aa1(void) { undefined2 uVar2; uint uVar1; Actor *pAVar3; undefined4 unaff_ESI; int iVar4; pAVar3 = _Actors; iVar4 = CONCAT22((short)((uint)unaff_ESI >> 0x10),1); do { pAVar3 = pAVar3 + 1; if (((*(short *)&pAVar3->field_0x2a == 0) && (*(short *)&pAVar3->field_0x1a == _RoomIndex)) && (((int)*(short *)&pAVar3->field_0x8 & 0x8000U) == 0)) { uVar2 = (undefined2)((uint)(iVar4 + 10) >> 0x10); FUN_0041395c(*(undefined4 *)&pAVar3->field_0xa2,CONCAT22(uVar2,*(undefined2 *)pAVar3), CONCAT22(uVar2,*(undefined2 *)&pAVar3->field_0x2),(short)(iVar4 + 10)); FUN_00413d18(); FUN_00412e18(*(undefined4 *)&pAVar3->field_0xa2); } else { BigThing6Eh::processNodes_(*(undefined4 *)&pAVar3->field_0xa2); } iVar4 = iVar4 + 1; } while ((short)iVar4 < 0xc); if (_Actors[0]._62_2_ == 0) { DAT_00462562 = 0; } if (((int)(short)_Actors[0]._8_2_ & 0x8000U) == 0) { if (DAT_00462562 < 2) { FUN_0041395c(_Actors[0]._162_4_,CONCAT22((short)_Actors[0]._8_2_ >> 0xf,_Actors[0]._0_2_), CONCAT22((short)_Actors[0]._8_2_ >> 0xf,_Actors[0]._2_2_),0xf); FUN_00413d18(); FUN_00412e18(_Actors[0]._162_4_); } else { BigThing6Eh::processNodes_(_Actors[0]._162_4_); } if (_Actors[0]._62_2_ != 0) { DAT_00462562 = DAT_00462562 + 1; uVar1 = (int)DAT_00462562 & 0x80000003; if ((int)uVar1 < 0) { uVar1 = (uVar1 - 1 | 0xfffffffc) + 1; } DAT_00462562 = (short)uVar1; } } return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_00434be3(uint param_1) { ushort uVar1; undefined2 extraout_var; int iVar2; uint uVar3; undefined4 uVar4; undefined4 extraout_EDX; undefined4 extraout_EDX_00; short sVar5; uVar1 = RoomIsObverse(_RoomIndex); if (_RoomIndex != 0) { FUN_0041a823(); DoSomethingWithEseqResources_(); _DAT_00462564 = 1; DAT_00462554 = FUN_00412ac4(0x119c); FUN_004350be(); FUN_00413b08(); FUN_00412e18(DAT_00462554); _Actors[0]._14_2_ = _Actors[0]._154_2_ + uVar1; iVar2 = CONCAT22(extraout_var,0x1195); if (uVar1 == 0) { iVar2 = iVar2 + -1; } _Actors[0]._162_4_ = FUN_00412ac4((ushort)iVar2); (*(code *)_Actors[0]._140_4_)(_Actors[0]._162_4_,extraout_EDX,iVar2,0); _Actors[1]._14_2_ = _Actors[1]._154_2_ + uVar1; uVar3 = (uint)(ushort)_Actors[1]._14_2_; _Actors[1]._162_4_ = FUN_00412ac4(_Actors[1]._14_2_); (*(code *)_Actors[1]._140_4_)(_Actors[1]._162_4_,extraout_EDX_00,uVar3,1); if (*(short *)&_GameState->field_0x16 == 1) { sVar5 = 2; do { *(ushort *)&_Actors[sVar5].field_0xe = *(short *)&_Actors[sVar5].field_0x9a + uVar1; uVar4 = FUN_00412ac4(*(ushort *)&_Actors[sVar5].field_0xe); *(undefined4 *)&_Actors[sVar5].field_0xa2 = uVar4; FUN_004129d4(*(undefined4 *)&_Actors[sVar5].field_0xa2,sVar5); if ((*(short *)&_Actors[sVar5].field_0x2a == 0) && (*(short *)&_Actors[sVar5].field_0x1a == _RoomIndex)) { (**(code **)&_Actors[sVar5].field_0x8c)(); } sVar5 = sVar5 + 1; } while (sVar5 < 0xc); } } return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_00434d2a(uint param_1,undefined4 param_2,uint param_3) { uint uVar1; undefined4 uVar2; uint uVar3; undefined4 extraout_EDX; undefined4 extraout_EDX_00; undefined4 extraout_EDX_01; undefined4 extraout_EDX_02; short sVar4; uint uVar5; if ((_RoomIndex != 0) && (_DAT_00462564 != 0)) { _DAT_00462564 = 0; uVar3 = DAT_00462554; DAT_00462554 = FUN_00412d0c(param_1,param_2,param_3,DAT_00462554); uVar5 = _Actors[0]._162_4_; _Actors[0]._162_4_ = FUN_00412d0c(DAT_00462554,extraout_EDX,uVar3,_Actors[0]._162_4_); _Actors[0]._14_2_ = 0xffff; uVar3 = _Actors[1]._162_4_; _Actors[1]._162_4_ = FUN_00412d0c(_Actors[0]._162_4_,extraout_EDX_00,uVar5,_Actors[1]._162_4_); _Actors[1]._14_2_ = 0xffff; if (*(short *)&_GameState->field_0x16 == 1) { sVar4 = 2; uVar2 = extraout_EDX_01; do { uVar1 = (uint)sVar4; uVar5 = *(uint *)&_Actors[uVar1].field_0xa2; uVar2 = FUN_00412d0c(uVar1,uVar2,uVar3,*(uint *)&_Actors[uVar1].field_0xa2); uVar3 = uVar5; *(undefined4 *)&_Actors[uVar1].field_0xa2 = uVar2; *(undefined2 *)&_Actors[uVar1].field_0xe = 0xffff; sVar4 = sVar4 + 1; uVar2 = extraout_EDX_02; } while (sVar4 < 0xc); } } return; } // WARNING: Heritage AFTER dead removal. Example location: EAX : 0x00434e08 // WARNING: Restarted to delay deadcode elimination for space: register bool __stdcall FUN_00434ddd(short param_1) { ushort *puVar1; uint uVar2; int iVar3; DlistNode *node; bool bVar4; undefined4 in_stack_00000008; short local_6; uVar2 = FUN_0043d820(); bVar4 = false; iVar3 = FUN_0043d90c(uVar2,&local_6,in_stack_00000008); if ((short)iVar3 < 2) { node = (DlistNode *)FUN_0043d893(); puVar1 = (ushort *)((int)&node[6].prev + 2); *puVar1 = *puVar1 & 0x4000; *(undefined2 *)((int)&node[0xb].prev + 2) = 0; *(short *)&node[3].prev = local_6; *(short *)&node[1].prev = param_1; iVar3 = FUN_0044ca1c(); *(short *)((int)&node[3].next + 2) = (short)iVar3; bVar4 = local_6 != -1; if (bVar4) { *(ushort *)&_Level_partDefinitions[local_6].field_0x1c = *(ushort *)&node[0xc].next | 0x8000; } *(short *)&_Actors[param_1].field_0x70 = *(short *)&_Actors[param_1].field_0x70 + 1; DlistInsert(*(Dlist **)&_Actors[param_1].field_0x72,node,-1); } return bVar4; } // WARNING: Heritage AFTER dead removal. Example location: EAX : 0x00434ec1 // WARNING: Restarted to delay deadcode elimination for space: register int FUN_00434e8a(void) { DlistNode *pDVar1; int iVar2; DlistNode *node; uint uVar3; uint uVar4; DlistNode *pDVar5; PartDefinition *pPVar6; undefined2 uVar7; PartDefinition *node_00; short beforeIndex; short in_stack_00000004; ushort in_stack_00000008; short in_stack_0000000c; undefined1 local_6 [2]; iVar2 = (int)in_stack_00000004; node = DlistHead(*(Dlist **)&_Actors[iVar2].field_0x72); uVar3 = (uint)in_stack_00000008; uVar4 = FUN_0043d820(); pDVar5 = (DlistNode *)FUN_0043d90c(uVar4,local_6,uVar3); beforeIndex = 0; pDVar1 = pDVar5; do { uVar7 = (undefined2)((uint)pDVar1 >> 0x10); if (node == (DlistNode *)0x0) { LAB_00434f7c: return CONCAT22(uVar7,(short)pDVar5) + -1; } if ((*(ushort *)&node[0xc].next == in_stack_00000008) && ((*(short *)&node[1].prev == in_stack_00000004 || (in_stack_0000000c == 0)))) { *(short *)&_Actors[*(short *)&node[1].prev].field_0x70 = *(short *)&_Actors[*(short *)&node[1].prev].field_0x70 + -1; *(undefined2 *)&node[1].prev = 0xffff; DlistRemove(*(Dlist **)&_Actors[iVar2].field_0x72,node); if (*(short *)&node[3].prev != -1) { if (((uint)node[3].prev & 0x8000) == 0) { pPVar6 = _Level_partDefinitions + *(short *)&node[3].prev; node_00 = pPVar6; } else { node_00 = _Level_partDefinitions + ((int)*(short *)&node[3].prev & 0x7fff); pPVar6 = node_00; DlistRemove(*(Dlist **)&_Actors[iVar2].field_0x72,&node_00->field0_0x0); DlistInsert(*(Dlist **)&_Actors[iVar2].field_0x72,&node_00->field0_0x0,beforeIndex); } uVar7 = (undefined2)((uint)pPVar6 >> 0x10); *(undefined2 *)&node_00->field_0x1c = 0xffff; goto LAB_00434f7c; } } beforeIndex = beforeIndex + 1; node = DlistNext(node); pDVar1 = node; } while( true ); } uint FUN_00434fa3(uint param_1) { undefined4 uVar1; uint uVar2; uint uVar3; undefined4 extraout_EDX; undefined4 extraout_EDX_00; int iVar4; Actor *pAVar5; int iVar6; int iVar7; pAVar5 = _Actors; iVar4 = 0; do { if (*(short *)&pAVar5->field_0x2a == 0) { iVar6 = iVar4; uVar1 = FUN_00419223(param_1); iVar7 = iVar4; uVar2 = (**(code **)&pAVar5->field_0x62)(uVar1,extraout_EDX,iVar6); if (((short)uVar2 != -1) && (uVar3 = uVar2 & 0xffff7fff, (short)uVar3 != *(short *)&pAVar5->field_0x18)) { FUN_0043426d(uVar3,extraout_EDX_00,iVar7,iVar4,uVar3); if (((int)(short)uVar2 & 0x8000U) == 0) { *(undefined2 *)&pAVar5->field_0x22 = 0; *(undefined2 *)&pAVar5->field_0x10 = 0; } } param_1 = FUN_00434369(); } pAVar5 = pAVar5 + 1; iVar4 = iVar4 + 1; } while ((short)iVar4 < 0xc); return CONCAT22((short)(param_1 >> 0x10),DAT_00462550); } void FUN_00435017(void) { short sVar1; Actor *pAVar2; int in_stack_00000004; pAVar2 = _Actors; sVar1 = 0; do { Memcpy((void *)(sVar1 * 0x2e + in_stack_00000004),&pAVar2->field_0x14,0x2e); pAVar2 = pAVar2 + 1; sVar1 = sVar1 + 1; } while (sVar1 < 0xc); return; } void __stdcall FUN_00435050(int param_1) { undefined2 *puVar1; ushort obverse; Actor *actor; short i; actor = _Actors; i = 0; do { Memcpy(&actor->field_0x14,(void *)(i * 0x2e + param_1),0x2e); if (*(short *)&actor->field_0x2a == 0) { obverse = RoomIsObverse(*(short *)&actor->field_0x1a); ActorUpdateDynamics(i,obverse); puVar1 = *(undefined2 **)(actor->currentDynamics + *(short *)&actor->field_0x18 * 4); *(undefined2 *)&actor->field_0x12 = *puVar1; *(undefined2 *)&actor->field_0x4c = puVar1[1]; } actor = actor + 1; i = i + 1; } while (i < 0xc); return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_004350be(void) { FUN_00413a54(); return; } undefined4 * FUN_00435122(void) { undefined4 *puVar1; ushort uVar2; undefined4 *in_stack_00000004; ushort in_stack_00000008; if (in_stack_00000004 == (undefined4 *)0x0) { return (undefined4 *)0x0; } uVar2 = 0; for (puVar1 = (undefined4 *)*in_stack_00000004; (uVar2 < in_stack_00000008 && (puVar1 != (undefined4 *)0x0)); puVar1 = (undefined4 *)*puVar1) { uVar2 = uVar2 + 1; } if (puVar1 == (undefined4 *)0x0) { puVar1 = (undefined4 *)in_stack_00000004[1]; } return puVar1; } void __stdcall FUN_00435151(Dlist *param_1,DlistNode *param_2,code *param_3) { DlistNode *pDVar1; short sVar2; DlistNode *pDVar3; DlistNode *pDVar4; short local_6; if (param_1->head == (DlistNode *)0x0) { DlistInsert(param_1,param_2,0); } else { local_6 = 0; pDVar1 = param_1->head; pDVar4 = (DlistNode *)0x0; while (pDVar3 = pDVar1, pDVar3 != (DlistNode *)0x0) { sVar2 = (*param_3)(); if (sVar2 < 0) break; local_6 = local_6 + 1; pDVar4 = pDVar3; pDVar1 = pDVar3->next; } if (pDVar3 == (DlistNode *)0x0) { param_1->tail = param_2; } else { pDVar3->prev = param_2; } param_2->next = pDVar3; param_2->prev = pDVar4; if (pDVar4 != (DlistNode *)0x0) { pDVar4->next = param_2; } if (local_6 == 0) { param_1->head = param_2; } } return; } int ** FUN_0043527b(void) { int **ppiVar1; int **ppiVar2; int **ppiVar3; ushort uVar4; int *in_stack_00000004; ushort in_stack_00000008; if (*in_stack_00000004 == 0) { ppiVar2 = (int **)0x0; } else { uVar4 = 0; ppiVar1 = (int **)*in_stack_00000004; ppiVar3 = (int **)0x0; while ((ppiVar2 = ppiVar1, uVar4 < in_stack_00000008 && (ppiVar2 != (int **)0x0))) { uVar4 = uVar4 + 1; ppiVar3 = ppiVar2; ppiVar1 = (int **)*ppiVar2; } if (ppiVar3 == (int **)0x0) { *in_stack_00000004 = (int)*ppiVar2; } else { *ppiVar3 = *ppiVar2; } if (*ppiVar2 == (int *)0x0) { in_stack_00000004[1] = (int)ppiVar2[1]; } else { (*ppiVar2)[1] = (int)ppiVar3; } } return ppiVar2; } int FUN_004352c9(void) { DlistNode *pDVar1; int iVar2; Dlist *in_stack_00000004; iVar2 = 0; if (in_stack_00000004 != (Dlist *)0x0) { for (pDVar1 = DlistHead(in_stack_00000004); pDVar1 != (DlistNode *)0x0; pDVar1 = pDVar1->next) { iVar2 = iVar2 + 1; } return iVar2; } return 0; } void FUN_00435346(void) { undefined2 in_stack_00000004; DAT_00462574 = in_stack_00000004; return; } undefined2 FUN_00435355(void) { return DAT_00462574; } // WARNING: Heritage AFTER dead removal. Example location: EAX : 0x004354db // WARNING: Globals starting with '_' overlap smaller symbols at the same address // WARNING: Restarted to delay deadcode elimination for space: register void Puzzles::SetParametersForMagnet_(void) { uint uVar1; undefined4 uVar2; uint uVar3; int iVar4; uint extraout_ECX; undefined4 extraout_EDX; undefined4 extraout_EDX_00; undefined4 extraout_EDX_01; undefined4 extraout_EDX_02; short sVar5; int iVar6; undefined2 *puVar7; _DAT_00468ff6 = 0; DAT_00469742 = 0x1f73; DAT_00469744 = 0x1f74; DAT_00469746 = 0x4a57; DAT_00469748 = 0x1f4e; DAT_0046974a = 0x4a77; DAT_0046974c = 0xffff; puVar7 = &DAT_00469742; uVar1 = FUN_0043ff91(&DAT_00469742); FUN_00440113(uVar1,extraout_EDX,(uint)puVar7); FUN_0044c950(); uVar1 = 900; DAT_00468f2c = PoolAlloc(900); FUN_00431024((uint)DAT_00468f2c,extraout_EDX_00,uVar1,13000); DAT_00468fc0 = FUN_00412ac4(13000); uVar1 = FUN_00413cf4(); uVar2 = FUN_00412d0c(uVar1,extraout_EDX_01,extraout_ECX,DAT_00468fc0); SetParametersForMagnet(currentPuzzle); FUN_00435d8a(); FUN_004359e9(); uVar3 = CONCAT22((short)((uint)uVar2 >> 0x10),DAT_0046269e); uVar1 = uVar3; FUN_0043fef9(DAT_0046269e); FUN_00438e43(uVar3,extraout_EDX_02,uVar1); FUN_0041029e(); DAT_00468fd0 = FUN_00412ac4(0x3aa1); FUN_0041395c(DAT_00468fd0,0x18e,0x143,10); DAT_00468fd4 = FUN_00412ac4(0x3a9d); FUN_0041395c(DAT_00468fd4,0x15,0x19,1); DAT_00468f44 = FUN_00412ac4(0x32ea); DAT_00468f48 = FUN_0043b58e(); *(undefined2 *)(DAT_00468f48 + 0x12) = 0; FUN_0043a9ca(); DAT_00469544 = &LAB_0043aa3b; iVar6 = 0; do { iVar4 = iVar6 + 0x32cb; uVar2 = FUN_00412ac4((ushort)iVar4); sVar5 = (short)iVar6; (&DAT_00468f54)[sVar5] = uVar2; iVar4 = FUN_0043b58e(uVar2,(int)sVar5,iVar4); (&DAT_00468f88)[sVar5] = iVar4; iVar6 = iVar6 + 1; } while ((short)iVar6 < 0xc); DAT_00468f84 = FUN_00412ac4(0x36ba); DAT_00468fb8 = FUN_0043b58e(); FUN_0043139c(); return; } // WARNING: Heritage AFTER dead removal. Example location: EAX : 0x004355a1 // WARNING: Restarted to delay deadcode elimination for space: register void FUN_0043551e(uint param_1,undefined4 param_2,uint param_3) { uint uVar1; undefined4 uVar2; uint uVar3; uint extraout_ECX; uint extraout_ECX_00; undefined4 extraout_EDX; undefined4 extraout_EDX_00; int extraout_EDX_01; int iVar4; undefined4 extraout_EDX_02; short sVar5; if (DAT_0046976c != 0) { param_3 = CONCAT22((short)(param_1 >> 0x10),DAT_0046976c); FUN_00446367(DAT_0046976c); DAT_0046976c = 0; param_2 = extraout_EDX; } DAT_00469544 = 0; FUN_004400eb(0,param_2,param_3); PoolFree(DAT_00468f38); uVar1 = FUN_0043b9d2(); FUN_00412d0c(uVar1,extraout_EDX_00,extraout_ECX,DAT_00468f44); uVar1 = DAT_00468f48; FUN_0043b69e(); sVar5 = 0; iVar4 = extraout_EDX_01; do { uVar3 = (&DAT_00468f54)[sVar5]; uVar2 = FUN_00412d0c((int)sVar5,iVar4,uVar1,uVar3); (&DAT_00468f54)[sVar5] = uVar2; uVar1 = (&DAT_00468f88)[sVar5]; uVar3 = FUN_0043b69e((int)sVar5,(int)sVar5,uVar3); iVar4 = (int)sVar5; (&DAT_00468f88)[iVar4] = uVar3; sVar5 = sVar5 + 1; } while (sVar5 < 0xc); DAT_00468f84 = FUN_00412d0c(uVar3,iVar4,uVar1,DAT_00468f84); DAT_00468fb8 = FUN_0043b69e(); FUN_0043ffba(); FUN_0044c950(); DAT_0046976a = DAT_0046269e; uVar2 = FUN_00416f98(); FUN_00435d07(uVar2,extraout_EDX_02,extraout_ECX_00); FUN_004102d7(); PoolFree(DAT_00468f2c); FUN_00440695(DAT_0046977e,&_TEXT22); FUN_00431348(); return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_0043588a(void) { void *pvVar1; short sVar2; void *apvStackY_20400 [32762]; void *local_400 [5]; undefined1 local_3ec [1000]; if (DAT_004626a0 != 5) { FUN_004465a5(0x1f5c,5,0); FUN_00412dc8(DAT_00468fd4); FUN_00412784(); BigThing6Eh::processNodes_(DAT_00468fd4); FUN_00412784(); Memset(local_3ec,0,1000); local_400[0] = Resource::Load(DAT_004697a8,&_TEXT23); FUN_0044ffac(); FUN_0045008c(); for (sVar2 = 1; sVar2 < _DAT_0046977c; sVar2 = sVar2 + 1) { pvVar1 = Resource::Load((&DAT_004697a8)[sVar2],&_TEXT24); local_400[sVar2] = pvVar1; FUN_0044ffac(); FUN_0044ffc8(); } FUN_0043f27a(); for (sVar2 = 0; sVar2 < _DAT_0046977c; sVar2 = sVar2 + 1) { FUN_00440695((&DAT_004697a8)[sVar2],&_TEXT25); } } return; } void FUN_004359e9(void) { ushort uVar1; ushort uVar2; int iVar3; short sVar4; undefined2 uVar5; code *pcVar6; FUN_00416f98(); DAT_00468fe8 = PickapuzzleHitTest_(0xd,0x5a,0x5d,0x90,1,FUN_00435c2d); *(undefined4 *)(DAT_00468fe8 + 0x1e) = 1000; DAT_00468fec = PickapuzzleHitTest_(0x70,0x2c,0x17d,0xf6,1,FUN_00435c2d); *(undefined4 *)(DAT_00468fec + 0x1e) = 0x3e9; DAT_00468ff0 = PickapuzzleHitTest_(5,0xf6,0x61,0x30,1,FUN_00435c2d); *(undefined4 *)(DAT_00468ff0 + 0x1e) = 0x3ea; PickapuzzleHitTest_(0x18e,0x144,100,0x32,5,(ClickHandler *)&LAB_00435852); PickapuzzleHitTest_(0x15,0x19,0x3a,0x1e,5,FUN_0043588a); sVar4 = 0; do { if (0 < (short)(&DAT_00462698)[sVar4]) { pcVar6 = FUN_00435c2d; uVar5 = 5; uVar1 = FUN_00413794((&DAT_00468fc4)[sVar4],0); uVar2 = FUN_00413774((&DAT_00468fc4)[sVar4],0); iVar3 = PickapuzzleHitTest_((&DAT_00462578)[sVar4 * 2],(&DAT_0046257a)[sVar4 * 2],uVar2,uVar1, uVar5,pcVar6); (&DAT_00468fdc)[sVar4] = iVar3; *(int *)((&DAT_00468fdc)[sVar4] + 0x1e) = (int)sVar4; } sVar4 = sVar4 + 1; } while (sVar4 < 3); sVar4 = 0; do { if (*(short *)(DAT_00468f2c + sVar4 * 0x1e) != -1) { pcVar6 = FUN_00435c2d; uVar5 = 5; uVar1 = FUN_00413794(*(undefined4 *)(DAT_00468f2c + 0x12 + sVar4 * 0x1e),0); uVar2 = FUN_00413774(*(undefined4 *)(DAT_00468f2c + 0x12 + sVar4 * 0x1e),0); iVar3 = PickapuzzleHitTest_(*(undefined2 *)(DAT_00468f2c + 4 + sVar4 * 0x1e), *(undefined2 *)(DAT_00468f2c + 6 + sVar4 * 0x1e),uVar2,uVar1,uVar5 ,pcVar6); *(int *)(DAT_00468f2c + 0x1a + sVar4 * 0x1e) = iVar3; *(int *)(*(int *)(DAT_00468f2c + 0x1a + sVar4 * 0x1e) + 0x1e) = sVar4 + 2000; } sVar4 = sVar4 + 1; } while (sVar4 < 0x1e); if (DAT_0046269e != 0) { PickapuzzleHitTest_(10,0x140,0x14e,0x3c,0x19,(ClickHandler *)&LAB_00435c1a); } return; } int FUN_00435c2d(undefined4 param_1,undefined4 param_2,undefined4 param_3,int param_4) { uint uVar1; int iVar2; if (DAT_004626a0 == 1) { uVar1 = *(uint *)(param_4 + 0x1e); if (uVar1 < 3) { iVar2 = FUN_00438db6(); return iVar2; } if (0x1d < uVar1 - 2000) { return uVar1 - 0x7ee; } iVar2 = FUN_004394c8(); } else { iVar2 = DAT_004626a0 + -3; if (iVar2 == 0) { uVar1 = *(uint *)(param_4 + 0x1e); if ((int)uVar1 < 0x3ea) { if (uVar1 == 0x3e9) { LAB_00435c8e: iVar2 = FUN_00438f7b(); return iVar2; } if ((uVar1 < 3) || (iVar2 = uVar1 - 1000, iVar2 == 0)) { FUN_0043aa25(); DAT_004626a0 = 1; (&DAT_00462698)[DAT_00468f30] = (&DAT_00462698)[DAT_00468f30] + 1; FUN_00435d8a(); FUN_004359e9(); DAT_00468f30 = 0xffff; iVar2 = FUN_0043aa32(); return iVar2; } } else if (uVar1 == 0x3ea) { iVar2 = 0; if (DAT_00468f30 != -1) { iVar2 = FUN_00438efb(0,param_2,param_3); return iVar2; } } else { iVar2 = uVar1 - 0x7ee; if (uVar1 - 2000 < 0x1e) goto LAB_00435c8e; } } } return iVar2; } void FUN_00435d07(undefined4 param_1,undefined4 param_2,uint param_3) { uint uVar1; undefined4 extraout_EDX; int extraout_EDX_00; int iVar2; undefined4 extraout_EDX_01; short sVar3; uint uVar4; sVar3 = 0; do { uVar1 = (&DAT_00468fc4)[sVar3]; FUN_00412d0c((int)sVar3,param_2,param_3,(&DAT_00468fc4)[sVar3]); param_3 = uVar1; sVar3 = sVar3 + 1; param_2 = extraout_EDX; } while (sVar3 < 3); sVar3 = 0; do { uVar1 = sVar3 * 0xf; iVar2 = DAT_00468f2c; if (*(short *)(DAT_00468f2c + sVar3 * 0x1e) != -1) { uVar1 = *(uint *)(DAT_00468f2c + 0x12 + sVar3 * 0x1e); FUN_00412d0c(sVar3 * 0xf,DAT_00468f2c,param_3,uVar1); param_3 = *(uint *)(DAT_00468f2c + 0x16 + sVar3 * 0x1e); uVar1 = FUN_00412d0c(sVar3 * 0xf,DAT_00468f2c,uVar1,param_3); iVar2 = extraout_EDX_00; } sVar3 = sVar3 + 1; } while (sVar3 < 0x1e); uVar4 = DAT_00468fd4; uVar1 = FUN_00412d0c(uVar1,iVar2,param_3,DAT_00468fd4); FUN_00412d0c(uVar1,extraout_EDX_01,uVar4,DAT_00468fd0); return; } void FUN_00435d8a(void) { undefined2 uVar1; undefined2 uVar2; short x; short y; undefined4 extraout_EDX; short sVar3; undefined4 unaff_ESI; undefined2 uVar4; undefined4 unaff_EDI; undefined2 uVar5; undefined4 this; char local_10 [12]; Nfnt::LoadWithCache(15000); FUN_00430de8(0xd,0x5a,0x5d,0x90); sVar3 = 0; do { this = (&DAT_00468fc4)[sVar3]; BigThing6Eh::processNodes_(this); if (0 < (short)(&DAT_00462698)[sVar3]) { uVar1 = (&DAT_00462578)[sVar3 * 2]; uVar4 = (undefined2)((uint)unaff_ESI >> 0x10); uVar2 = (&DAT_0046257a)[sVar3 * 2]; uVar5 = (undefined2)((uint)unaff_EDI >> 0x10); FUN_00412e70((int)sVar3,extraout_EDX,this,(&DAT_00468fc4)[sVar3]); FUN_0041395c((&DAT_00468fc4)[sVar3],CONCAT22(uVar4,uVar1),CONCAT22(uVar5,uVar2),5); x = (&DAT_00462584)[sVar3 * 2]; unaff_ESI = CONCAT22(uVar4,x); y = (&DAT_00462586)[sVar3 * 2]; unaff_EDI = CONCAT22(uVar5,y); Sprintf_(local_10,&DAT_004626c2,(int)(short)(&DAT_00462698)[sVar3]); Draw::String(15000,local_10,x,y,0x996); } sVar3 = sVar3 + 1; } while (sVar3 < 3); FUN_00430abc(0xd,0x5a,0x5d,0x90); Nfnt::Unload(15000); return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void __cdecl Puzzles::SetParametersForMagnet(PuzzleNumberOneBased puzzle) { undefined4 uVar1; short sVar2; if (0x1e < puzzle) { puzzle = 1; } DAT_0046269e = 0; DAT_00468f30 = 0xffff; DAT_004626a0 = 1; sVar2 = 0; do { *(undefined2 *)(DAT_00468f2c + sVar2 * 0x1e) = 0xffff; sVar2 = sVar2 + 1; } while (sVar2 < 0x1e); sVar2 = 0; do { uVar1 = FUN_00412ac4(sVar2 + 0x32e7); (&DAT_00468fc4)[sVar2] = uVar1; sVar2 = sVar2 + 1; } while (sVar2 < 3); sVar2 = 0; do { (&DAT_00462698)[sVar2] = (short)(char)(&DAT_0046261d)[(int)sVar2 + *(char *)(puzzle + 0x462679) * 3]; sVar2 = sVar2 + 1; } while (sVar2 < 3); sVar2 = 0; do { (&DAT_00468dee)[sVar2 * 4] = 0xffff; sVar2 = sVar2 + 1; } while (sVar2 < 0x28); switch(puzzle) { case 1: _DAT_0046977a = 5; _DAT_0046977c = 1; DAT_0046978a = 13000; DAT_0046978c = 0x32c9; DAT_0046978e = 0x32ca; DAT_00469790 = 0x32cb; DAT_00469792 = 0x32cc; DAT_00469794 = 0xffff; DAT_004697a8 = 0x32c9; DAT_00468dee = 0; DAT_00468dec = 0; DAT_00468de8 = 0x124; DAT_00468dea = 0xa0; DAT_00468df6 = 0; DAT_00468df4 = 0; DAT_00468df0 = 0xff; DAT_00468df2 = 0xa0; DAT_00468dfe = 0; DAT_00468dfc = 0; DAT_00468df8 = 0x149; DAT_00468dfa = 0xa0; break; case 2: _DAT_0046977a = 5; _DAT_0046977c = 1; DAT_0046978a = 13000; DAT_0046978c = 0x32c9; DAT_0046978e = 0x32ca; DAT_00469790 = 0x32cb; DAT_00469792 = 0x32cc; DAT_00469794 = 0xffff; DAT_004697a8 = 0x32c9; DAT_00468dee = 0; DAT_00468dec = 0; DAT_00468de8 = 0x119; DAT_00468dea = 0x83; DAT_00468df6 = 0; DAT_00468df4 = 0; DAT_00468df0 = 0x108; DAT_00468df2 = 0x94; DAT_00468dfe = 0; DAT_00468dfc = 0; DAT_00468df8 = 0x12d; DAT_00468dfa = 0x94; break; case 3: _DAT_0046977a = 5; _DAT_0046977c = 1; DAT_0046978a = 13000; DAT_0046978c = 0x32c9; DAT_0046978e = 0x32ca; DAT_00469790 = 0x32cb; DAT_00469792 = 0x32cc; DAT_00469794 = 0xffff; DAT_004697a8 = 0x32c9; DAT_00468dee = 0; DAT_00468dec = 0; DAT_00468de8 = 0x120; DAT_00468dea = 0x81; DAT_00468df6 = 0; DAT_00468df4 = 0; DAT_00468df0 = 0x10f; DAT_00468df2 = 0x92; DAT_00468dfe = 0; DAT_00468dfc = 0; DAT_00468df8 = 0x134; DAT_00468dfa = 0x92; DAT_00468e06 = 0; DAT_00468e04 = 0; DAT_00468e00 = 0x120; DAT_00468e02 = 0xa3; DAT_00468e0e = 0; DAT_00468e0c = 0; DAT_00468e08 = 0xfb; DAT_00468e0a = 0xa3; DAT_00468e16 = 0; DAT_00468e14 = 0; DAT_00468e10 = 0x145; DAT_00468e12 = 0xa3; break; case 4: _DAT_0046977a = 6; _DAT_0046977c = 1; DAT_0046978a = 0x32d3; DAT_0046978c = 0x32d4; DAT_0046978e = 0x32d5; DAT_00469790 = 0x32d6; DAT_00469792 = 0x32d7; DAT_00469794 = 0x32d8; _DAT_00469796 = 0xffff; DAT_004697a8 = 0x32ca; DAT_00468dee = 0; DAT_00468dec = 0; DAT_00468de8 = 0x123; DAT_00468dea = 0x96; DAT_00468df6 = 0; DAT_00468df4 = 0; DAT_00468df0 = 0xfe; DAT_00468df2 = 0x96; DAT_00468dfe = 0; DAT_00468dfc = 0; DAT_00468df8 = 0x148; DAT_00468dfa = 0x96; DAT_00468e06 = 0; DAT_00468e04 = 1; DAT_00468e00 = 0xfe; DAT_00468e02 = 0xa7; DAT_00468e0e = 0; DAT_00468e0c = 1; DAT_00468e08 = 0x15c; DAT_00468e0a = 0xa7; break; case 5: _DAT_0046977a = 6; _DAT_0046977c = 1; DAT_0046978a = 0x32d3; DAT_0046978c = 0x32d4; DAT_0046978e = 0x32d5; DAT_00469790 = 0x32d6; DAT_00469792 = 0x32d7; DAT_00469794 = 0x32d8; _DAT_00469796 = 0xffff; DAT_004697a8 = 0x32ca; DAT_00468dee = 0; DAT_00468dec = 0; DAT_00468de8 = 0x11c; DAT_00468dea = 0xc1; DAT_00468df6 = 0; DAT_00468df4 = 0; DAT_00468df0 = 0xf7; DAT_00468df2 = 0xc1; DAT_00468dfe = 0; DAT_00468dfc = 0; DAT_00468df8 = 0x141; DAT_00468dfa = 0xc1; DAT_00468e06 = 0; DAT_00468e04 = 1; DAT_00468e00 = 0xf7; DAT_00468e02 = 0x9c; DAT_00468e0e = 0; DAT_00468e0c = 1; DAT_00468e08 = 0x155; DAT_00468e0a = 0x9c; DAT_00468e16 = 0; DAT_00468e14 = 0; DAT_00468e10 = 0xe3; DAT_00468e12 = 0x8b; DAT_00468e1e = 0; DAT_00468e1c = 0; DAT_00468e18 = 0x155; DAT_00468e1a = 0x8b; break; case 6: _DAT_0046977a = 6; _DAT_0046977c = 1; DAT_0046978a = 0x32d3; DAT_0046978c = 0x32d4; DAT_0046978e = 0x32d5; DAT_00469790 = 0x32d6; DAT_00469792 = 0x32d7; DAT_00469794 = 0x32d8; _DAT_00469796 = 0xffff; DAT_004697a8 = 0x32ca; DAT_00468dee = 0; DAT_00468dec = 0; DAT_00468de8 = 0x117; DAT_00468dea = 0x6e; DAT_00468df6 = 0; DAT_00468df4 = 0; DAT_00468df0 = 0xf2; DAT_00468df2 = 0x6e; DAT_00468dfe = 0; DAT_00468dfc = 0; DAT_00468df8 = 0x13c; DAT_00468dfa = 0x6e; DAT_00468e06 = 0; DAT_00468e04 = 1; DAT_00468e00 = 0xf2; DAT_00468e02 = 0x7f; DAT_00468e0e = 0; DAT_00468e0c = 0; DAT_00468e08 = 0x117; DAT_00468e0a = 200; DAT_00468e16 = 0; DAT_00468e14 = 1; DAT_00468e10 = 0xf2; DAT_00468e12 = 0xa4; DAT_00468e1e = 0; DAT_00468e1c = 1; DAT_00468e18 = 0x150; DAT_00468e1a = 0x7f; DAT_00468e26 = 0; DAT_00468e24 = 0; DAT_00468e20 = 0xf2; DAT_00468e22 = 200; DAT_00468e2e = 0; DAT_00468e2c = 1; DAT_00468e28 = 0x150; DAT_00468e2a = 0xa4; DAT_00468e36 = 0; DAT_00468e34 = 0; DAT_00468e30 = 0x13c; DAT_00468e32 = 200; break; case 7: _DAT_0046977a = 6; _DAT_0046977c = 1; DAT_0046978a = 0x32d3; DAT_0046978c = 0x32d4; DAT_0046978e = 0x32d5; DAT_00469790 = 0x32d6; DAT_00469792 = 0x32d7; DAT_00469794 = 0x32d8; _DAT_00469796 = 0xffff; DAT_004697a8 = 0x32ca; DAT_00468dee = 0; DAT_00468dec = 0; DAT_00468de8 = 0x100; DAT_00468dea = 0x8d; DAT_00468df6 = 0; DAT_00468df4 = 0; DAT_00468df0 = 0x100; DAT_00468df2 = 0x9e; DAT_00468dfe = 0; DAT_00468dfc = 0; DAT_00468df8 = 0x13f; DAT_00468dfa = 0x8d; DAT_00468e06 = 0; DAT_00468e04 = 0; DAT_00468e00 = 0x13f; DAT_00468e02 = 0x9e; break; case 8: _DAT_0046977a = 6; _DAT_0046977c = 1; DAT_0046978a = 0x32d3; DAT_0046978c = 0x32d4; DAT_0046978e = 0x32d5; DAT_00469790 = 0x32d6; DAT_00469792 = 0x32d7; DAT_00469794 = 0x32d8; _DAT_00469796 = 0xffff; DAT_004697a8 = 0x32ca; DAT_00468dee = 0; DAT_00468dec = 0; DAT_00468de8 = 0x114; DAT_00468dea = 0x70; DAT_00468df6 = 0; DAT_00468df4 = 0; DAT_00468df0 = 0x101; DAT_00468df2 = 0x81; DAT_00468dfe = 0; DAT_00468dfc = 0; DAT_00468df8 = 0x126; DAT_00468dfa = 0x81; DAT_00468e06 = 0; DAT_00468e04 = 0; DAT_00468e00 = 0x115; DAT_00468e02 = 0xb2; DAT_00468e0e = 0; DAT_00468e0c = 0; DAT_00468e08 = 0xf0; DAT_00468e0a = 0xb2; DAT_00468e16 = 0; DAT_00468e14 = 0; DAT_00468e10 = 0x13a; DAT_00468e12 = 0xb2; break; case 9: _DAT_0046977a = 6; _DAT_0046977c = 1; DAT_0046978a = 0x32d3; DAT_0046978c = 0x32d4; DAT_0046978e = 0x32d5; DAT_00469790 = 0x32d6; DAT_00469792 = 0x32d7; DAT_00469794 = 0x32d8; _DAT_00469796 = 0xffff; DAT_004697a8 = 0x32ca; DAT_00468dee = 0; DAT_00468dec = 0; DAT_00468de8 = 0x117; DAT_00468dea = 0x74; DAT_00468df6 = 0; DAT_00468df4 = 0; DAT_00468df0 = 0xf2; DAT_00468df2 = 0x74; DAT_00468dfe = 0; DAT_00468dfc = 0; DAT_00468df8 = 0x13c; DAT_00468dfa = 0x74; DAT_00468e06 = 0; DAT_00468e04 = 0; DAT_00468e00 = 0xf2; DAT_00468e02 = 0xa6; DAT_00468e0e = 0; DAT_00468e0c = 0; DAT_00468e08 = 0x117; DAT_00468e0a = 0xa6; DAT_00468e16 = 0; DAT_00468e14 = 0; DAT_00468e10 = 0x13c; DAT_00468e12 = 0xa6; break; case 10: _DAT_0046977a = 6; _DAT_0046977c = 1; DAT_0046978a = 0x32cd; DAT_0046978c = 0x32ce; DAT_0046978e = 0x32cf; DAT_00469790 = 0x32d0; DAT_00469792 = 0x32d1; DAT_00469794 = 0x32d2; _DAT_00469796 = 0xffff; DAT_004697a8 = 0x32cb; DAT_00468dee = 0; DAT_00468dec = 0; DAT_00468de8 = 0x11e; DAT_00468dea = 0x9d; DAT_00468df6 = 1; DAT_00468df4 = 0; DAT_00468df0 = 0x11e; DAT_00468df2 = 0xae; DAT_00468dfe = 1; DAT_00468dfc = 2; DAT_00468df8 = 0x11e; DAT_00468dfa = 0x73; break; case 0xb: _DAT_0046977a = 6; _DAT_0046977c = 1; DAT_0046978a = 0x32cd; DAT_0046978c = 0x32ce; DAT_0046978e = 0x32cf; DAT_00469790 = 0x32d0; DAT_00469792 = 0x32d1; DAT_00469794 = 0x32d2; _DAT_00469796 = 0xffff; DAT_004697a8 = 0x32cb; DAT_00468dee = 1; DAT_00468dec = 0; DAT_00468de8 = 0x105; DAT_00468dea = 0xa7; DAT_00468df6 = 1; DAT_00468df4 = 0; DAT_00468df0 = 0x12a; DAT_00468df2 = 0xa7; DAT_00468dfe = 1; DAT_00468dfc = 2; DAT_00468df8 = 0x105; DAT_00468dfa = 0x7d; DAT_00468e06 = 1; DAT_00468e04 = 2; DAT_00468e00 = 0x12a; DAT_00468e02 = 0x7d; break; case 0xc: _DAT_0046977a = 6; _DAT_0046977c = 1; DAT_0046978a = 0x32cd; DAT_0046978c = 0x32ce; DAT_0046978e = 0x32cf; DAT_00469790 = 0x32d0; DAT_00469792 = 0x32d1; DAT_00469794 = 0x32d2; _DAT_00469796 = 0xffff; DAT_004697a8 = 0x32cb; DAT_00468dee = 1; DAT_00468dec = 0; DAT_00468de8 = 0x105; DAT_00468dea = 0xa9; DAT_00468df6 = 1; DAT_00468df4 = 1; DAT_00468df0 = 0xec; DAT_00468df2 = 0x84; DAT_00468dfe = 1; DAT_00468dfc = 2; DAT_00468df8 = 0x116; DAT_00468dfa = 0x6b; DAT_00468e06 = 1; DAT_00468e04 = 3; DAT_00468e00 = 0x12a; DAT_00468e02 = 0x95; break; case 0xd: _DAT_0046977a = 6; _DAT_0046977c = 1; DAT_0046978a = 0x32cd; DAT_0046978c = 0x32ce; DAT_0046978e = 0x32cf; DAT_00469790 = 0x32d0; DAT_00469792 = 0x32d1; DAT_00469794 = 0x32d2; _DAT_00469796 = 0xffff; DAT_004697a8 = 0x32cb; DAT_00468dee = 1; DAT_00468dec = 0; DAT_00468de8 = 0xea; DAT_00468dea = 0xb8; DAT_00468df6 = 1; DAT_00468df4 = 2; DAT_00468df0 = 0xfe; DAT_00468df2 = 0x8e; DAT_00468dfe = 1; DAT_00468dfc = 0; DAT_00468df8 = 0x112; DAT_00468dfa = 0xb8; DAT_00468e06 = 0; DAT_00468e04 = 1; DAT_00468e00 = 0x126; DAT_00468e02 = 0x93; DAT_00468e0e = 1; DAT_00468e0c = 2; DAT_00468e08 = 0x126; DAT_00468e0a = 0x6a; break; case 0xe: _DAT_0046977a = 5; _DAT_0046977c = 1; DAT_0046978a = 0x32ce; DAT_0046978c = 0x32cf; DAT_0046978e = 0x32d0; DAT_00469790 = 0x32d1; DAT_00469792 = 0x32d2; DAT_00469794 = 0xffff; DAT_004697a8 = 0x32dc; DAT_00468dee = 0; DAT_00468dec = 0; DAT_00468de8 = 0x116; DAT_00468dea = 0xd0; DAT_00468df6 = 0; DAT_00468df4 = 0; DAT_00468df0 = 0xf1; DAT_00468df2 = 0xd0; DAT_00468dfe = 0; DAT_00468dfc = 0; DAT_00468df8 = 0x13b; DAT_00468dfa = 0xd0; DAT_00468e06 = 0; DAT_00468e04 = 1; DAT_00468e00 = 0x160; DAT_00468e02 = 0xbc; DAT_00468e0e = 0; DAT_00468e0c = 1; DAT_00468e08 = 0x160; DAT_00468e0a = 0x97; DAT_00468e16 = 0; DAT_00468e14 = 1; DAT_00468e10 = 0xf1; DAT_00468e12 = 0xab; DAT_00468e1e = 0; DAT_00468e1c = 1; DAT_00468e18 = 0xf1; DAT_00468e1a = 0x86; DAT_00468e26 = 0; DAT_00468e24 = 1; DAT_00468e20 = 0xf1; DAT_00468e22 = 0x61; DAT_00468e2e = 0; DAT_00468e2c = 0; DAT_00468e28 = 0x102; DAT_00468e2a = 0x61; DAT_00468e36 = 0; DAT_00468e34 = 0; DAT_00468e30 = 0x127; DAT_00468e32 = 0x61; DAT_00468e3e = 0; DAT_00468e3c = 0; DAT_00468e38 = 0x14c; DAT_00468e3a = 0x61; DAT_00468e46 = 0; DAT_00468e44 = 1; DAT_00468e40 = 0x160; DAT_00468e42 = 0x72; break; case 0xf: _DAT_0046977a = 6; _DAT_0046977c = 1; DAT_0046978a = 0x32cd; DAT_0046978c = 0x32ce; DAT_0046978e = 0x32cf; DAT_00469790 = 0x32d0; DAT_00469792 = 0x32d1; DAT_00469794 = 0x32d2; _DAT_00469796 = 0xffff; DAT_004697a8 = 0x32cb; DAT_00468dee = 0; DAT_00468dec = 0; DAT_00468de8 = 0x106; DAT_00468dea = 0xa5; DAT_00468df6 = 0; DAT_00468df4 = 1; DAT_00468df0 = 299; DAT_00468df2 = 0x91; DAT_00468dfe = 0; DAT_00468dfc = 0; DAT_00468df8 = 0x13c; DAT_00468dfa = 0x91; DAT_00468e06 = 0; DAT_00468e04 = 1; DAT_00468e00 = 299; DAT_00468e02 = 0xb6; DAT_00468e0e = 0; DAT_00468e0c = 0; DAT_00468e08 = 0x117; DAT_00468e0a = 0xdb; DAT_00468e16 = 1; DAT_00468e14 = 0; DAT_00468e10 = 0x121; DAT_00468e12 = 0x57; DAT_00468e1e = 0; DAT_00468e1c = 0; DAT_00468e18 = 0x121; DAT_00468e1a = 0x46; DAT_00468e26 = 0; DAT_00468e24 = 0; DAT_00468e20 = 0xfc; DAT_00468e22 = 0x57; break; case 0x10: _DAT_0046977a = 6; _DAT_0046977c = 1; DAT_0046978a = 0x32cd; DAT_0046978c = 0x32ce; DAT_0046978e = 0x32cf; DAT_00469790 = 0x32d0; DAT_00469792 = 0x32d1; DAT_00469794 = 0x32d2; _DAT_00469796 = 0xffff; DAT_004697a8 = 0x32cb; DAT_00468dee = 0; DAT_00468dec = 0; DAT_00468de8 = 0x122; DAT_00468dea = 0x8e; DAT_00468df6 = 0; DAT_00468df4 = 0; DAT_00468df0 = 0x122; DAT_00468df2 = 0x9f; DAT_00468dfe = 0; DAT_00468dfc = 0; DAT_00468df8 = 0x122; DAT_00468dfa = 0xb0; DAT_00468e06 = 0; DAT_00468e04 = 0; DAT_00468e00 = 0x122; DAT_00468e02 = 0x7d; DAT_00468e0e = 0; DAT_00468e0c = 0; DAT_00468e08 = 0x122; DAT_00468e0a = 0x6d; DAT_00468e16 = 0; DAT_00468e14 = 0; DAT_00468e10 = 0x122; DAT_00468e12 = 0xc1; DAT_00468e1e = 0; DAT_00468e1c = 0; DAT_00468e18 = 0x134; DAT_00468e1a = 0x5c; DAT_00468e26 = 0; DAT_00468e24 = 0; DAT_00468e20 = 0x10f; DAT_00468e22 = 0x5c; DAT_00468e2e = 0; DAT_00468e2c = 0; DAT_00468e28 = 0x10f; DAT_00468e2a = 0xd2; DAT_00468e36 = 0; DAT_00468e34 = 0; DAT_00468e30 = 0x134; DAT_00468e32 = 0xd2; DAT_00468e3e = 1; DAT_00468e3c = 1; DAT_00468e38 = 0xf8; DAT_00468e3a = 0x8d; DAT_00468e46 = 1; DAT_00468e44 = 3; DAT_00468e40 = 0x147; DAT_00468e42 = 0x8e; break; case 0x11: _DAT_0046977a = 6; _DAT_0046977c = 1; DAT_0046978a = 0x32cd; DAT_0046978c = 0x32ce; DAT_0046978e = 0x32cf; DAT_00469790 = 0x32d0; DAT_00469792 = 0x32d1; DAT_00469794 = 0x32d2; _DAT_00469796 = 0xffff; DAT_004697a8 = 0x32cb; DAT_00468dee = 0; DAT_00468dec = 1; DAT_00468de8 = 0x119; DAT_00468dea = 0x55; DAT_00468df6 = 0; DAT_00468df4 = 1; DAT_00468df0 = 0x12a; DAT_00468df2 = 0x55; DAT_00468dfe = 1; DAT_00468dfc = 1; DAT_00468df8 = 0xef; DAT_00468dfa = 0x55; DAT_00468e06 = 1; DAT_00468e04 = 3; DAT_00468e00 = 0x13b; DAT_00468e02 = 0x55; DAT_00468e0e = 0; DAT_00468e0c = 1; DAT_00468e08 = 0x108; DAT_00468e0a = 0x99; DAT_00468e16 = 0; DAT_00468e14 = 1; DAT_00468e10 = 0x13b; DAT_00468e12 = 0x9a; DAT_00468e1e = 1; DAT_00468e1c = 1; DAT_00468e18 = 0xde; DAT_00468e1a = 0x99; DAT_00468e26 = 1; DAT_00468e24 = 3; DAT_00468e20 = 0x14c; DAT_00468e22 = 0x9a; DAT_00468e2e = 0; DAT_00468e2c = 1; DAT_00468e28 = 0x11a; DAT_00468e2a = 0xdd; DAT_00468e36 = 0; DAT_00468e34 = 1; DAT_00468e30 = 299; DAT_00468e32 = 0xdd; DAT_00468e3e = 1; DAT_00468e3c = 1; DAT_00468e38 = 0xcf; DAT_00468e3a = 0xdd; DAT_00468e46 = 1; DAT_00468e44 = 3; DAT_00468e40 = 0x15e; DAT_00468e42 = 0xdd; break; case 0x12: _DAT_0046977a = 5; _DAT_0046977c = 1; DAT_0046978a = 0x32ce; DAT_0046978c = 0x32cf; DAT_0046978e = 0x32d0; DAT_00469790 = 0x32d1; DAT_00469792 = 0x32d2; DAT_00469794 = 0xffff; DAT_004697a8 = 0x32dc; DAT_00468dee = 0; DAT_00468dec = 0; DAT_00468de8 = 0x116; DAT_00468dea = 0x9b; DAT_00468df6 = 0; DAT_00468df4 = 1; DAT_00468df0 = 0x118; DAT_00468df2 = 0x76; DAT_00468dfe = 0; DAT_00468dfc = 1; DAT_00468df8 = 0x128; DAT_00468dfa = 0x76; DAT_00468e06 = 0; DAT_00468e04 = 0; DAT_00468e00 = 0x116; DAT_00468e02 = 0x65; DAT_00468e0e = 0; DAT_00468e0c = 0; DAT_00468e08 = 0x105; DAT_00468e0a = 0x54; DAT_00468e16 = 0; DAT_00468e14 = 0; DAT_00468e10 = 0x12a; DAT_00468e12 = 0x54; DAT_00468e1e = 0; DAT_00468e1c = 0; DAT_00468e18 = 0x116; DAT_00468e1a = 0x43; DAT_00468e26 = 0; DAT_00468e24 = 0; DAT_00468e20 = 0x104; DAT_00468e22 = 0xac; DAT_00468e2e = 0; DAT_00468e2c = 0; DAT_00468e28 = 0x129; DAT_00468e2a = 0xac; DAT_00468e36 = 0; DAT_00468e34 = 0; DAT_00468e30 = 0xf1; DAT_00468e32 = 0x9b; DAT_00468e3e = 0; DAT_00468e3c = 0; DAT_00468e38 = 0x13b; DAT_00468e3a = 0x9b; DAT_00468e46 = 0; DAT_00468e44 = 1; DAT_00468e40 = 0xe0; DAT_00468e42 = 0x87; DAT_00468e4e = 0; DAT_00468e4c = 1; DAT_00468e48 = 0xe0; DAT_00468e4a = 0x62; DAT_00468e56 = 0; DAT_00468e54 = 1; DAT_00468e50 = 0x160; DAT_00468e52 = 0x9b; DAT_00468e5e = 0; DAT_00468e5c = 1; DAT_00468e58 = 0x160; DAT_00468e5a = 0xc0; DAT_00468e66 = 0; DAT_00468e64 = 0; DAT_00468e60 = 0x104; DAT_00468e62 = 0xbd; DAT_00468e6e = 0; DAT_00468e6c = 0; DAT_00468e68 = 0x104; DAT_00468e6a = 0xce; DAT_00468e76 = 0; DAT_00468e74 = 0; DAT_00468e70 = 0x104; DAT_00468e72 = 0xdf; DAT_00468e7e = 0; DAT_00468e7c = 0; DAT_00468e78 = 0x129; DAT_00468e7a = 0xbd; DAT_00468e86 = 0; DAT_00468e84 = 0; DAT_00468e80 = 0x129; DAT_00468e82 = 0xce; DAT_00468e8e = 0; DAT_00468e8c = 0; DAT_00468e88 = 0x129; DAT_00468e8a = 0xdf; break; case 0x13: _DAT_0046977a = 6; _DAT_0046977c = 1; DAT_0046978a = 0x32cd; DAT_0046978c = 0x32ce; DAT_0046978e = 0x32cf; DAT_00469790 = 0x32d0; DAT_00469792 = 0x32d1; DAT_00469794 = 0x32d2; _DAT_00469796 = 0xffff; DAT_004697a8 = 0x32cb; DAT_00468dee = 0; DAT_00468dec = 0; DAT_00468de8 = 0x106; DAT_00468dea = 0x93; DAT_00468df6 = 0; DAT_00468df4 = 0; DAT_00468df0 = 299; DAT_00468df2 = 0x93; DAT_00468dfe = 0; DAT_00468dfc = 0; DAT_00468df8 = 0x106; DAT_00468dfa = 0xa4; DAT_00468e06 = 0; DAT_00468e04 = 0; DAT_00468e00 = 299; DAT_00468e02 = 0xa4; DAT_00468e0e = 0; DAT_00468e0c = 0; DAT_00468e08 = 0x106; DAT_00468e0a = 0xb5; DAT_00468e16 = 0; DAT_00468e14 = 0; DAT_00468e10 = 299; DAT_00468e12 = 0xb5; DAT_00468e1e = 0; DAT_00468e1c = 0; DAT_00468e18 = 0x106; DAT_00468e1a = 0xc6; DAT_00468e26 = 0; DAT_00468e24 = 0; DAT_00468e20 = 299; DAT_00468e22 = 0xc6; DAT_00468e2e = 0; DAT_00468e2c = 1; DAT_00468e28 = 0x106; DAT_00468e2a = 0xd7; DAT_00468e36 = 0; DAT_00468e34 = 1; DAT_00468e30 = 0x13f; DAT_00468e32 = 0xd7; DAT_00468e3e = 0; DAT_00468e3c = 0; DAT_00468e38 = 200; DAT_00468e3a = 0x93; DAT_00468e46 = 0; DAT_00468e44 = 0; DAT_00468e40 = 0x169; DAT_00468e42 = 0x93; DAT_00468e4e = 1; DAT_00468e4c = 0; DAT_00468e48 = 0x118; DAT_00468e4a = 0x58; DAT_00468e56 = 0; DAT_00468e54 = 0; DAT_00468e50 = 0x118; DAT_00468e52 = 0x47; break; case 0x14: _DAT_0046977a = 5; _DAT_0046977c = 1; DAT_0046978a = 0x32ce; DAT_0046978c = 0x32cf; DAT_0046978e = 0x32d0; DAT_00469790 = 0x32d1; DAT_00469792 = 0x32d2; DAT_00469794 = 0xffff; DAT_004697a8 = 0x32dc; DAT_00468dee = 0; DAT_00468dec = 0; DAT_00468de8 = 0x11f; DAT_00468dea = 0x9c; DAT_00468df6 = 0; DAT_00468df4 = 0; DAT_00468df0 = 0x10c; DAT_00468df2 = 0x6a; DAT_00468dfe = 0; DAT_00468dfc = 0; DAT_00468df8 = 0x131; DAT_00468dfa = 0x6a; DAT_00468e06 = 0; DAT_00468e04 = 0; DAT_00468e00 = 0x10c; DAT_00468e02 = 0xce; DAT_00468e0e = 0; DAT_00468e0c = 0; DAT_00468e08 = 0x131; DAT_00468e0a = 0xce; DAT_00468e16 = 0; DAT_00468e14 = 0; DAT_00468e10 = 0xf9; DAT_00468e12 = 0xdf; DAT_00468e1e = 0; DAT_00468e1c = 0; DAT_00468e18 = 0xe7; DAT_00468e1a = 0xf0; DAT_00468e26 = 0; DAT_00468e24 = 0; DAT_00468e20 = 0x144; DAT_00468e22 = 0xdf; DAT_00468e2e = 0; DAT_00468e2c = 0; DAT_00468e28 = 0x156; DAT_00468e2a = 0xf0; DAT_00468e36 = 0; DAT_00468e34 = 0; DAT_00468e30 = 0xf9; DAT_00468e32 = 0x59; DAT_00468e3e = 0; DAT_00468e3c = 0; DAT_00468e38 = 0xe7; DAT_00468e3a = 0x48; DAT_00468e46 = 0; DAT_00468e44 = 0; DAT_00468e40 = 0x144; DAT_00468e42 = 0x59; DAT_00468e4e = 0; DAT_00468e4c = 0; DAT_00468e48 = 0x156; DAT_00468e4a = 0x48; break; case 0x15: _DAT_0046977a = 6; _DAT_0046977c = 1; DAT_0046978a = 0x32cd; DAT_0046978c = 0x32ce; DAT_0046978e = 0x32cf; DAT_00469790 = 0x32d0; DAT_00469792 = 0x32d1; DAT_00469794 = 0x32d2; _DAT_00469796 = 0xffff; DAT_004697a8 = 0x32cb; DAT_00468dee = 1; DAT_00468dec = 0; DAT_00468de8 = 0x11a; DAT_00468dea = 0xd0; DAT_00468df6 = 0; DAT_00468df4 = 0; DAT_00468df0 = 0x11a; DAT_00468df2 = 0xbf; DAT_00468dfe = 0; DAT_00468dfc = 0; DAT_00468df8 = 0xf5; DAT_00468dfa = 0xbf; DAT_00468e06 = 0; DAT_00468e04 = 0; DAT_00468e00 = 0x13f; DAT_00468e02 = 0xbf; DAT_00468e0e = 0; DAT_00468e0c = 1; DAT_00468e08 = 0xe5; DAT_00468e0a = 0xab; DAT_00468e16 = 0; DAT_00468e14 = 1; DAT_00468e10 = 0x164; DAT_00468e12 = 0xab; DAT_00468e1e = 0; DAT_00468e1c = 1; DAT_00468e18 = 0xe5; DAT_00468e1a = 0x86; DAT_00468e26 = 0; DAT_00468e24 = 1; DAT_00468e20 = 0xe5; DAT_00468e22 = 0x61; DAT_00468e2e = 0; DAT_00468e2c = 1; DAT_00468e28 = 0x164; DAT_00468e2a = 0x86; DAT_00468e36 = 0; DAT_00468e34 = 1; DAT_00468e30 = 0x164; DAT_00468e32 = 0x61; DAT_00468e3e = 0; DAT_00468e3c = 0; DAT_00468e38 = 0xf6; DAT_00468e3a = 0x61; DAT_00468e46 = 0; DAT_00468e44 = 0; DAT_00468e40 = 0x11b; DAT_00468e42 = 0x61; DAT_00468e4e = 0; DAT_00468e4c = 0; DAT_00468e48 = 0x140; DAT_00468e4a = 0x61; DAT_00468e56 = 1; DAT_00468e54 = 2; DAT_00468e50 = 0x11a; DAT_00468e52 = 0x37; DAT_00468e5e = 1; DAT_00468e5c = 1; DAT_00468e58 = 0x13a; DAT_00468e5a = 0x86; DAT_00468e66 = 1; DAT_00468e64 = 3; DAT_00468e60 = 0xf6; DAT_00468e62 = 0x86; DAT_00468e6e = 1; DAT_00468e6c = 3; DAT_00468e68 = 0x175; DAT_00468e6a = 0x86; break; case 0x16: _DAT_0046977a = 6; _DAT_0046977c = 1; DAT_0046978a = 0x32cd; DAT_0046978c = 0x32ce; DAT_0046978e = 0x32cf; DAT_00469790 = 0x32d0; DAT_00469792 = 0x32d1; DAT_00469794 = 0x32d2; _DAT_00469796 = 0xffff; DAT_004697a8 = 0x32cb; DAT_00468dee = 0; DAT_00468dec = 0; DAT_00468de8 = 0x105; DAT_00468dea = 0x96; DAT_00468df6 = 0; DAT_00468df4 = 0; DAT_00468df0 = 0x12a; DAT_00468df2 = 0x96; DAT_00468dfe = 1; DAT_00468dfc = 1; DAT_00468df8 = 0xdb; DAT_00468dfa = 0x82; DAT_00468e06 = 1; DAT_00468e04 = 3; DAT_00468e00 = 0x105; DAT_00468e02 = 0x6e; DAT_00468e0e = 0; DAT_00468e0c = 0; DAT_00468e08 = 0xe0; DAT_00468e0a = 0x6e; DAT_00468e16 = 0; DAT_00468e14 = 0; DAT_00468e10 = 0xbc; DAT_00468e12 = 0x6e; DAT_00468e1e = 1; DAT_00468e1c = 1; DAT_00468e18 = 0x92; DAT_00468e1a = 0x5a; DAT_00468e26 = 1; DAT_00468e24 = 3; DAT_00468e20 = 0x14f; DAT_00468e22 = 0x96; DAT_00468e2e = 1; DAT_00468e2c = 1; DAT_00468e28 = 0x125; DAT_00468e2a = 0xaa; DAT_00468e36 = 0; DAT_00468e34 = 0; DAT_00468e30 = 0x14f; DAT_00468e32 = 0xbe; DAT_00468e3e = 0; DAT_00468e3c = 0; DAT_00468e38 = 0x174; DAT_00468e3a = 0xbe; DAT_00468e46 = 1; DAT_00468e44 = 3; DAT_00468e40 = 0x199; DAT_00468e42 = 0xbe; DAT_00468e4e = 1; DAT_00468e4c = 1; DAT_00468e48 = 0x92; DAT_00468e4a = 0xbe; DAT_00468e56 = 1; DAT_00468e54 = 3; DAT_00468e50 = 0xbc; DAT_00468e52 = 0xbe; DAT_00468e5e = 1; DAT_00468e5c = 3; DAT_00468e58 = 0x199; DAT_00468e5a = 0x5a; DAT_00468e66 = 1; DAT_00468e64 = 1; DAT_00468e60 = 0x16f; DAT_00468e62 = 0x5a; break; case 0x17: _DAT_0046977a = 5; _DAT_0046977c = 1; DAT_0046978a = 0x32ce; DAT_0046978c = 0x32cf; DAT_0046978e = 0x32d0; DAT_00469790 = 0x32d1; DAT_00469792 = 0x32d2; DAT_00469794 = 0xffff; DAT_004697a8 = 0x32dc; DAT_00468dee = 0; DAT_00468dec = 1; DAT_00468de8 = 299; DAT_00468dea = 0x78; DAT_00468df6 = 0; DAT_00468df4 = 1; DAT_00468df0 = 299; DAT_00468df2 = 0x53; DAT_00468dfe = 1; DAT_00468dfc = 1; DAT_00468df8 = 0x101; DAT_00468dfa = 0x53; DAT_00468e06 = 1; DAT_00468e04 = 3; DAT_00468e00 = 0x13c; DAT_00468e02 = 0x53; DAT_00468e0e = 0; DAT_00468e0c = 1; DAT_00468e08 = 299; DAT_00468e0a = 0x9d; DAT_00468e16 = 0; DAT_00468e14 = 1; DAT_00468e10 = 0x11a; DAT_00468e12 = 0xd4; DAT_00468e1e = 0; DAT_00468e1c = 1; DAT_00468e18 = 299; DAT_00468e1a = 0xc2; DAT_00468e26 = 0; DAT_00468e24 = 1; DAT_00468e20 = 0x109; DAT_00468e22 = 0xe7; DAT_00468e2e = 0; DAT_00468e2c = 1; DAT_00468e28 = 0x13c; DAT_00468e2a = 0xd4; DAT_00468e36 = 0; DAT_00468e34 = 1; DAT_00468e30 = 0x14d; DAT_00468e32 = 0xe7; DAT_00468e3e = 0; DAT_00468e3c = 0; DAT_00468e38 = 0x106; DAT_00468e3a = 0x9d; DAT_00468e46 = 0; DAT_00468e44 = 0; DAT_00468e40 = 0x13c; DAT_00468e42 = 0x9d; DAT_00468e4e = 1; DAT_00468e4c = 1; DAT_00468e48 = 0xdc; DAT_00468e4a = 0x89; DAT_00468e56 = 1; DAT_00468e54 = 3; DAT_00468e50 = 0x161; DAT_00468e52 = 0x9d; break; case 0x18: _DAT_0046977a = 6; _DAT_0046977c = 1; DAT_0046978a = 0x32cd; DAT_0046978c = 0x32ce; DAT_0046978e = 0x32cf; DAT_00469790 = 0x32d0; DAT_00469792 = 0x32d1; DAT_00469794 = 0x32d2; _DAT_00469796 = 0xffff; DAT_004697a8 = 0x32cb; DAT_00468dee = 0; DAT_00468dec = 0; DAT_00468de8 = 0xff; DAT_00468dea = 0xb2; DAT_00468df6 = 0; DAT_00468df4 = 0; DAT_00468df0 = 0x124; DAT_00468df2 = 0xb2; DAT_00468dfe = 0; DAT_00468dfc = 1; DAT_00468df8 = 0xee; DAT_00468dfa = 0xb2; DAT_00468e06 = 0; DAT_00468e04 = 0; DAT_00468e00 = 0x149; DAT_00468e02 = 0xb2; DAT_00468e0e = 0; DAT_00468e0c = 1; DAT_00468e08 = 0x16e; DAT_00468e0a = 0xb2; DAT_00468e16 = 1; DAT_00468e14 = 3; DAT_00468e10 = 0xee; DAT_00468e12 = 0xd7; DAT_00468e1e = 1; DAT_00468e1c = 3; DAT_00468e18 = 0x16e; DAT_00468e1a = 0xd7; DAT_00468e26 = 1; DAT_00468e24 = 1; DAT_00468e20 = 0xc5; DAT_00468e22 = 0xd7; DAT_00468e2e = 1; DAT_00468e2c = 1; DAT_00468e28 = 0x144; DAT_00468e2a = 0xd7; DAT_00468e36 = 0; DAT_00468e34 = 1; DAT_00468e30 = 0xff; DAT_00468e32 = 0x8d; DAT_00468e3e = 0; DAT_00468e3c = 1; DAT_00468e38 = 0xff; DAT_00468e3a = 0x68; DAT_00468e46 = 0; DAT_00468e44 = 0; DAT_00468e40 = 0xeb; DAT_00468e42 = 0x57; DAT_00468e4e = 0; DAT_00468e4c = 0; DAT_00468e48 = 0xc6; DAT_00468e4a = 0x57; DAT_00468e56 = 0; DAT_00468e54 = 0; DAT_00468e50 = 0xa1; DAT_00468e52 = 0x57; DAT_00468e5e = 0; DAT_00468e5c = 1; DAT_00468e58 = 0xa1; DAT_00468e5a = 0x68; DAT_00468e66 = 1; DAT_00468e64 = 3; DAT_00468e60 = 0xa1; DAT_00468e62 = 0x8d; DAT_00468e6e = 0; DAT_00468e6c = 1; DAT_00468e68 = 0x16e; DAT_00468e6a = 0x8d; DAT_00468e76 = 0; DAT_00468e74 = 0; DAT_00468e70 = 0x15a; DAT_00468e72 = 0x7c; DAT_00468e7e = 0; DAT_00468e7c = 0; DAT_00468e78 = 0x135; DAT_00468e7a = 0x7c; DAT_00468e86 = 0; DAT_00468e84 = 1; DAT_00468e80 = 0x135; DAT_00468e82 = 0x8d; break; case 0x19: _DAT_0046977a = 6; _DAT_0046977c = 1; DAT_0046978a = 0x32cd; DAT_0046978c = 0x32ce; DAT_0046978e = 0x32cf; DAT_00469790 = 0x32d0; DAT_00469792 = 0x32d1; DAT_00469794 = 0x32d2; _DAT_00469796 = 0xffff; DAT_004697a8 = 0x32cb; DAT_00468dee = 1; DAT_00468dec = 2; DAT_00468de8 = 0x11c; DAT_00468dea = 0x8c; DAT_00468df6 = 1; DAT_00468df4 = 0; DAT_00468df0 = 0x108; DAT_00468df2 = 0xb6; DAT_00468dfe = 1; DAT_00468dfc = 0; DAT_00468df8 = 0x130; DAT_00468dfa = 0xb6; DAT_00468e06 = 1; DAT_00468e04 = 2; DAT_00468e00 = 0xf4; DAT_00468e02 = 0x68; DAT_00468e0e = 1; DAT_00468e0c = 0; DAT_00468e08 = 0xe0; DAT_00468e0a = 0x92; DAT_00468e16 = 1; DAT_00468e14 = 2; DAT_00468e10 = 0x145; DAT_00468e12 = 0x67; DAT_00468e1e = 1; DAT_00468e1c = 0; DAT_00468e18 = 0x159; DAT_00468e1a = 0x91; break; case 0x1a: _DAT_0046977a = 6; _DAT_0046977c = 1; DAT_0046978a = 0x32cd; DAT_0046978c = 0x32ce; DAT_0046978e = 0x32cf; DAT_00469790 = 0x32d0; DAT_00469792 = 0x32d1; DAT_00469794 = 0x32d2; _DAT_00469796 = 0xffff; DAT_004697a8 = 0x32cb; DAT_00468dee = 0; DAT_00468dec = 0; DAT_00468de8 = 0x145; DAT_00468dea = 0xde; DAT_00468df6 = 0; DAT_00468df4 = 0; DAT_00468df0 = 0x16a; DAT_00468df2 = 0xde; DAT_00468dfe = 0; DAT_00468dfc = 0; DAT_00468df8 = 0xd6; DAT_00468dfa = 0xde; DAT_00468e06 = 0; DAT_00468e04 = 0; DAT_00468e00 = 0xfb; DAT_00468e02 = 0xde; DAT_00468e0e = 0; DAT_00468e0c = 0; DAT_00468e08 = 0x120; DAT_00468e0a = 0xde; DAT_00468e16 = 1; DAT_00468e14 = 2; DAT_00468e10 = 0xc2; DAT_00468e12 = 0xb4; DAT_00468e1e = 1; DAT_00468e1c = 2; DAT_00468e18 = 0x17e; DAT_00468e1a = 0xb4; DAT_00468e26 = 1; DAT_00468e24 = 0; DAT_00468e20 = 0xae; DAT_00468e22 = 0xde; DAT_00468e2e = 1; DAT_00468e2c = 0; DAT_00468e28 = 0x192; DAT_00468e2a = 0xde; DAT_00468e36 = 0; DAT_00468e34 = 1; DAT_00468e30 = 0xae; DAT_00468e32 = 0xb9; DAT_00468e3e = 0; DAT_00468e3c = 1; DAT_00468e38 = 0xae; DAT_00468e3a = 0x94; DAT_00468e46 = 0; DAT_00468e44 = 1; DAT_00468e40 = 0xae; DAT_00468e42 = 0x6f; DAT_00468e4e = 1; DAT_00468e4c = 2; DAT_00468e48 = 0xae; DAT_00468e4a = 0x45; DAT_00468e56 = 1; DAT_00468e54 = 0; DAT_00468e50 = 0xc2; DAT_00468e52 = 0x6f; DAT_00468e5e = 0; DAT_00468e5c = 0; DAT_00468e58 = 0xd6; DAT_00468e5a = 0x5e; DAT_00468e66 = 0; DAT_00468e64 = 0; DAT_00468e60 = 0xfb; DAT_00468e62 = 0x5e; DAT_00468e6e = 0; DAT_00468e6c = 0; DAT_00468e68 = 0x120; DAT_00468e6a = 0x5e; DAT_00468e76 = 0; DAT_00468e74 = 0; DAT_00468e70 = 0x145; DAT_00468e72 = 0x5e; DAT_00468e7e = 0; DAT_00468e7c = 0; DAT_00468e78 = 0x16a; DAT_00468e7a = 0x5e; DAT_00468e86 = 1; DAT_00468e84 = 0; DAT_00468e80 = 0x17e; DAT_00468e82 = 0x6f; DAT_00468e8e = 1; DAT_00468e8c = 2; DAT_00468e88 = 0x192; DAT_00468e8a = 0x45; DAT_00468e96 = 0; DAT_00468e94 = 1; DAT_00468e90 = 0x1a6; DAT_00468e92 = 0x6f; DAT_00468e9e = 0; DAT_00468e9c = 1; DAT_00468e98 = 0x1a6; DAT_00468e9a = 0x94; DAT_00468ea6 = 0; DAT_00468ea4 = 1; DAT_00468ea0 = 0x1a6; DAT_00468ea2 = 0xb9; break; case 0x1b: _DAT_0046977a = 6; _DAT_0046977c = 1; DAT_0046978a = 0x32cd; DAT_0046978c = 0x32ce; DAT_0046978e = 0x32cf; DAT_00469790 = 0x32d0; DAT_00469792 = 0x32d1; DAT_00469794 = 0x32d2; _DAT_00469796 = 0xffff; DAT_004697a8 = 0x32cb; DAT_00468dee = 1; DAT_00468dec = 0; DAT_00468de8 = 0x114; DAT_00468dea = 0x5c; DAT_00468df6 = 0; DAT_00468df4 = 0; DAT_00468df0 = 0x114; DAT_00468df2 = 0x4b; DAT_00468dfe = 0; DAT_00468dfc = 0; DAT_00468df8 = 0xef; DAT_00468dfa = 0x4b; DAT_00468e06 = 0; DAT_00468e04 = 0; DAT_00468e00 = 0xca; DAT_00468e02 = 0x4b; DAT_00468e0e = 0; DAT_00468e0c = 0; DAT_00468e08 = 0x139; DAT_00468e0a = 0x4b; DAT_00468e16 = 0; DAT_00468e14 = 0; DAT_00468e10 = 0x15e; DAT_00468e12 = 0x4b; DAT_00468e1e = 1; DAT_00468e1c = 1; DAT_00468e18 = 0x82; DAT_00468e1a = 0x4b; DAT_00468e26 = 1; DAT_00468e24 = 3; DAT_00468e20 = 0x1a1; DAT_00468e22 = 0x4b; DAT_00468e2e = 1; DAT_00468e2c = 3; DAT_00468e28 = 0xac; DAT_00468e2a = 0x5f; DAT_00468e36 = 1; DAT_00468e34 = 1; DAT_00468e30 = 0x177; DAT_00468e32 = 0x5f; DAT_00468e3e = 0; DAT_00468e3c = 1; DAT_00468e38 = 0x7d; DAT_00468e3a = 0x73; DAT_00468e46 = 0; DAT_00468e44 = 1; DAT_00468e40 = 0x7d; DAT_00468e42 = 0x98; DAT_00468e4e = 0; DAT_00468e4c = 1; DAT_00468e48 = 0x1bf; DAT_00468e4a = 0x73; DAT_00468e56 = 0; DAT_00468e54 = 1; DAT_00468e50 = 0x1bf; DAT_00468e52 = 0x98; DAT_00468e5e = 1; DAT_00468e5c = 3; DAT_00468e58 = 0xac; DAT_00468e5a = 0xab; DAT_00468e66 = 1; DAT_00468e64 = 1; DAT_00468e60 = 0x82; DAT_00468e62 = 0xbf; DAT_00468e6e = 0; DAT_00468e6c = 0; DAT_00468e68 = 0xca; DAT_00468e6a = 0xd2; DAT_00468e76 = 0; DAT_00468e74 = 0; DAT_00468e70 = 0xef; DAT_00468e72 = 0xd2; DAT_00468e7e = 0; DAT_00468e7c = 0; DAT_00468e78 = 0x114; DAT_00468e7a = 0xd2; DAT_00468e86 = 0; DAT_00468e84 = 0; DAT_00468e80 = 0x139; DAT_00468e82 = 0xd2; DAT_00468e8e = 0; DAT_00468e8c = 0; DAT_00468e88 = 0x15e; DAT_00468e8a = 0xd2; DAT_00468e96 = 1; DAT_00468e94 = 1; DAT_00468e90 = 0x177; DAT_00468e92 = 0xab; DAT_00468e9e = 1; DAT_00468e9c = 3; DAT_00468e98 = 0x1a1; DAT_00468e9a = 0xbf; break; case 0x1c: _DAT_0046977a = 6; _DAT_0046977c = 1; DAT_0046978a = 0x32cd; DAT_0046978c = 0x32ce; DAT_0046978e = 0x32cf; DAT_00469790 = 0x32d0; DAT_00469792 = 0x32d1; DAT_00469794 = 0x32d2; _DAT_00469796 = 0xffff; DAT_004697a8 = 0x32cb; DAT_00468dee = 0; DAT_00468dec = 0; DAT_00468de8 = 0x118; DAT_00468dea = 0x69; DAT_00468df6 = 0; DAT_00468df4 = 0; DAT_00468df0 = 0x107; DAT_00468df2 = 0x7a; DAT_00468dfe = 0; DAT_00468dfc = 0; DAT_00468df8 = 300; DAT_00468dfa = 0x7a; DAT_00468e06 = 1; DAT_00468e04 = 0; DAT_00468e00 = 0xf3; DAT_00468e02 = 0x8a; DAT_00468e0e = 1; DAT_00468e0c = 0; DAT_00468e08 = 0x140; DAT_00468e0a = 0x8b; DAT_00468e16 = 1; DAT_00468e14 = 2; DAT_00468e10 = 0xdf; DAT_00468e12 = 0x60; DAT_00468e1e = 1; DAT_00468e1c = 2; DAT_00468e18 = 0x154; DAT_00468e1a = 0x61; DAT_00468e26 = 0; DAT_00468e24 = 1; DAT_00468e20 = 0xdf; DAT_00468e22 = 0x8a; DAT_00468e2e = 0; DAT_00468e2c = 1; DAT_00468e28 = 0xdf; DAT_00468e2a = 0xaf; DAT_00468e36 = 1; DAT_00468e34 = 0; DAT_00468e30 = 0xcb; DAT_00468e32 = 0xd4; DAT_00468e3e = 1; DAT_00468e3c = 0; DAT_00468e38 = 0xf0; DAT_00468e3a = 0xd4; DAT_00468e46 = 1; DAT_00468e44 = 0; DAT_00468e40 = 0xa6; DAT_00468e42 = 0xd4; DAT_00468e4e = 0; DAT_00468e4c = 1; DAT_00468e48 = 0xa6; DAT_00468e4a = 0xaf; DAT_00468e56 = 0; DAT_00468e54 = 1; DAT_00468e50 = 0xa6; DAT_00468e52 = 0x8a; DAT_00468e5e = 0; DAT_00468e5c = 0; DAT_00468e58 = 0x92; DAT_00468e5a = 0x79; DAT_00468e66 = 0; DAT_00468e64 = 1; DAT_00468e60 = 0x168; DAT_00468e62 = 0x8b; DAT_00468e6e = 0; DAT_00468e6c = 1; DAT_00468e68 = 0x168; DAT_00468e6a = 0xb0; DAT_00468e76 = 1; DAT_00468e74 = 0; DAT_00468e70 = 0x168; DAT_00468e72 = 0xd5; DAT_00468e7e = 1; DAT_00468e7c = 0; DAT_00468e78 = 0x18d; DAT_00468e7a = 0xd5; DAT_00468e86 = 1; DAT_00468e84 = 0; DAT_00468e80 = 0x143; DAT_00468e82 = 0xd5; DAT_00468e8e = 0; DAT_00468e8c = 1; DAT_00468e88 = 0x1a1; DAT_00468e8a = 0xb0; DAT_00468e96 = 0; DAT_00468e94 = 1; DAT_00468e90 = 0x1a1; DAT_00468e92 = 0x8b; DAT_00468e9e = 0; DAT_00468e9c = 0; DAT_00468e98 = 0x1a1; DAT_00468e9a = 0x7a; break; case 0x1d: _DAT_0046977a = 6; _DAT_0046977c = 1; DAT_0046978a = 0x32cd; DAT_0046978c = 0x32ce; DAT_0046978e = 0x32cf; DAT_00469790 = 0x32d0; DAT_00469792 = 0x32d1; DAT_00469794 = 0x32d2; _DAT_00469796 = 0xffff; DAT_004697a8 = 0x32cb; DAT_00468dee = 1; DAT_00468dec = 2; DAT_00468de8 = 0x116; DAT_00468dea = 0x8a; DAT_00468df6 = 0; DAT_00468df4 = 0; DAT_00468df0 = 0x116; DAT_00468df2 = 0xb4; DAT_00468dfe = 0; DAT_00468dfc = 1; DAT_00468df8 = 0x118; DAT_00468dfa = 0xc5; DAT_00468e06 = 0; DAT_00468e04 = 1; DAT_00468e00 = 0x129; DAT_00468e02 = 0xc5; DAT_00468e0e = 0; DAT_00468e0c = 0; DAT_00468e08 = 0xf3; DAT_00468e0a = 0xd9; DAT_00468e16 = 0; DAT_00468e14 = 0; DAT_00468e10 = 0x13a; DAT_00468e12 = 0xd9; DAT_00468e1e = 0; DAT_00468e1c = 0; DAT_00468e18 = 0xce; DAT_00468e1a = 0xd9; DAT_00468e26 = 0; DAT_00468e24 = 0; DAT_00468e20 = 0x15f; DAT_00468e22 = 0xd9; DAT_00468e2e = 1; DAT_00468e2c = 1; DAT_00468e28 = 0xa5; DAT_00468e2a = 0xc5; DAT_00468e36 = 0; DAT_00468e34 = 1; DAT_00468e30 = 0xcf; DAT_00468e32 = 0xb1; DAT_00468e3e = 1; DAT_00468e3c = 3; DAT_00468e38 = 0x184; DAT_00468e3a = 0xc5; DAT_00468e46 = 0; DAT_00468e44 = 1; DAT_00468e40 = 0x173; DAT_00468e42 = 0xb1; DAT_00468e4e = 0; DAT_00468e4c = 1; DAT_00468e48 = 0xcf; DAT_00468e4a = 0x8c; DAT_00468e56 = 0; DAT_00468e54 = 1; DAT_00468e50 = 0x173; DAT_00468e52 = 0x8c; DAT_00468e5e = 0; DAT_00468e5c = 1; DAT_00468e58 = 0xcf; DAT_00468e5a = 0x67; DAT_00468e66 = 0; DAT_00468e64 = 1; DAT_00468e60 = 0x173; DAT_00468e62 = 0x67; DAT_00468e6e = 1; DAT_00468e6c = 1; DAT_00468e68 = 0xa5; DAT_00468e6a = 0x53; DAT_00468e76 = 1; DAT_00468e74 = 3; DAT_00468e70 = 0x184; DAT_00468e72 = 0x53; DAT_00468e7e = 0; DAT_00468e7c = 0; DAT_00468e78 = 0xcf; DAT_00468e7a = 0x53; DAT_00468e86 = 0; DAT_00468e84 = 0; DAT_00468e80 = 0xf4; DAT_00468e82 = 0x53; DAT_00468e8e = 0; DAT_00468e8c = 0; DAT_00468e88 = 0x15f; DAT_00468e8a = 0x53; DAT_00468e96 = 0; DAT_00468e94 = 0; DAT_00468e90 = 0x13a; DAT_00468e92 = 0x53; DAT_00468e9e = 0; DAT_00468e9c = 1; DAT_00468e98 = 0x119; DAT_00468e9a = 0x53; DAT_00468ea6 = 0; DAT_00468ea4 = 1; DAT_00468ea0 = 0x12a; DAT_00468ea2 = 0x53; DAT_00468eae = 0; DAT_00468eac = 0; DAT_00468ea8 = 0x117; DAT_00468eaa = 0x78; break; case 0x1e: _DAT_0046977a = 6; _DAT_0046977c = 1; DAT_0046978a = 0x32cd; DAT_0046978c = 0x32ce; DAT_0046978e = 0x32cf; DAT_00469790 = 0x32d0; DAT_00469792 = 0x32d1; DAT_00469794 = 0x32d2; _DAT_00469796 = 0xffff; DAT_004697a8 = 0x32cb; DAT_00468dee = 1; DAT_00468dec = 2; DAT_00468de8 = 0x105; DAT_00468dea = 0xae; DAT_00468df6 = 1; DAT_00468df4 = 2; DAT_00468df0 = 0x12a; DAT_00468df2 = 0xae; DAT_00468dfe = 1; DAT_00468dfc = 0; DAT_00468df8 = 0x105; DAT_00468dfa = 0xd8; DAT_00468e06 = 1; DAT_00468e04 = 0; DAT_00468e00 = 0x12a; DAT_00468e02 = 0xd8; DAT_00468e0e = 0; DAT_00468e0c = 1; DAT_00468e08 = 0xf4; DAT_00468e0a = 199; DAT_00468e16 = 0; DAT_00468e14 = 1; DAT_00468e10 = 0xe3; DAT_00468e12 = 199; DAT_00468e1e = 0; DAT_00468e1c = 1; DAT_00468e18 = 0x14f; DAT_00468e1a = 199; DAT_00468e26 = 0; DAT_00468e24 = 1; DAT_00468e20 = 0x160; DAT_00468e22 = 199; DAT_00468e2e = 0; DAT_00468e2c = 0; DAT_00468e28 = 0xcf; DAT_00468e2a = 0xb6; DAT_00468e36 = 0; DAT_00468e34 = 0; DAT_00468e30 = 0x15f; DAT_00468e32 = 0xb6; DAT_00468e3e = 1; DAT_00468e3c = 1; DAT_00468e38 = 0xb9; DAT_00468e3a = 0x91; DAT_00468e46 = 0; DAT_00468e44 = 0; DAT_00468e40 = 0xce; DAT_00468e42 = 0x80; DAT_00468e4e = 0; DAT_00468e4c = 1; DAT_00468e48 = 0xe2; DAT_00468e4a = 0x5b; DAT_00468e56 = 0; DAT_00468e54 = 1; DAT_00468e50 = 0xf3; DAT_00468e52 = 0x5b; DAT_00468e5e = 1; DAT_00468e5c = 0; DAT_00468e58 = 0x104; DAT_00468e5a = 0x6d; DAT_00468e66 = 1; DAT_00468e64 = 0; DAT_00468e60 = 0x129; DAT_00468e62 = 0x6d; DAT_00468e6e = 1; DAT_00468e6c = 2; DAT_00468e68 = 0x104; DAT_00468e6a = 0x43; DAT_00468e76 = 1; DAT_00468e74 = 2; DAT_00468e70 = 0x129; DAT_00468e72 = 0x43; DAT_00468e7e = 0; DAT_00468e7c = 1; DAT_00468e78 = 0x14e; DAT_00468e7a = 0x5b; DAT_00468e86 = 0; DAT_00468e84 = 1; DAT_00468e80 = 0x15f; DAT_00468e82 = 0x5b; DAT_00468e8e = 0; DAT_00468e8c = 0; DAT_00468e88 = 0x15f; DAT_00468e8a = 0x80; DAT_00468e96 = 1; DAT_00468e94 = 3; DAT_00468e90 = 0x170; DAT_00468e92 = 0x91; } DAT_0046977e = 13000; DAT_00469780 = 0x32d9; DAT_00469770 = Resource::Load(13000,&_TEXT26); return; } void FUN_00438db6(void) { undefined4 extraout_ECX; undefined4 extraout_EDX; short unaff_BX; short in_stack_00000004; DAT_00468f30 = in_stack_00000004; if (in_stack_00000004 == 0) { unaff_BX = 8; } else if (in_stack_00000004 == 1) { unaff_BX = 4; } else if (in_stack_00000004 == 2) { unaff_BX = 0; } DAT_00468f34 = 0; DAT_004626a0 = 3; FUN_0043aa25(); DAT_00468fbc = (&DAT_00468f88)[unaff_BX]; FUN_0043b4e2((int)unaff_BX,extraout_EDX,extraout_ECX,(&DAT_00468f88)[unaff_BX]); FUN_004465a5(0x1f73,5,0); (&DAT_00462698)[DAT_00468f30] = (&DAT_00462698)[DAT_00468f30] + -1; FUN_00435d8a(); FUN_004359e9(); return; } void FUN_00438e43(undefined4 param_1,undefined4 param_2,uint param_3) { uint uVar1; uint extraout_ECX; undefined4 extraout_EDX; undefined4 extraout_EDX_00; undefined4 uVar2; short sVar3; short sVar4; uint uVar5; uint auStack_a4 [40]; sVar3 = 0; do { if ((&DAT_00468dee)[sVar3 * 4] != -1) { if ((&DAT_00468dee)[sVar3 * 4] == 0) { sVar4 = 0x32e3; } else { sVar4 = 0x32df; } uVar5 = (uint)(ushort)(sVar4 + (&DAT_00468dec)[sVar3 * 4]); uVar1 = FUN_00412ac4(sVar4 + (&DAT_00468dec)[sVar3 * 4]); auStack_a4[sVar3] = uVar1; FUN_00412e70((int)sVar3,(int)sVar3,uVar5,auStack_a4[sVar3]); FUN_0041395c(auStack_a4[sVar3],CONCAT22(sVar3 >> 0xf,(&DAT_00468de8)[sVar3 * 4]), CONCAT22(sVar3 >> 0xf,(&DAT_00468dea)[sVar3 * 4]),1); } sVar3 = sVar3 + 1; } while (sVar3 < 0x28); DoSomethingBig(); sVar3 = 0; uVar1 = extraout_ECX; uVar2 = extraout_EDX; do { if ((&DAT_00468dee)[sVar3 * 4] != -1) { uVar5 = auStack_a4[sVar3]; FUN_00412d0c((int)sVar3,uVar2,uVar1,auStack_a4[sVar3]); uVar1 = uVar5; uVar2 = extraout_EDX_00; } sVar3 = sVar3 + 1; } while (sVar3 < 0x28); return; } void FUN_00438efb(short param_1,undefined4 param_2,undefined4 param_3) { short sVar1; DAT_00468f34 = DAT_00468f34 + 1; if (3 < DAT_00468f34) { DAT_00468f34 = 0; } if (DAT_00468f30 == 0) { sVar1 = DAT_00468f34 + 8; } else if (DAT_00468f30 == 1) { sVar1 = DAT_00468f34 + 4; } else { sVar1 = DAT_00468f34; if (DAT_00468f30 != 2) { sVar1 = param_1; } } DAT_00468fbc = (&DAT_00468f88)[sVar1]; FUN_0043b4e2((int)sVar1,DAT_00468fbc,param_3,(&DAT_00468f88)[sVar1]); FUN_004465a5(0x1f4e,5,0); return; } void FUN_00438f7b(void) { ushort uVar1; ushort uVar2; undefined4 uVar3; short sVar4; ushort local_a; ushort local_8; uVar1 = FUN_00413774(*(undefined4 *)(DAT_00468fbc + 0x1e),0); uVar2 = FUN_00413794(*(undefined4 *)(DAT_00468fbc + 0x1e),0); if ((((0x6f < DAT_00468f4e) && (0x2b < DAT_00468f50)) && ((int)DAT_00468f4e + (int)(short)(uVar1 + 4) < 0x1ee)) && ((int)DAT_00468f50 + (int)(short)(uVar2 + 4) < 0x123)) { FUN_00413774(*(undefined4 *)(DAT_00468fbc + 0x1e),0); FUN_00413794(*(undefined4 *)(DAT_00468fbc + 0x1e),0); sVar4 = 0; do { if (*(short *)(DAT_00468f2c + sVar4 * 0x1e) != -1) { FUN_00413794(*(undefined4 *)(DAT_00468f2c + 0x12 + sVar4 * 0x1e),0); FUN_00413774(*(undefined4 *)(DAT_00468f2c + 0x12 + sVar4 * 0x1e),0); uVar3 = FUN_00439341(); if ((short)uVar3 != 0) { return; } } sVar4 = sVar4 + 1; } while (sVar4 < 0x1e); sVar4 = 0; do { if (*(short *)(DAT_00468f2c + sVar4 * 0x1e) == -1) break; sVar4 = sVar4 + 1; } while (sVar4 < 0x1e); if (sVar4 < 0x1e) { if (DAT_00468f30 == 0) { local_8 = DAT_00468f34 + 0x32d3; local_a = DAT_00468f34 + 0x32db; } else if (DAT_00468f30 == 1) { local_8 = DAT_00468f34 + 0x32cf; local_a = DAT_00468f34 + 0x32d7; } else if (DAT_00468f30 == 2) { local_8 = DAT_00468f34 + 0x32cb; local_a = DAT_00468f34 + 0x32d7; } FUN_004394b1(); uVar3 = FUN_00412ac4(local_8); *(undefined4 *)(DAT_00468f2c + 0x12 + sVar4 * 0x1e) = uVar3; uVar3 = FUN_00412ac4(local_a); *(undefined4 *)(DAT_00468f2c + 0x16 + sVar4 * 0x1e) = uVar3; *(short *)(DAT_00468f2c + sVar4 * 0x1e) = DAT_00468f30; *(short *)(DAT_00468f2c + 2 + sVar4 * 0x1e) = DAT_00468f34; *(short *)(DAT_00468f2c + 4 + sVar4 * 0x1e) = DAT_00468f4e; *(short *)(DAT_00468f2c + 6 + sVar4 * 0x1e) = DAT_00468f50; uVar3 = *(undefined4 *)(DAT_00468f2c + 0x12 + sVar4 * 0x1e); FUN_00412e70(); FUN_00412e70(sVar4 * 0xf,DAT_00468f2c,uVar3, *(undefined4 *)(DAT_00468f2c + 0x16 + sVar4 * 0x1e)); FUN_0041395c(*(undefined4 *)(DAT_00468f2c + 0x12 + sVar4 * 0x1e), CONCAT22((short)((uint)(sVar4 * 0xf) >> 0x10), *(undefined2 *)(DAT_00468f2c + 4 + sVar4 * 0x1e)), CONCAT22((short)((uint)(sVar4 * 0xf) >> 0x10), *(undefined2 *)(DAT_00468f2c + 6 + sVar4 * 0x1e)),5); FUN_0041395c(*(undefined4 *)(DAT_00468f2c + 0x16 + sVar4 * 0x1e), CONCAT22((short)((uint)(sVar4 * 0xf) >> 0x10), *(short *)(DAT_00468f2c + 4 + sVar4 * 0x1e) + 4), CONCAT22((short)((uint)(sVar4 * 0xf) >> 0x10), *(short *)(DAT_00468f2c + 6 + sVar4 * 0x1e) + 4),4); DAT_00468f30 = -1; DAT_00468ff4 = 1; FUN_004392dc(); } } return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_004392dc(void) { short sVar1; _DAT_00468f42 = 0; _DAT_00468f40 = 1; sVar1 = 0; do { *(undefined2 *)(DAT_00468f2c + 0xe + sVar1 * 0x1e) = 0; *(undefined2 *)(DAT_00468f2c + 10 + sVar1 * 0x1e) = 0; *(undefined2 *)(DAT_00468f2c + 0xc + sVar1 * 0x1e) = 0; sVar1 = sVar1 + 1; } while (sVar1 < 0x1e); DAT_004626a0 = 5; return; } undefined4 FUN_00439341(void) { bool bVar1; bool bVar2; int iVar3; undefined4 uVar4; short in_stack_00000004; short in_stack_00000008; short in_stack_0000000c; short in_stack_00000010; short in_stack_00000014; short in_stack_00000018; short in_stack_0000001c; short in_stack_00000020; bVar1 = false; if (in_stack_0000001c < in_stack_0000000c) { if ((in_stack_00000004 <= in_stack_00000014) && ((int)in_stack_00000014 < (int)in_stack_00000004 + (int)in_stack_0000000c)) { bVar1 = true; } if (((int)in_stack_00000004 < (int)in_stack_00000014 + (int)in_stack_0000001c) && ((int)in_stack_00000014 + (int)in_stack_0000001c <= (int)in_stack_00000004 + (int)in_stack_0000000c)) { bVar1 = true; } } else { if ((in_stack_00000014 <= in_stack_00000004) && ((int)in_stack_00000004 < (int)in_stack_00000014 + (int)in_stack_0000001c)) { bVar1 = true; } if (((int)in_stack_00000014 < (int)in_stack_00000004 + (int)in_stack_0000000c) && ((int)in_stack_00000004 + (int)in_stack_0000000c <= (int)in_stack_00000014 + (int)in_stack_0000001c)) { bVar1 = true; } } bVar2 = false; if (in_stack_00000020 < in_stack_00000010) { if ((in_stack_00000008 <= in_stack_00000018) && ((int)in_stack_00000018 < (int)in_stack_00000008 + (int)in_stack_00000010)) { bVar2 = true; } iVar3 = (int)in_stack_00000018 + (int)in_stack_00000020; if ((in_stack_00000008 < iVar3) && (iVar3 = (int)in_stack_00000018 + (int)in_stack_00000020, iVar3 <= (int)in_stack_00000008 + (int)in_stack_00000010)) { bVar2 = true; } } else { if ((in_stack_00000018 <= in_stack_00000008) && ((int)in_stack_00000008 < (int)in_stack_00000018 + (int)in_stack_00000020)) { bVar2 = true; } iVar3 = (int)in_stack_00000008 + (int)in_stack_00000010; if ((in_stack_00000018 < iVar3) && (iVar3 = (int)in_stack_00000008 + (int)in_stack_00000010, iVar3 <= (int)in_stack_00000018 + (int)in_stack_00000020)) { bVar2 = true; } } if ((bVar1) && (bVar2)) { uVar4 = CONCAT22((short)((uint)iVar3 >> 0x10),1); } else { uVar4 = 0; } return uVar4; } void FUN_004394b1(void) { FUN_0043aa25(); FUN_004465a5(0x1f74,5,0); return; } void FUN_004394c8(void) { undefined4 uVar1; undefined4 extraout_ECX; undefined4 extraout_EDX; short unaff_SI; short sVar2; short in_stack_00000004; uint uVar3; FUN_004465a5(0x1f73,5,0); DAT_00468f30 = *(short *)(DAT_00468f2c + in_stack_00000004 * 0x1e); DAT_00468f34 = *(short *)(DAT_00468f2c + 2 + in_stack_00000004 * 0x1e); if (DAT_00468f30 == 0) { sVar2 = DAT_00468f34 + 8; } else if (DAT_00468f30 == 1) { sVar2 = DAT_00468f34 + 4; } else { sVar2 = DAT_00468f34; if (DAT_00468f30 != 2) { sVar2 = unaff_SI; } } FUN_0043aa25(); DAT_00468fbc = (&DAT_00468f88)[sVar2]; uVar3 = DAT_00468fbc; FUN_0043b4e2(DAT_00468fbc,extraout_EDX,extraout_ECX,DAT_00468fbc); *(undefined2 *)(DAT_00468f2c + in_stack_00000004 * 0x1e) = 0xffff; DAT_004626a0 = 3; uVar1 = FUN_00412d0c(in_stack_00000004 * 0xf,DAT_00468f2c,uVar3, *(uint *)(DAT_00468f2c + 0x12 + in_stack_00000004 * 0x1e)); uVar3 = DAT_00468f2c; *(undefined4 *)(DAT_00468f2c + 0x12 + in_stack_00000004 * 0x1e) = uVar1; uVar1 = FUN_00412d0c(in_stack_00000004 * 0xf,DAT_00468f2c,uVar3, *(uint *)(DAT_00468f2c + 0x16 + in_stack_00000004 * 0x1e)); *(undefined4 *)(DAT_00468f2c + 0x16 + in_stack_00000004 * 0x1e) = uVar1; DAT_00468ff4 = 3; FUN_004392dc(); return; } void FUN_004395e2(void) { undefined4 uVar1; short sVar2; sVar2 = 0; do { *(undefined2 *)(DAT_00468f2c + 8 + sVar2 * 0x1e) = 0; sVar2 = sVar2 + 1; } while (sVar2 < 0x1e); while (uVar1 = FUN_0043a8d1(), (short)uVar1 == 0) { sVar2 = 0; do { if (((*(short *)(DAT_00468f2c + sVar2 * 0x1e) != -1) && (*(short *)(DAT_00468f2c + 8 + sVar2 * 0x1e) == 0)) && (uVar1 = FUN_0043a911(), (short)uVar1 != 0)) { uVar1 = *(undefined4 *)(DAT_00468f2c + 0x12 + sVar2 * 0x1e); BigThing6Eh::processNodes_(uVar1); FUN_00412e70(sVar2 * 0xf,DAT_00468f2c,uVar1, *(undefined4 *)(DAT_00468f2c + 0x12 + sVar2 * 0x1e)); FUN_0041395c(*(undefined4 *)(DAT_00468f2c + 0x12 + sVar2 * 0x1e), CONCAT22((short)((uint)(sVar2 * 0xf) >> 0x10), *(undefined2 *)(DAT_00468f2c + 4 + sVar2 * 0x1e)), CONCAT22((short)((uint)(sVar2 * 0xf) >> 0x10), *(undefined2 *)(DAT_00468f2c + 6 + sVar2 * 0x1e)),5); FUN_0041395c(*(undefined4 *)(DAT_00468f2c + 0x16 + sVar2 * 0x1e), CONCAT22((short)((uint)(sVar2 * 0xf) >> 0x10), *(short *)(DAT_00468f2c + 4 + sVar2 * 0x1e) + 4), CONCAT22((short)((uint)(sVar2 * 0xf) >> 0x10), *(short *)(DAT_00468f2c + 6 + sVar2 * 0x1e) + 4),4); FUN_00413e20(); *(undefined2 *)(DAT_00468f2c + 8 + sVar2 * 0x1e) = 1; } sVar2 = sVar2 + 1; } while (sVar2 < 0x1e); } return; } void FUN_00439740(void) { short sVar1; short sVar2; short sVar3; short sVar4; short in_stack_00000004; sVar1 = *(short *)(DAT_00468f2c + in_stack_00000004 * 0x1e); sVar2 = *(short *)(DAT_00468f2c + 2 + in_stack_00000004 * 0x1e); sVar4 = 0; do { if ((&DAT_00462590)[sVar4 * 2 + (short)(sVar1 * 4 + sVar2) * 0xc] != -1) { sVar3 = 0; do { if (*(short *)(DAT_00468f2c + 0xe + in_stack_00000004 * 0x1e) != 0) break; if ((*(short *)(DAT_00468f2c + sVar3 * 0x1e) != -1) && (in_stack_00000004 != sVar3)) { FUN_0043a2d6(); } sVar3 = sVar3 + 1; } while (sVar3 < 0x1e); } sVar4 = sVar4 + 1; if (5 < sVar4) { return; } } while( true ); } uint FUN_00439862(void) { short *psVar1; bool bVar2; undefined2 uVar3; uint uVar4; undefined4 uVar5; int iVar6; uint uVar7; short sVar8; short sVar9; short in_stack_00000004; uVar3 = 0; sVar8 = 0; do { uVar4 = (uint)*(short *)(DAT_00468f2c + 10 + sVar8 * 0x1e); uVar7 = (int)uVar4 >> 0x1f; if ((int)((uVar4 ^ uVar7) - uVar7) < 0x201) { uVar4 = (uint)*(short *)(DAT_00468f2c + 10 + sVar8 * 0x1e); uVar7 = (int)uVar4 >> 0x1f; if (0x40 < (int)((uVar4 ^ uVar7) - uVar7)) { uVar4 = (int)in_stack_00000004 & 0x80000001; if ((int)uVar4 < 0) { uVar4 = (uVar4 - 1 | 0xfffffffe) + 1; } if (uVar4 != 0) goto LAB_004398e7; } uVar4 = (uint)*(short *)(DAT_00468f2c + 10 + sVar8 * 0x1e); uVar7 = (int)uVar4 >> 0x1f; uVar4 = uVar4 ^ uVar7; if ((uVar4 != uVar7 && -1 < (int)(uVar4 - uVar7)) && (in_stack_00000004 == 1)) goto LAB_004398e7; bVar2 = false; } else { LAB_004398e7: bVar2 = true; } if (*(short *)(DAT_00468f2c + sVar8 * 0x1e) != -1) { if ((bVar2) && (*(short *)(DAT_00468f2c + 0xe + sVar8 * 0x1e) == 0)) { uVar5 = FUN_00439c09(); if ((short)uVar5 != 0) goto LAB_00439928; } else { LAB_00439928: uVar5 = FUN_00439e1a(); if ((short)uVar5 == 0) goto LAB_0043999b; } sVar9 = -1; if (-1 < *(short *)(DAT_00468f2c + 10 + sVar8 * 0x1e)) { sVar9 = 1; } psVar1 = (short *)(DAT_00468f2c + 4 + sVar8 * 0x1e); *psVar1 = *psVar1 + sVar9; uVar5 = FUN_00439ae0(); if ((short)uVar5 == 0) { uVar3 = 1; } else { psVar1 = (short *)(DAT_00468f2c + 4 + sVar8 * 0x1e); *psVar1 = *psVar1 - sVar9; } *(undefined2 *)(DAT_00468f2c + 10 + sVar8 * 0x1e) = 0; } LAB_0043999b: sVar8 = sVar8 + 1; } while (sVar8 < 0x1e); sVar8 = 0; do { uVar4 = (uint)*(short *)(DAT_00468f2c + 0xc + sVar8 * 0x1e); uVar7 = (int)uVar4 >> 0x1f; if ((int)((uVar4 ^ uVar7) - uVar7) < 0x41) { uVar4 = (uint)*(short *)(DAT_00468f2c + 0xc + sVar8 * 0x1e); uVar7 = (int)uVar4 >> 0x1f; if (0x10 < (int)((uVar4 ^ uVar7) - uVar7)) { uVar4 = (int)in_stack_00000004 & 0x80000001; if ((int)uVar4 < 0) { uVar4 = (uVar4 - 1 | 0xfffffffe) + 1; } if (uVar4 != 0) goto LAB_00439a17; } uVar4 = (uint)*(short *)(DAT_00468f2c + 0xc + sVar8 * 0x1e); uVar7 = (int)uVar4 >> 0x1f; uVar4 = uVar4 ^ uVar7; if ((uVar4 != uVar7 && -1 < (int)(uVar4 - uVar7)) && (in_stack_00000004 == 1)) goto LAB_00439a17; bVar2 = false; } else { LAB_00439a17: bVar2 = true; } iVar6 = sVar8 * 0xf; if (*(short *)(DAT_00468f2c + sVar8 * 0x1e) != -1) { if ((bVar2) && (*(short *)(DAT_00468f2c + 0xe + sVar8 * 0x1e) == 0)) { uVar5 = FUN_00439c09(); if ((short)uVar5 != 0) goto LAB_00439a58; } else { LAB_00439a58: iVar6 = FUN_00439e1a(); if ((short)iVar6 == 0) goto LAB_00439acb; } sVar9 = -1; if (-1 < *(short *)(DAT_00468f2c + 0xc + sVar8 * 0x1e)) { sVar9 = 1; } psVar1 = (short *)(DAT_00468f2c + 6 + sVar8 * 0x1e); *psVar1 = *psVar1 + sVar9; uVar5 = FUN_00439ae0(); if ((short)uVar5 == 0) { uVar3 = 1; } else { psVar1 = (short *)(DAT_00468f2c + 6 + sVar8 * 0x1e); *psVar1 = *psVar1 - sVar9; } iVar6 = sVar8 * 0xf; *(undefined2 *)(DAT_00468f2c + 0xc + sVar8 * 0x1e) = 0; } LAB_00439acb: sVar8 = sVar8 + 1; if (0x1d < sVar8) { return CONCAT22((short)((uint)iVar6 >> 0x10),uVar3); } } while( true ); } undefined4 FUN_00439ae0(void) { ushort uVar1; ushort uVar2; undefined2 extraout_var; int iVar3; undefined4 uVar4; short sVar5; short in_stack_00000004; uVar1 = FUN_00413774(*(undefined4 *)(DAT_00468f2c + 0x12 + in_stack_00000004 * 0x1e),0); uVar2 = FUN_00413794(*(undefined4 *)(DAT_00468f2c + 0x12 + in_stack_00000004 * 0x1e),0); iVar3 = CONCAT22(extraout_var,uVar2 + 4); if ((((*(short *)(DAT_00468f2c + 4 + in_stack_00000004 * 0x1e) < 0x70) || (*(short *)(DAT_00468f2c + 6 + in_stack_00000004 * 0x1e) < 0x2c)) || (0x1ed < (int)*(short *)(DAT_00468f2c + 4 + in_stack_00000004 * 0x1e) + (int)(short)(uVar1 + 4))) || (iVar3 = (int)(short)(uVar2 + 4), 0x122 < *(short *)(DAT_00468f2c + 6 + in_stack_00000004 * 0x1e) + iVar3)) { uVar4 = CONCAT22((short)((uint)iVar3 >> 0x10),1); } else { FUN_00413774(*(undefined4 *)(DAT_00468f2c + 0x12 + in_stack_00000004 * 0x1e),0); FUN_00413794(*(undefined4 *)(DAT_00468f2c + 0x12 + in_stack_00000004 * 0x1e),0); sVar5 = 0; do { if (((*(short *)(DAT_00468f2c + sVar5 * 0x1e) != -1) && (in_stack_00000004 != sVar5)) && (uVar4 = FUN_0043a0f3(), (short)uVar4 != 0)) { return CONCAT22((short)((uint)uVar4 >> 0x10),1); } sVar5 = sVar5 + 1; } while (sVar5 < 0x1e); uVar4 = 0; } return uVar4; } undefined4 FUN_00439c09(void) { bool bVar1; short sVar2; short sVar3; ushort uVar4; short sVar5; uint uVar6; short sVar7; ushort uVar8; uint uVar9; short sVar10; short in_stack_00000004; short local_6; local_6 = 0; do { sVar2 = (short)(char)(&DAT_00462590) [local_6 * 2 + (*(short *)(DAT_00468f2c + in_stack_00000004 * 0x1e) * 4 + (int)*(short *)(DAT_00468f2c + 2 + in_stack_00000004 * 0x1e)) * 0xc] + *(short *)(DAT_00468f2c + 4 + in_stack_00000004 * 0x1e); sVar3 = (short)(char)(&DAT_00462591) [local_6 * 2 + (*(short *)(DAT_00468f2c + in_stack_00000004 * 0x1e) * 4 + (int)*(short *)(DAT_00468f2c + 2 + in_stack_00000004 * 0x1e)) * 0xc] + *(short *)(DAT_00468f2c + 6 + in_stack_00000004 * 0x1e); sVar7 = 0; do { if ((*(short *)(DAT_00468f2c + sVar7 * 0x1e) != -1) && (sVar7 != in_stack_00000004)) { uVar4 = 3; if (2 < local_6) { uVar4 = 0; } uVar8 = 6; if (2 < local_6) { uVar8 = 3; } bVar1 = uVar4 < uVar8; while (bVar1) { if ((char)(&DAT_00462590) [(short)uVar4 * 2 + (*(short *)(DAT_00468f2c + sVar7 * 0x1e) * 4 + (int)*(short *)(DAT_00468f2c + 2 + sVar7 * 0x1e)) * 0xc] != -1) { sVar5 = (short)(char)(&DAT_00462590) [(short)uVar4 * 2 + (*(short *)(DAT_00468f2c + sVar7 * 0x1e) * 4 + (int)*(short *)(DAT_00468f2c + 2 + sVar7 * 0x1e)) * 0xc] + *(short *)(DAT_00468f2c + 4 + sVar7 * 0x1e); sVar10 = (short)(char)(&DAT_00462591) [(short)uVar4 * 2 + (*(short *)(DAT_00468f2c + sVar7 * 0x1e) * 4 + (int)*(short *)(DAT_00468f2c + 2 + sVar7 * 0x1e)) * 0xc] + *(short *)(DAT_00468f2c + 6 + sVar7 * 0x1e); uVar6 = (int)sVar5 - (int)sVar2; uVar9 = (int)uVar6 >> 0x1f; if ((((uVar6 ^ uVar9) - uVar9 == 2) && (sVar10 == sVar3)) || ((uVar6 = (int)sVar10 - (int)sVar3, uVar9 = (int)uVar6 >> 0x1f, (uVar6 ^ uVar9) - uVar9 == 1 && (sVar5 == sVar2)))) { return 1; } } uVar4 = uVar4 + 1; bVar1 = (short)uVar4 < (short)uVar8; } } sVar7 = sVar7 + 1; } while (sVar7 < 0x1e); local_6 = local_6 + 1; if (5 < local_6) { return 0; } } while( true ); } undefined4 FUN_00439e1a(void) { short *psVar1; short sVar2; short sVar3; short sVar4; uint uVar5; undefined4 uVar6; short sVar7; ushort uVar8; uint uVar9; short sVar10; short in_stack_00000004; short in_stack_00000008; short local_8; ushort local_6; local_8 = 0; do { sVar2 = (short)(char)(&DAT_00462590) [local_8 * 2 + (*(short *)(DAT_00468f2c + in_stack_00000004 * 0x1e) * 4 + (int)*(short *)(DAT_00468f2c + 2 + in_stack_00000004 * 0x1e)) * 0xc] + *(short *)(DAT_00468f2c + 4 + in_stack_00000004 * 0x1e); sVar3 = (short)(char)(&DAT_00462591) [local_8 * 2 + (*(short *)(DAT_00468f2c + in_stack_00000004 * 0x1e) * 4 + (int)*(short *)(DAT_00468f2c + 2 + in_stack_00000004 * 0x1e)) * 0xc] + *(short *)(DAT_00468f2c + 6 + in_stack_00000004 * 0x1e); sVar7 = 0; do { if ((*(short *)(DAT_00468f2c + sVar7 * 0x1e) != -1) && (in_stack_00000004 != sVar7)) { local_6 = 0; if (2 < local_8) { local_6 = 3; } uVar8 = 3; if (2 < local_8) { uVar8 = 6; } if (local_6 < uVar8) { do { if ((char)(&DAT_00462590) [(short)local_6 * 2 + (*(short *)(DAT_00468f2c + sVar7 * 0x1e) * 4 + (int)*(short *)(DAT_00468f2c + 2 + sVar7 * 0x1e)) * 0xc] != -1) { sVar4 = (short)(char)(&DAT_00462590) [(short)local_6 * 2 + (*(short *)(DAT_00468f2c + sVar7 * 0x1e) * 4 + (int)*(short *)(DAT_00468f2c + 2 + sVar7 * 0x1e)) * 0xc] + *(short *)(DAT_00468f2c + 4 + sVar7 * 0x1e); sVar10 = (short)(char)(&DAT_00462591) [(short)local_6 * 2 + (*(short *)(DAT_00468f2c + sVar7 * 0x1e) * 4 + (int)*(short *)(DAT_00468f2c + 2 + sVar7 * 0x1e)) * 0xc] + *(short *)(DAT_00468f2c + 6 + sVar7 * 0x1e); uVar5 = (int)sVar4 - (int)sVar2; uVar9 = (int)uVar5 >> 0x1f; if ((((uVar5 ^ uVar9) - uVar9 == 2) && (sVar10 == sVar3)) || ((uVar5 = (int)sVar10 - (int)sVar3, uVar9 = (int)uVar5 >> 0x1f, (uVar5 ^ uVar9) - uVar9 == 2 && (sVar4 == sVar2)))) { if (in_stack_00000008 == 0) { psVar1 = (short *)(DAT_00468f2c + 4 + in_stack_00000004 * 0x1e); *psVar1 = *psVar1 + 1; uVar6 = FUN_00439ae0(); if ((short)uVar6 == 0) { *(undefined2 *)(DAT_00468f2c + 10 + in_stack_00000004 * 0x1e) = 1; } else { *(undefined2 *)(DAT_00468f2c + 10 + in_stack_00000004 * 0x1e) = 0xffff; } psVar1 = (short *)(DAT_00468f2c + 4 + in_stack_00000004 * 0x1e); *psVar1 = *psVar1 + -1; } else { psVar1 = (short *)(DAT_00468f2c + 6 + in_stack_00000004 * 0x1e); *psVar1 = *psVar1 + 1; uVar6 = FUN_00439ae0(); if ((short)uVar6 == 0) { *(undefined2 *)(DAT_00468f2c + 0xc + in_stack_00000004 * 0x1e) = 1; } else { *(undefined2 *)(DAT_00468f2c + 0xc + in_stack_00000004 * 0x1e) = 0xffff; } psVar1 = (short *)(DAT_00468f2c + 6 + in_stack_00000004 * 0x1e); *psVar1 = *psVar1 + -1; } return CONCAT22((short)((uint)(in_stack_00000004 * 0xf) >> 0x10),1); } } local_6 = local_6 + 1; } while ((short)local_6 < (short)uVar8); } } sVar7 = sVar7 + 1; } while (sVar7 < 0x1e); local_8 = local_8 + 1; if (5 < local_8) { return 0; } } while( true ); } undefined4 FUN_0043a0f3(void) { undefined4 uVar1; short in_stack_00000004; short in_stack_00000008; short in_stack_0000000c; if (in_stack_0000000c == 0) { FUN_00413794(*(undefined4 *)(DAT_00468f2c + 0x12 + in_stack_00000008 * 0x1e),0); FUN_00413774(*(undefined4 *)(DAT_00468f2c + 0x12 + in_stack_00000008 * 0x1e),0); FUN_00413794(*(undefined4 *)(DAT_00468f2c + 0x12 + in_stack_00000004 * 0x1e),0); FUN_00413774(*(undefined4 *)(DAT_00468f2c + 0x12 + in_stack_00000004 * 0x1e),0); uVar1 = FUN_00439341(); if ((short)uVar1 != 0) { return CONCAT22((short)((uint)uVar1 >> 0x10),1); } } else if (in_stack_0000000c == 1) { FUN_00413794(*(undefined4 *)(DAT_00468f2c + 0x12 + in_stack_00000008 * 0x1e),0); FUN_00413774(*(undefined4 *)(DAT_00468f2c + 0x12 + in_stack_00000008 * 0x1e),0); FUN_00413794(*(undefined4 *)(DAT_00468f2c + 0x12 + in_stack_00000004 * 0x1e),0); FUN_00413774(*(undefined4 *)(DAT_00468f2c + 0x12 + in_stack_00000004 * 0x1e),0); uVar1 = FUN_00439341(); if ((short)uVar1 != 0) { return CONCAT22((short)((uint)uVar1 >> 0x10),1); } } return 0; } // WARNING: Heritage AFTER dead removal. Example location: EAX : 0x0043a4a9 // WARNING: Restarted to delay deadcode elimination for space: register void FUN_0043a2d6(void) { short *psVar1; short sVar2; short sVar3; int iVar4; uint uVar5; uint uVar6; undefined4 uVar7; short sVar8; short sVar9; short sVar10; ushort in_stack_00000004; short in_stack_00000008; short in_stack_0000000c; short in_stack_00000010; short in_stack_00000014; short local_c; short local_a; local_c = 0; local_a = 0; sVar2 = *(short *)(DAT_00468f2c + in_stack_00000014 * 0x1e) * 4 + *(short *)(DAT_00468f2c + 2 + in_stack_00000014 * 0x1e); sVar8 = 0; do { if (in_stack_00000004 == sVar8 < 3) { sVar9 = (in_stack_00000008 - *(short *)(DAT_00468f2c + 4 + in_stack_00000014 * 0x1e)) - (short)(char)(&DAT_00462590)[sVar8 * 2 + sVar2 * 0xc]; sVar10 = (in_stack_0000000c - *(short *)(DAT_00468f2c + 6 + in_stack_00000014 * 0x1e)) - (short)(char)(&DAT_00462591)[sVar8 * 2 + sVar2 * 0xc]; } else { sVar9 = (*(short *)(DAT_00468f2c + 4 + in_stack_00000014 * 0x1e) + (short)(char)(&DAT_00462590)[sVar8 * 2 + sVar2 * 0xc]) - in_stack_00000008; sVar10 = (*(short *)(DAT_00468f2c + 6 + in_stack_00000014 * 0x1e) + (short)(char)(&DAT_00462591)[sVar8 * 2 + sVar2 * 0xc]) - in_stack_0000000c; } iVar4 = (int)sVar9 * (int)sVar9 + (int)sVar10 * (int)sVar10; uVar5 = FUN_0043a53a(); sVar3 = (short)uVar5; uVar5 = (int)sVar9 >> 0x1f; uVar6 = (((int)sVar9 ^ uVar5) - uVar5) - 1; if ((uVar6 == 0) && (sVar10 == 0)) { LAB_0043a43a: uVar6 = (uint)(short)in_stack_00000004; uVar5 = (uint)(sVar8 < 3); if (uVar6 != uVar5) { *(undefined2 *)(DAT_00468f2c + 0xe + in_stack_00000010 * 0x1e) = 1; *(undefined2 *)(DAT_00468f2c + 10 + in_stack_00000010 * 0x1e) = 0; *(undefined2 *)(DAT_00468f2c + 0xc + in_stack_00000010 * 0x1e) = 0; return; } } else if (sVar9 == 1) { uVar5 = (int)sVar10 >> 0x1f; uVar6 = (((int)sVar10 ^ uVar5) - uVar5) - 1; if (uVar6 == 0) goto LAB_0043a43a; } if (sVar3 < 0x12) { uVar7 = CONCAT22((short)(uVar6 >> 0x10),0x12 - sVar3); iVar4 = FUN_0043a521(uVar7,uVar5,iVar4,uVar7); local_a = local_a + (short)(((int)(short)iVar4 * (int)sVar9) / (int)sVar3); local_c = local_c + (short)(((int)(short)iVar4 * (int)sVar10) / (int)sVar3); } sVar8 = sVar8 + 1; if (5 < sVar8) { psVar1 = (short *)(DAT_00468f2c + 10 + in_stack_00000010 * 0x1e); *psVar1 = *psVar1 + local_a; psVar1 = (short *)(DAT_00468f2c + 0xc + in_stack_00000010 * 0x1e); *psVar1 = *psVar1 + local_c; return; } } while( true ); } int FUN_0043a521(void) { short in_stack_00000004; return (int)in_stack_00000004 * (int)in_stack_00000004 * (int)in_stack_00000004; } uint FUN_0043a53a(undefined4 param_1,undefined4 param_2,undefined4 param_3,uint param_4) { uint uVar1; uint uVar2; uint uVar3; uint uVar4; uint uVar5; if (param_4 < 4) { uVar4 = CONCAT22((short)((uint)param_1 >> 0x10),1); } else { uVar4 = 2; uVar2 = (param_4 >> 2) + 1; uVar5 = param_4 >> 1; while ((uVar3 = (int)(uVar5 - uVar4) >> 0x1f, 1 < (int)((uVar5 - uVar4 ^ uVar3) - uVar3) && ((uVar1 = uVar2 * uVar2, uVar3 = uVar2, param_4 <= uVar1 && uVar1 - param_4 != 0 || (uVar4 = uVar2, uVar3 = uVar5, uVar1 < param_4))))) { uVar5 = uVar3; uVar2 = (uVar3 - uVar4 >> 1) + uVar4; } } return uVar4; } undefined4 FUN_0043a592(void) { ushort uVar1; ushort uVar2; int iVar3; uint uVar4; int iVar5; short sVar6; short sVar7; ushort uVar8; short local_c; short local_6; sVar7 = 0; do { *(undefined2 *)(DAT_00468f2c + 0x10 + sVar7 * 0x1e) = 0; sVar7 = sVar7 + 1; } while (sVar7 < 0x1e); sVar7 = 0; do { iVar3 = (int)sVar7; if ((&DAT_00468dee)[iVar3 * 4] != -1) { local_c = -1; sVar6 = 0; do { if (*(short *)(DAT_00468f2c + sVar6 * 0x1e) != -1) { uVar8 = (ushort)(0 < *(short *)(DAT_00468f2c + sVar6 * 0x1e)); if (uVar8 == 1) { uVar4 = (int)*(short *)(DAT_00468f2c + 2 + sVar6 * 0x1e) & 0x80000003; if ((int)uVar4 < 0) { uVar4 = (uVar4 - 1 | 0xfffffffc) + 1; } local_6 = (short)uVar4; } else { uVar4 = (int)*(short *)(DAT_00468f2c + 2 + sVar6 * 0x1e) & 0x80000001; if ((int)uVar4 < 0) { uVar4 = (uVar4 - 1 | 0xfffffffe) + 1; } local_6 = (short)uVar4; } iVar3 = (int)*(short *)(DAT_00468f2c + 4 + sVar6 * 0x1e) - (int)(short)(&DAT_00468de8)[sVar7 * 4]; uVar1 = (ushort)(iVar3 >> 0x1f); iVar5 = (int)*(short *)(DAT_00468f2c + 6 + sVar6 * 0x1e) - (int)(short)(&DAT_00468dea)[sVar7 * 4]; uVar2 = (ushort)(iVar5 >> 0x1f); if ((((*(short *)(DAT_00468f2c + 0x10 + sVar6 * 0x1e) == 0) && (uVar8 == (&DAT_00468dee)[sVar7 * 4])) && ((&DAT_00468dec)[sVar7 * 4] == local_6)) && (((short)(((ushort)iVar3 ^ uVar1) - uVar1) < 8 && ((short)(((ushort)iVar5 ^ uVar2) - uVar2) < 8)))) { local_c = sVar6; } } sVar6 = sVar6 + 1; } while (sVar6 < 0x1e); if (local_c == -1) { return 0; } iVar3 = local_c * 0xf; *(undefined2 *)(DAT_00468f2c + 0x10 + local_c * 0x1e) = 1; } sVar7 = sVar7 + 1; if (0x27 < sVar7) { return CONCAT22((short)((uint)iVar3 >> 0x10),1); } } while( true ); } void FUN_0043a724(void) { LPCVOID *dest; uint uVar1; DWORD extraout_ECX; undefined4 extraout_EDX; short sVar2; dest = FUN_00452220(); Sprintf_((char *)dest,s_case__d__004626da,(int)Puzzles::currentPuzzle); sVar2 = 0; do { if (*(short *)(DAT_00468f2c + sVar2 * 0x1e) != -1) { Sprintf_((char *)dest,s_ii__d__type____d__004626ea,(int)sVar2, (int)*(short *)(DAT_00468f2c + sVar2 * 0x1e)); Sprintf_((char *)dest,s_ii__d__rot____d__00462706,(int)sVar2, (int)*(short *)(DAT_00468f2c + 2 + sVar2 * 0x1e)); Sprintf_((char *)dest,s_ii__d__x____d__00462722,(int)sVar2, (int)*(short *)(DAT_00468f2c + 4 + sVar2 * 0x1e)); Sprintf_((char *)dest,s_ii__d__y____d__0046273e,(int)sVar2, (int)*(short *)(DAT_00468f2c + 6 + sVar2 * 0x1e)); } sVar2 = sVar2 + 1; } while (sVar2 < 0x1e); uVar1 = Sprintf_((char *)dest,s_break__0046275b); FUN_00451f00(uVar1,extraout_EDX,extraout_ECX,dest); return; } void FUN_0043a834(void) { char *format; short in_stack_00000004; short in_stack_00000008; char local_54 [80]; Nfnt::LoadWithCache(15000); FUN_00430de8(10,0x15e,0xfa,0x14); format = GetWinapiStringAlloc(0x4ea4); Sprintf_(local_54,format,(int)in_stack_00000004,(int)in_stack_00000008,(int)DAT_00468f30, (int)DAT_00468f34); TurboFree_(format); Draw::String(15000,local_54,10,0x16d,0); FUN_00430abc(10,0x15e,0x96,0x14); Nfnt::Unload(15000); return; } undefined4 FUN_0043a8d1(void) { int iVar1; iVar1 = 0; while ((*(short *)(DAT_00468f2c + (short)iVar1 * 0x1e) == -1 || (*(short *)(DAT_00468f2c + 8 + (short)iVar1 * 0x1e) != 0))) { iVar1 = iVar1 + 1; if (0x1d < (short)iVar1) { return CONCAT22((short)((uint)iVar1 >> 0x10),1); } } return 0; } undefined4 FUN_0043a911(void) { int iVar1; short sVar2; short in_stack_00000004; sVar2 = 0; while ((((iVar1 = sVar2 * 0xf, *(short *)(DAT_00468f2c + sVar2 * 0x1e) == -1 || (iVar1 = sVar2 * 0xf, *(short *)(DAT_00468f2c + 8 + sVar2 * 0x1e) != 0)) || (in_stack_00000004 == sVar2)) || (iVar1 = FUN_0043a0f3(), (short)iVar1 == 0))) { sVar2 = sVar2 + 1; if (0x1d < sVar2) { return CONCAT22((short)((uint)iVar1 >> 0x10),1); } } return 0; } void FUN_0043a9b2(undefined4 param_1,undefined4 param_2,uint param_3) { FUN_00438e43(param_1,param_2,param_3); FUN_00435d8a(); FUN_0043fef9(DAT_0046269e); return; } void FUN_0043a9ca(void) { undefined4 uVar1; undefined2 *puVar2; short in_stack_00000004; undefined4 uVar3; if (in_stack_00000004 == 0) { PoolFree(DAT_00468f38); } uVar3 = 0x10; puVar2 = PoolAlloc(0x10); DAT_00468f38 = puVar2; *puVar2 = 0; puVar2[1] = 5; puVar2[3] = 0x17a; puVar2[2] = 0x1ff; uVar1 = DAT_00468f48; *(undefined4 *)(puVar2 + 6) = DAT_00468f48; puVar2[5] = 0; FUN_0043b9d2(puVar2,uVar1,uVar3,DAT_00468f38,1); return; } void FUN_0043aa25(void) { FUN_0043b9d2(); return; } void FUN_0043aa32(void) { FUN_0043a9ca(); return; } short FUN_0043aa7d(void) { short sVar1; DlistNode *node; DlistNode *node_00; LAB_0043aa84: node = DlistHead(DAT_00468ff8); sVar1 = DAT_0046276e; do { if (node == (DlistNode *)0x0) { DAT_0046276e = sVar1 + 1; return sVar1; } DAT_0046276e = sVar1; for (node_00 = DlistHead((Dlist *)node[3].next); node_00 != (DlistNode *)0x0; node_00 = DlistNext(node_00)) { if (*(short *)((int)&node_00[1].next + 2) == DAT_0046276e) { DAT_0046276e = DAT_0046276e + 1; if (0x7ef3 < DAT_0046276e) { DAT_0046276e = 0x80; } goto LAB_0043aa84; } } node = DlistNext(node); sVar1 = DAT_0046276e; } while( true ); } int FUN_0043aade(void) { DlistNode *node; short sVar1; short in_stack_00000004; short *in_stack_00000008; sVar1 = 0; node = DlistHead(DAT_00468ff8); while( true ) { if (node == (DlistNode *)0x0) { return 0; } if (in_stack_00000004 == *(short *)((int)&node[1].next + 2)) break; sVar1 = sVar1 + 1; node = DlistNext(node); } if (in_stack_00000008 == (short *)0x0) { return (int)node; } *in_stack_00000008 = sVar1; return (int)node; } undefined4 * FUN_0043ab26(void) { int iVar1; DlistNode *node; ushort in_stack_00000008; node = (DlistNode *)0x0; iVar1 = FUN_0043aade(); if (iVar1 != 0) { if ((in_stack_00000008 & 0x8000) == 0) { node = (DlistNode *)FUN_00435122(); } else { node = DlistHead(*(Dlist **)(iVar1 + 0x18)); while ((node != (DlistNode *)0x0 && ((in_stack_00000008 & 0x7fff) != *(ushort *)((int)&node[1].next + 2)))) { node = DlistNext(node); } } } return &node->next; } void FUN_0043ab87(void) { DAT_00468ff8 = DlistNew(); hMenu_00468ffc = CreateMenu(); SetMenu(Game::window,hMenu_00468ffc); return; } void FUN_0043abad(void) { FUN_0043b291(); DestroyMenu(hMenu_00468ffc); return; } // WARNING: Heritage AFTER dead removal. Example location: EAX : 0x0043abdf // WARNING: Globals starting with '_' overlap smaller symbols at the same address // WARNING: Restarted to delay deadcode elimination for space: register undefined4 FUN_0043abbe(void) { DlistNode *node; int iVar1; Dlist *pDVar2; HMENU pHVar3; undefined4 extraout_EDX; undefined4 uVar4; LPCSTR in_stack_00000004; undefined2 in_stack_00000008; short in_stack_0000000c; undefined4 uVar5; uVar4 = 0; uVar5 = 0x20; node = PoolAlloc(0x20); if (in_stack_0000000c == -1) { iVar1 = FUN_004352c9(node,extraout_EDX,uVar5); in_stack_0000000c = (short)iVar1; } if (node != (DlistNode *)0x0) { *(undefined2 *)((int)&node[1].next + 2) = in_stack_00000008; *(undefined2 *)&node[1].prev = 1; *(undefined2 *)((int)&node[2].prev + 2) = 0; pDVar2 = DlistNew(); node[3].next = (DlistNode *)pDVar2; node[3].prev = (DlistNode *)0x0; *(undefined2 *)&node[1].next = 0; pHVar3 = CreateMenu(); *(HMENU *)((int)&node[1].prev + 2) = pHVar3; InsertMenuA(hMenu_00468ffc,(int)in_stack_0000000c,0x410,*(UINT_PTR *)((int)&node[1].prev + 2), in_stack_00000004); DlistInsert(DAT_00468ff8,node,in_stack_0000000c); uVar4 = 1; if (_DAT_0046276c != 0) { DrawMenuBar(Game::window); } } return uVar4; } undefined4 __stdcall FUN_0043ac64(undefined2 param_1,undefined4 param_2) { int iVar1; undefined4 *puVar2; iVar1 = FUN_0043aade(); if (iVar1 != 0) { puVar2 = FUN_0043ab26(); *(ushort *)(puVar2 + 2) = *(ushort *)(puVar2 + 2) & 0xfffb; EnableMenuItem(*(HMENU *)(iVar1 + 0xe),(int)(short)((ushort)param_2 & 0x7fff),0x400); } return 0; } undefined4 FUN_0043acb4(void) { int iVar1; undefined4 *puVar2; ushort in_stack_00000008; iVar1 = FUN_0043aade(); if (iVar1 != 0) { puVar2 = FUN_0043ab26(); *(ushort *)(puVar2 + 2) = *(ushort *)(puVar2 + 2) | 4; EnableMenuItem(*(HMENU *)(iVar1 + 0xe),(int)(short)(in_stack_00000008 & 0x7fff),0x403); } return 0; } undefined4 FUN_0043ad04(void) { ushort uVar1; int iVar2; undefined4 *puVar3; undefined4 uVar4; ushort in_stack_00000008; short in_stack_0000000c; uVar4 = 0; iVar2 = FUN_0043aade(); if (iVar2 != 0) { puVar3 = FUN_00435122(); if (in_stack_0000000c == 0) { *(ushort *)(puVar3 + 2) = *(ushort *)(puVar3 + 2) & 0xfffd; } else { *(ushort *)(puVar3 + 2) = *(ushort *)(puVar3 + 2) | 2; } uVar1 = 8; if (in_stack_0000000c != 1) { uVar1 = 0; } CheckMenuItem(*(HMENU *)(iVar2 + 0xe),(int)(short)(in_stack_00000008 & 0x7fff), (int)(short)(uVar1 | 0x400)); uVar4 = 1; } return uVar4; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address short FUN_0043ad75(void) { DlistNode *node; Dlist *pDVar1; HMENU hMenu; int iVar2; DlistNode *node_00; UINT UVar3; short sVar4; ushort in_stack_00000004; CHAR local_40 [52]; HMENU local_c; ushort local_8; short local_6; sVar4 = 0; node = PoolAlloc(0x20); *(ushort *)((int)&node[1].next + 2) = in_stack_00000004; *(undefined2 *)&node[1].prev = 1; pDVar1 = DlistNew(); node[3].next = (DlistNode *)pDVar1; *(undefined2 *)&node[1].next = 1; hMenu = LoadMenuA(_Module,(LPCSTR)(uint)in_stack_00000004); *(HMENU *)((int)&node[2].next + 2) = hMenu; local_c = GetSubMenu(hMenu,0); if (local_c == (HMENU)0x0) { PoolFree(node); } else { GetMenuStringA(hMenu,0,local_40,0x31,0x400); *(HMENU *)((int)&node[1].prev + 2) = local_c; AppendMenuA(hMenu_00468ffc,0x410,(UINT_PTR)local_c,local_40); iVar2 = GetMenuItemCount(local_c); local_6 = (short)iVar2; node_00 = PoolAlloc((int)local_6 << 4); node[3].prev = node_00; sVar4 = 0; if (0 < local_6) { do { local_8 = 1; UVar3 = GetMenuItemID(local_c,(int)sVar4); *(short *)((int)&node_00[1].next + 2) = (short)UVar3; UVar3 = GetMenuState(local_c,(int)sVar4,0x400); if ((UVar3 & 8) != 0) { local_8 = local_8 | 2; } if ((UVar3 & 1) != 0) { local_8 = local_8 | 4; } if ((UVar3 & 0x800) != 0) { local_8 = local_8 | 8; } *(ushort *)&node_00[1].next = local_8; node_00[1].prev = (DlistNode *)&DAT_0043aa7c; DlistInsert((Dlist *)node[3].next,node_00,-1); node_00 = node_00 + 2; sVar4 = sVar4 + 1; } while (sVar4 < local_6); } sVar4 = 1; } if (sVar4 != 0) { DlistInsert(DAT_00468ff8,node,-1); if (_DAT_0046276c != 0) { DrawMenuBar(Game::window); } } return sVar4; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address undefined4 FUN_0043aed8(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined2 param_4) { DlistNode *node; DlistNode *node_00; DlistNode *pDVar1; undefined4 uVar2; short local_6; uVar2 = 0; node_00 = (DlistNode *)FUN_0043aade(); if (node_00 != (DlistNode *)0x0) { local_6 = (short)((uint)param_3 >> 0x10); DeleteMenu(hMenu_00468ffc,(int)local_6,0x400); if (((uint)node_00[1].next & 1) != 0) { DestroyMenu(*(HMENU *)((int)&node_00[2].next + 2)); } pDVar1 = DlistHead((Dlist *)node_00[3].next); while (node = pDVar1, node != (DlistNode *)0x0) { pDVar1 = DlistNext(node); DlistRemove((Dlist *)node_00[3].next,node); if (((uint)node[1].next & 1) == 0) { PoolFree(node); } } if (node_00[3].prev != (DlistNode *)0x0) { PoolFree(node_00[3].prev); } PoolFreeIfNotNull(node_00[3].next); DlistRemove(DAT_00468ff8,node_00); PoolFree(node_00); if (_DAT_0046276c != 0) { DrawMenuBar(Game::window); } uVar2 = 1; } return uVar2; } undefined4 FUN_0043afa5(void) { return 0; } undefined4 FUN_0043afac(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4, undefined2 param_5) { int iVar1; DlistNode *node; undefined4 uVar2; short local_6; uVar2 = 0; iVar1 = FUN_0043aade(); if (iVar1 != 0) { node = (DlistNode *)FUN_0043ab26(); DlistRemove(*(Dlist **)(iVar1 + 0x18),node); if (((uint)node[1].next & 1) == 0) { PoolFree(node); } local_6 = (short)((uint)param_3 >> 0x10); RemoveMenu(*(HMENU *)(iVar1 + 0xe),(int)local_6,0x400); uVar2 = CONCAT22((short)((uint)node >> 0x10),1); } return uVar2; } short FUN_0043b012(void) { short sVar1; int iVar2; DlistNode *node; short in_stack_00000008; LPCSTR in_stack_0000000c; DlistNode *in_stack_00000010; sVar1 = 0; iVar2 = FUN_0043aade(); if (iVar2 != 0) { node = PoolAlloc(0x10); *(undefined2 *)&node[1].next = 0; sVar1 = FUN_0043aa7d(); *(short *)((int)&node[1].next + 2) = sVar1; node[1].prev = in_stack_00000010; DlistInsert(*(Dlist **)(iVar2 + 0x18),node,-1); FUN_004352c9(); if (in_stack_0000000c == (LPCSTR)0x0) { InsertMenuA(*(HMENU *)(iVar2 + 0xe),(int)in_stack_00000008,0x400,0x800,(LPCSTR)0x0); } else { AppendMenuA(*(HMENU *)(iVar2 + 0xe),0,(int)sVar1,in_stack_0000000c); } } return sVar1; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address undefined4 FUN_0043b0b8(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined2 param_4) { int iVar1; undefined4 uVar2; undefined2 local_6; uVar2 = 0; iVar1 = FUN_0043aade(); if ((iVar1 != 0) && (*(short *)(iVar1 + 0xc) == 0)) { *(undefined2 *)(iVar1 + 0xc) = 1; local_6 = (short)((uint)param_3 >> 0x10); EnableMenuItem(hMenu_00468ffc,(int)local_6,0x400); uVar2 = 1; if (_DAT_0046276c != 0) { DrawMenuBar(Game::window); } } return uVar2; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address undefined4 FUN_0043b115(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined2 param_4) { int iVar1; undefined4 uVar2; undefined2 local_6; uVar2 = 0; iVar1 = FUN_0043aade(); if ((iVar1 != 0) && (*(short *)(iVar1 + 0xc) != 0)) { *(undefined2 *)(iVar1 + 0xc) = 0; local_6 = (short)((uint)param_3 >> 0x10); EnableMenuItem(hMenu_00468ffc,(int)local_6,0x401); uVar2 = 1; if (_DAT_0046276c != 0) { DrawMenuBar(Game::window); } } return uVar2; } void FUN_0043b1cc(void) { DlistNode *node; Dlist *pDVar1; int iVar2; int in_stack_00000004; Dlist *list; Dlist *node_00; node = DlistHead(DAT_00468ff8); do { if (node == (DlistNode *)0x0) { return; } list = (Dlist *)node[3].next; pDVar1 = (Dlist *)DlistHead(list); while (node_00 = pDVar1, node_00 != (Dlist *)0x0) { iVar2 = (int)*(short *)((int)&node_00[1].head + 2); if (in_stack_00000004 == iVar2) { (*(code *)node_00[1].tail)(node_00,iVar2,list); return; } pDVar1 = (Dlist *)DlistNext((DlistNode *)node_00); list = node_00; } node = DlistNext(node); } while( true ); } void FUN_0043b21c(void) { int iVar1; undefined4 *puVar2; undefined4 in_stack_0000000c; iVar1 = FUN_0043aade(); if (iVar1 != 0) { puVar2 = FUN_00435122(); if (puVar2 != (undefined4 *)0x0) { puVar2[3] = in_stack_0000000c; } } return; } void FUN_0043b24e(void) { int iVar1; DlistNode *node; undefined4 *in_stack_00000008; iVar1 = FUN_0043aade(); if (iVar1 != 0) { for (node = DlistHead(*(Dlist **)(iVar1 + 0x18)); node != (DlistNode *)0x0; node = DlistNext(node)) { if (((uint)node[1].next & 8) == 0) { node[1].prev = (DlistNode *)*in_stack_00000008; in_stack_00000008 = in_stack_00000008 + 1; } } } return; } void FUN_0043b291(void) { undefined2 uVar1; DlistNode *node; DlistNode *pDVar2; undefined4 extraout_EDX; DlistNode *pDVar3; node = DlistHead(DAT_00468ff8); while (node != (DlistNode *)0x0) { pDVar3 = node; pDVar2 = DlistNext(node); uVar1 = *(undefined2 *)((int)&node[1].next + 2); FUN_0043aed8(CONCAT22((short)((uint)pDVar2 >> 0x10),uVar1),extraout_EDX,pDVar3,uVar1); node = pDVar2; } return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address int FUN_0043b2c2(short param_1,undefined4 param_2,uint param_3,ushort param_4) { ushort *puVar1; undefined4 extraout_EDX; int iVar2; uint uVar3; iVar2 = 0; _DAT_0046276c = 0; puVar1 = (ushort *)&stack0x00000008; while (uVar3 = (uint)param_4, param_4 != 0xffff) { param_1 = FUN_0043ad75(param_1,param_2,param_3); if (param_1 != 0) { iVar2 = iVar2 + 1; } param_4 = *puVar1; puVar1 = puVar1 + 2; param_3 = uVar3; param_2 = extraout_EDX; } _DAT_0046276c = 1; DrawMenuBar(Game::window); return iVar2; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_0043b318(void) { short sVar1; short sVar2; short in_stack_00000004; short in_stack_00000008; short in_stack_0000000c; short in_stack_00000010; RECT local_1c; tagPOINT local_c; sVar1 = 0; sVar2 = 0; if (_DAT_00462778 != 0) { sVar1 = DAT_0046900a; sVar2 = DAT_0046900c; } in_stack_00000004 = in_stack_00000004 + (short)Game::mouseInputRect.left; in_stack_00000008 = in_stack_00000008 + (short)Game::mouseInputRect.top; local_c.x = ((int)in_stack_00000004 + (int)in_stack_0000000c) - (int)sVar1; local_c.y = ((int)in_stack_00000008 + (int)in_stack_00000010) - (int)sVar2; ClientToScreen(Game::window,&local_c); local_1c.right = local_c.x; local_1c.bottom = local_c.y; local_c.x = (LONG)in_stack_00000004; local_c.y = (LONG)in_stack_00000008; ClientToScreen(Game::window,&local_c); local_1c.left = local_c.x; local_1c.top = local_c.y; ClipCursor(&local_1c); DAT_00462782 = 1; Memcpy(&DAT_00469028,&local_1c,8); return; } void FUN_0043b3e0(void) { RECT local_14; local_14.left = (LONG)DAT_00469030; local_14.top = (LONG)DAT_00469032; local_14.right = (int)DAT_00469030 + (int)DAT_00469034; local_14.bottom = (int)DAT_00469032 + (int)DAT_00469036; ClipCursor(&local_14); DAT_00462782 = 0; return; } void FUN_0043b427(void) { DAT_00462780 = DAT_00462782; if (DAT_00462782 != 0) { FUN_0043b3e0(); } return; } void FUN_0043b443(void) { DAT_00462782 = DAT_00462780; if (DAT_00462780 != 0) { FUN_0043b318(); } return; } uint FUN_0043b47e(void) { undefined4 unaff_EBX; uint uVar1; uVar1 = CONCAT22((short)((uint)unaff_EBX >> 0x10),DAT_00462770); if (DAT_00462770 == 0) { DAT_00462770 = 1; ShowCursor(0); } return uVar1; } uint FUN_0043b4a4(void) { undefined4 unaff_EBX; uint uVar1; uVar1 = CONCAT22((short)((uint)unaff_EBX >> 0x10),DAT_00462770); if (DAT_00462770 != 0) { ShowCursor(1); DAT_00462770 = 0; } return uVar1; } void FUN_0043b4ca(void) { short in_stack_00000004; if (in_stack_00000004 != 0) { FUN_0043b6ec(); return; } FUN_0043b563(); return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_0043b4e2(undefined4 param_1,undefined4 param_2,undefined4 param_3,int param_4) { undefined2 local_8; undefined2 local_6; FUN_0044fbfd(); FUN_0043b656(); FUN_0043b47e(); DAT_0046277c = param_4; Memcpy(&DAT_00469002,(void *)param_4,0x26); local_8 = (undefined2)param_3; DAT_00469006 = local_8; local_6 = (undefined2)((uint)param_3 >> 0x10); DAT_00469008 = local_6; _DAT_0046901a = 1; _DAT_00462778 = 1; *(undefined2 *)(param_4 + 0x10) = 1; _DAT_00469012 = 1; if (*(short *)(param_4 + 0x12) != 0) { FUN_0043b318(); } return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_0043b563(void) { if (_DAT_0046901a == 0) { FUN_0041179f(); Draw::DirtyRect((Rect16 *)&DAT_00469006); _DAT_0046901a = 1; } return; } int FUN_0043b58e(void) { undefined2 uVar1; int iVar2; short sVar3; void *pvVar4; int iVar5; uint len; void *pvVar6; int iVar7; int in_stack_00000004; undefined2 in_stack_00000008; undefined2 in_stack_0000000c; int iVar8; iVar8 = 0x26; pvVar4 = PoolAlloc(0x26); *(undefined2 *)((int)pvVar4 + 6) = 0; *(undefined2 *)((int)pvVar4 + 4) = 0; iVar2 = *(int *)(in_stack_00000004 + 0x22); iVar5 = *(int *)(*(int *)(in_stack_00000004 + 0x26) + 0x12) + iVar2; *(int *)((int)pvVar4 + 0x14) = iVar5; sVar3 = 0; do { iVar7 = *(int *)(in_stack_00000004 + 0x26); if (*(short *)(iVar7 + 10) <= sVar3) { LAB_0043b5e1: *(undefined2 *)((int)pvVar4 + 8) = *(undefined2 *)(iVar5 + 2); *(undefined2 *)((int)pvVar4 + 10) = *(undefined2 *)(iVar5 + 4); *(int *)((int)pvVar4 + 0x1e) = in_stack_00000004; uVar1 = *(undefined2 *)(in_stack_00000004 + 0x6e); *(undefined2 *)((int)pvVar4 + 0x24) = uVar1; FUN_00413af4(CONCAT22((short)((uint)iVar5 >> 0x10),uVar1),iVar7,iVar8,in_stack_00000004,0); len = FUN_00431dde(); pvVar6 = PoolAlloc(len); *(void **)((int)pvVar4 + 0x1a) = pvVar6; *(undefined2 *)((int)pvVar4 + 0x18) = 0; *(undefined2 *)((int)pvVar4 + 0x10) = 0; *(undefined2 *)((int)pvVar4 + 0x12) = 1; *(undefined2 *)((int)pvVar4 + 0xc) = in_stack_00000008; *(undefined2 *)((int)pvVar4 + 0xe) = in_stack_0000000c; return (int)pvVar4; } iVar7 = (int)sVar3; iVar8 = *(int *)(*(int *)(in_stack_00000004 + 0x26) + 0x16); if (iVar2 == *(int *)(iVar8 + iVar7 * 4)) { *(short *)((int)pvVar4 + 0x22) = sVar3; goto LAB_0043b5e1; } sVar3 = sVar3 + 1; } while( true ); } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_0043b656(void) { if (_DAT_00462778 != 0) { FUN_0043b563(); FUN_00413af4(); _DAT_0046901a = 0xffff; _DAT_00462778 = 0; FUN_0043b3e0(); FUN_0043b4a4(); DAT_0046277c = 0; } return; } undefined4 FUN_0043b69e(void) { void *in_stack_00000004; FUN_0043b656(); PoolFree(*(void **)((int)in_stack_00000004 + 0x1a)); PoolFree(in_stack_00000004); return 0; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_0043b6bf(void) { if (DAT_0046277c != 0) { DAT_0046277c = FUN_0043b69e(); } _DAT_0046901a = 0xffff; _DAT_00469012 = 0; return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_0043b6ec(void) { short sVar1; short sVar2; bool bVar3; short *psVar4; ushort *puVar5; int iVar6; short local_a; ushort local_8; short local_6; puVar5 = &local_8; FUN_0044fbfd(); DAT_00469006 = local_8 & 0xfffe; DAT_00469008 = local_6; if (DAT_00462774 == (short *)0x0) { bVar3 = true; } else { bVar3 = false; psVar4 = DAT_00462774; for (local_a = 0; local_a < _DAT_00462772; local_a = local_a + 1) { sVar1 = *psVar4; sVar2 = psVar4[1]; if (psVar4[5] == 0) { if ((((sVar1 <= (short)DAT_00469006) && (puVar5 = (ushort *)(int)(short)DAT_00469006, (int)puVar5 < (int)sVar1 + (int)psVar4[2] )) && (sVar2 <= local_6)) && (puVar5 = (ushort *)(int)local_6, (int)puVar5 < (int)sVar2 + (int)psVar4[3])) { bVar3 = true; break; } } else { iVar6 = ((int)*psVar4 + (int)psVar4[2] + -1) - (int)sVar1; puVar5 = (ushort *)(((int)local_6 - (int)sVar2) * ((int)local_6 - (int)sVar2)); if ((ushort *) (((int)(short)DAT_00469006 - (int)sVar1) * ((int)(short)DAT_00469006 - (int)sVar1) + (int)puVar5) < (ushort *)(iVar6 * iVar6)) { bVar3 = true; break; } } psVar4 = psVar4 + 8; } if ((bVar3) && (*(int *)(psVar4 + 6) != DAT_0046277c)) { FUN_0043b4e2(psVar4,*(int *)(psVar4 + 6),puVar5,*(int *)(psVar4 + 6)); } } if (!bVar3) { FUN_0043b656(); } if (_DAT_0046901a == 1) { DAT_0046900a = *(short *)(DAT_00469016 + 2); DAT_0046900c = *(short *)(DAT_00469016 + 4); if (0x1ff < (int)(short)DAT_00469006 + (int)DAT_0046900a) { DAT_0046900a = 0x200 - DAT_00469006; } if (0x17f < (int)DAT_00469008 + (int)DAT_0046900c) { DAT_0046900c = 0x180 - DAT_00469008; } if (0x17f < DAT_00469008) { DAT_00469008 = 0x17f; } if (0x1ff < (short)DAT_00469006) { DAT_00469006 = 0x1ff; } if ((0 < DAT_0046900a) && (0 < DAT_0046900c)) { FUN_0043b47e(); FUN_0041172c(&DAT_00469006,DAT_0046901c); FUN_00413b88(); _DAT_00462778 = 1; _DAT_0046901a = 0; } } return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_0043b972(void) { tagRECT local_14; GetClipCursor(&local_14); DAT_00469030 = (short)local_14.left; DAT_00469032 = (short)local_14.top; DAT_00469034 = (short)local_14.right - (short)local_14.left; DAT_00469036 = (short)local_14.bottom - (short)local_14.top; _DAT_0046901a = 0xffff; _DAT_00469012 = 0; FUN_00413e74(); return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_0043b9d2(void) { int in_stack_00000004; undefined2 in_stack_00000008; if (in_stack_00000004 == 0) { FUN_0043b656(); } DAT_00462774 = in_stack_00000004; _DAT_00462772 = in_stack_00000008; return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_0043b9f5(void) { if (_DAT_00462784 == 0) { FUN_0043b656(); DAT_00462788 = DAT_00462774; DAT_00462774 = 0; } _DAT_00462784 = _DAT_00462784 + 1; return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_0043ba1d(void) { if ((_DAT_00462784 != 0) && (_DAT_00462784 = _DAT_00462784 + -1, _DAT_00462784 == 0)) { DAT_00462774 = DAT_00462788; } return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_0043ba43(void) { undefined2 *in_stack_00000004; undefined2 *in_stack_00000008; if (_DAT_00462778 != 0) { *in_stack_00000004 = DAT_0046900e; *in_stack_00000008 = DAT_00469010; return; } *in_stack_00000008 = 0; *in_stack_00000004 = 0; return; } void FUN_0043ba8c(void) { undefined2 *object; void *pvVar1; undefined4 uVar2; undefined4 extraout_EDX; undefined4 extraout_EDX_00; ushort in_stack_00000004; ushort in_stack_00000008; ushort in_stack_0000000c; ushort *in_stack_00000010; undefined2 *puVar3; undefined4 uVar4; char local_54 [80]; object = (undefined2 *)FUN_0044c2df(); *object = 0xffff; object[1] = 0xffff; pvVar1 = Resource::Load(in_stack_00000004,_pTEXT); *(void **)(object + 0xd) = pvVar1; GetWinapiString(local_54,0x4e59); Sprintf_(&DAT_00469040,local_54,&DAT_0046278e); *(undefined **)(object + 0xf) = &DAT_00469040; if (*in_stack_00000010 != 0) { in_stack_00000008 = in_stack_0000000c; } pvVar1 = Resource::Load(in_stack_00000008,_pTEXT); *(void **)(object + 0x11) = pvVar1; puVar3 = object; uVar2 = FUN_0044c371(object); if ((short)uVar2 != 0) { *in_stack_00000010 = *in_stack_00000010 ^ 1; } uVar4 = *(undefined4 *)(object + 0xd); uVar2 = FUN_0044073c(uVar2,extraout_EDX,puVar3); FUN_0044073c(uVar2,extraout_EDX_00,uVar4,*(undefined4 *)(object + 0x11)); PoolFree(object); return; } // WARNING: Removing unreachable block (ram,0x0043bb6f) void FUN_0043bb3e(void) { FUN_0044713f(); FUN_0043ba8c(); return; } void FUN_0043bb89(void) { FUN_0044714d(); FUN_0043ba8c(); FUN_00447154(); return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_0043bc68(void) { short sVar1; undefined4 extraout_EDX; undefined4 extraout_EDX_00; undefined4 extraout_EDX_01; undefined4 uVar2; if (_DAT_0046278c == 0) { DAT_00469090 = 1; DAT_00469092 = 1; Game::onWmSyscommand2000 = &LAB_0043bc58; uVar2 = 500; sVar1 = FUN_0043ad75(); FUN_0043b21c(sVar1,extraout_EDX,uVar2,500,0,&LAB_0042fd90); FUN_0043acb4(); DAT_004690a0 = 0; FUN_0043b21c(); FUN_0043acb4(); DAT_004690a2 = 0; FUN_0043b21c(); FUN_0043ac64(500,2); DAT_004690a4 = 1; uVar2 = 600; sVar1 = FUN_0043ad75(); FUN_0043b21c(sVar1,extraout_EDX_00,uVar2,600,0,&LAB_0043bbd4); FUN_0043acb4(); DAT_004690b0 = 0; FUN_0043b21c(); DAT_004690b2 = 1; FUN_0043b21c(); DAT_004690b4 = 1; FUN_0043b21c(); DAT_004690b6 = 1; uVar2 = 700; sVar1 = FUN_0043ad75(); FUN_0043b21c(sVar1,extraout_EDX_01,uVar2,700,0,&LAB_0043bbbf); DAT_004690c0 = 1; FUN_0043b21c(); DAT_004690c2 = 1; FUN_0043b21c(); DAT_004690c4 = 1; FUN_0043b21c(); DAT_004690c6 = 1; FUN_0043b21c(); DAT_004690c8 = 1; FUN_0043b21c(); DAT_004690ca = 1; FUN_0043b21c(); DAT_004690cc = 1; _DAT_0046278c = 1; } return; } void FUN_0043be66(void) { HMENU hMenu; short sVar1; byte in_stack_00000004; ushort in_stack_00000008; short in_stack_0000000c; if ((in_stack_00000004 & 1) != 0) { sVar1 = 0; do { if (((uint)in_stack_00000008 == (int)sVar1) || (in_stack_00000008 == 0xffff)) { FUN_0043acb4(); if (in_stack_0000000c == 0) { (&DAT_004690a0)[sVar1] = (&DAT_004690a0)[sVar1] << 1; } else { (&DAT_004690a0)[sVar1] = 0; } } sVar1 = sVar1 + 1; } while (sVar1 < 3); } if ((in_stack_00000004 & 2) != 0) { sVar1 = 0; do { if (((uint)in_stack_00000008 == (int)sVar1) || (in_stack_00000008 == 0xffff)) { FUN_0043acb4(); if (in_stack_0000000c == 0) { (&DAT_004690b0)[sVar1] = (&DAT_004690b0)[sVar1] << 1; } else { (&DAT_004690b0)[sVar1] = 0; } } sVar1 = sVar1 + 1; } while (sVar1 < 4); } if ((in_stack_00000004 & 4) != 0) { sVar1 = 0; do { if (((uint)in_stack_00000008 == (int)sVar1) || (in_stack_00000008 == 0xffff)) { FUN_0043acb4(); if (in_stack_0000000c == 0) { (&DAT_004690c0)[sVar1] = (&DAT_004690c0)[sVar1] << 1; } else { (&DAT_004690c0)[sVar1] = 0; } } sVar1 = sVar1 + 1; } while (sVar1 < 7); } if ((in_stack_00000004 & 8) != 0) { hMenu = GetSystemMenu(Game::window,0); sVar1 = 0; do { if (((uint)in_stack_00000008 == (int)sVar1) || (in_stack_00000008 == 0xffff)) { if (in_stack_0000000c == 0) { (&DAT_00469090)[sVar1] = (&DAT_00469090)[sVar1] << 1; } else { (&DAT_00469090)[sVar1] = 0; } if (sVar1 == 0) { EnableMenuItem(hMenu,0,0x403); } else if (sVar1 == 1) { EnableMenuItem(hMenu,0xf060,3); EnableMenuItem(hMenu,0xf020,3); } } sVar1 = sVar1 + 1; } while (sVar1 < 2); } return; } void __stdcall FUN_0043bfee(byte param_1,undefined4 param_2,undefined4 param_3) { HMENU hMenu; short sVar1; int iVar2; if ((param_1 & 1) != 0) { iVar2 = 0; do { sVar1 = (short)iVar2; if (((uint)(ushort)param_2 == (int)sVar1) || ((ushort)param_2 == 0xffff)) { (&DAT_004690a0)[sVar1] = (short)(&DAT_004690a0)[sVar1] >> 1; if ((short)param_3 != 0) { (&DAT_004690a0)[sVar1] = 1; } if ((*(byte *)(&DAT_004690a0 + sVar1) & 1) != 0) { FUN_0043ac64(500,iVar2); } } iVar2 = iVar2 + 1; } while ((short)iVar2 < 3); } if ((param_1 & 2) != 0) { iVar2 = 0; do { sVar1 = (short)iVar2; if (((uint)(ushort)param_2 == (int)sVar1) || ((ushort)param_2 == 0xffff)) { (&DAT_004690b0)[sVar1] = (short)(&DAT_004690b0)[sVar1] >> 1; if ((short)param_3 != 0) { (&DAT_004690b0)[sVar1] = 1; } if ((*(byte *)(&DAT_004690b0 + sVar1) & 1) != 0) { FUN_0043ac64(600,iVar2); } } iVar2 = iVar2 + 1; } while ((short)iVar2 < 4); } if ((param_1 & 4) != 0) { iVar2 = 0; do { sVar1 = (short)iVar2; if (((uint)(ushort)param_2 == (int)sVar1) || ((ushort)param_2 == 0xffff)) { (&DAT_004690c0)[sVar1] = (short)(&DAT_004690c0)[sVar1] >> 1; if ((short)param_3 != 0) { (&DAT_004690c0)[sVar1] = 1; } if ((*(byte *)(&DAT_004690c0 + sVar1) & 1) != 0) { FUN_0043ac64(700,iVar2); } } iVar2 = iVar2 + 1; } while ((short)iVar2 < 7); } if ((param_1 & 8) != 0) { hMenu = GetSystemMenu(Game::window,0); sVar1 = 0; do { if (((uint)(ushort)param_2 == (int)sVar1) || ((ushort)param_2 == 0xffff)) { (&DAT_00469090)[sVar1] = (short)(&DAT_00469090)[sVar1] >> 1; if ((short)param_3 != 0) { (&DAT_00469090)[sVar1] = 1; } if ((*(byte *)(&DAT_00469090 + sVar1) & 1) != 0) { if (sVar1 == 0) { EnableMenuItem(hMenu,0,0x400); } else if (sVar1 == 1) { EnableMenuItem(hMenu,0xf060,0); EnableMenuItem(hMenu,0xf020,0); } } } sVar1 = sVar1 + 1; } while (sVar1 < 2); } return; } uint FUN_0043c1a2(void) { short in_stack_00000004; short in_stack_00000008; return CONCAT22(in_stack_00000008 >> 0xf, (&DAT_00469090)[in_stack_00000004 * 8 + (int)in_stack_00000008]) & 0xffff0001; } void FUN_0043c1c0(void) { short sVar1; uint in_stack_00000004; _Pool_usedNodes = TurboAlloc_(8); _Pool_usedNodes[1] = 0; *_Pool_usedNodes = 0; _Pool_freeNodes = TurboAlloc_(8); _Pool_freeNodes->tail = (DlistNode *)0x0; _Pool_freeNodes->head = (DlistNode *)0x0; DAT_004690d8 = TurboAlloc_((in_stack_00000004 & 0xffff) * 0xc); for (sVar1 = 0; (int)sVar1 < (int)(in_stack_00000004 & 0xffff); sVar1 = sVar1 + 1) { DlistInsert(_Pool_freeNodes,(DlistNode *)(sVar1 * 0xc + (int)DAT_004690d8),-1); } return; } void FUN_0043c249(void) { FUN_0043c323(); TurboFree_(_Pool_freeNodes); TurboFree_(_Pool_usedNodes); TurboFree_(DAT_004690d8); return; } void FUN_0043c323(void) { return; } void FUN_0043c324(void) { return; } void FUN_0043c325(void) { return; } void FUN_0043c32a(void) { FUN_0043c325(); return; } undefined4 FUN_0043c338(void) { int iVar1; undefined4 uVar2; int in_stack_00000004; int in_stack_00000008; iVar1 = *(int *)(in_stack_00000008 + 10) - *(int *)(in_stack_00000004 + 10); if (iVar1 < 1) { if (iVar1 < 0) { uVar2 = 0xffffffff; } else { uVar2 = 0; } } else { uVar2 = CONCAT22((short)((uint)iVar1 >> 0x10),1); } return uVar2; } void FUN_0043c35e(void) { short sVar1; DAT_004693c0 = DlistNew(); sVar1 = 0; do { (&DAT_0046936c)[sVar1 * 9] = 0xffff; sVar1 = sVar1 + 1; } while (sVar1 < 5); return; } void FUN_0043c382(void) { int iVar1; short sVar2; short in_stack_00000004; ushort in_stack_00000008; undefined4 in_stack_0000000c; if ((DAT_00462790 == 0) && (*(short *)(_GameState->field43_0x40 + in_stack_00000004 * 2 + 2) == 0) ) { sVar2 = 0; do { if ((&DAT_0046936c)[sVar2 * 9] == -1) break; sVar2 = sVar2 + 1; } while (sVar2 < 5); (&DAT_0046936c)[sVar2 * 9] = in_stack_00000004; iVar1 = FUN_0044ca04(); *(uint *)(sVar2 * 0x12 + 0x46936e) = iVar1 + (uint)in_stack_00000008; *(undefined4 *)(sVar2 * 0x12 + 0x469372) = in_stack_0000000c; FUN_00435151(DAT_004693c0,&DAT_00469364 + sVar2 * 0x12,FUN_0043c338); } return; } void FUN_0043c412(void) { undefined4 uVar1; undefined4 extraout_EDX; void *in_stack_00000004; undefined4 uVar2; uVar2 = *(undefined4 *)((int)in_stack_00000004 + 0x26); uVar1 = FUN_0044073c(); FUN_0044073c(uVar1,extraout_EDX,uVar2,*(undefined4 *)((int)in_stack_00000004 + 0x22)); PoolFree(in_stack_00000004); return; } undefined4 FUN_0043c435(void) { short sVar1; DlistNode *node; uint uVar2; undefined4 uVar3; uVar3 = 0; node = DlistHead(DAT_004693c0); if (node != (DlistNode *)0x0) { uVar2 = FUN_0044ca04(); if (*(uint *)((int)&node[1].next + 2) < uVar2) { sVar1 = *(short *)&node[1].next; if ((*(int *)((int)&node[1].prev + 2) == 0) || (**(short **)((int)&node[1].prev + 2) == 0)) { FUN_0043c4ec(); uVar3 = 1; } DlistRemove(DAT_004693c0,node); *(undefined2 *)&node[1].next = 0xffff; *(undefined2 *)(_GameState->field43_0x40 + sVar1 * 2 + 2) = 1; } } return uVar3; } void FUN_0043c49f(void) { short sVar1; DlistInit(DAT_004693c0); sVar1 = 0; do { (&DAT_0046936c)[sVar1 * 9] = 0xffff; sVar1 = sVar1 + 1; } while (sVar1 < 5); return; } void FUN_0043c4ec(void) { short sVar1; undefined2 *object; void *pvVar2; short in_stack_00000004; char local_54 [80]; if ((DAT_00462790 == 0) && (*(short *)(_GameState->field43_0x40 + in_stack_00000004 * 2 + 2) == 0) ) { object = (undefined2 *)FUN_0044c32f(); *object = 0xffff; object[1] = 0xffff; GetWinapiString(&DAT_004690e0,0x4e5a); GetWinapiString(local_54,0x4e5b); Sprintf_(&DAT_00469220,local_54,&DAT_00462794); *(undefined **)(object + 0xd) = &DAT_004690e0; *(undefined **)(object + 0xf) = &DAT_00469220; pvVar2 = Resource::Load(in_stack_00000004 + 0x4b0,&_TEXT27); *(void **)(object + 0x11) = pvVar2; sVar1 = FUN_0044714d(); if (sVar1 == 0) { *(undefined4 *)(object + 0x13) = 0; } else { pvVar2 = Resource::Load(in_stack_00000004 + 0x4b0,&_INTS3); *(void **)(object + 0x13) = pvVar2; } FUN_0044c371(object); FUN_0044073c(); if (*(int *)(object + 0x13) != 0) { FUN_0044073c(); } PoolFree(object); } *(undefined2 *)(_GameState->field43_0x40 + in_stack_00000004 * 2 + 2) = 1; return; } void FUN_0043c5ee(void) { int iVar1; DlistNode *node; char *dest; char local_298 [500]; char local_a4 [80]; char local_54 [80]; iVar1 = FUN_004352c9(); if ((short)iVar1 != 0) { GetWinapiString(local_54,0x4e8f); iVar1 = FUN_0044ca04(); iVar1 = Sprintf_(local_298,local_54,iVar1); dest = local_298 + iVar1; for (node = DlistHead(DAT_004693c0); node != (DlistNode *)0x0; node = DlistNext(node)) { GetWinapiString(local_a4,0x4e90); iVar1 = Sprintf_(dest,local_a4,(int)*(short *)&node[1].next, *(undefined4 *)((int)&node[1].next + 2)); dest = dest + iVar1; } ShowAlertMessage(local_298); } return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_0043c729(uint param_1,undefined4 param_2,undefined *param_3) { uint uVar1; uint uVar2; undefined4 uVar3; undefined1 *extraout_ECX; uint extraout_ECX_00; undefined4 extraout_EDX; undefined4 extraout_EDX_00; undefined4 extraout_EDX_01; short sVar4; int iVar5; int iVar6; if (_DAT_004627a6 == 0) { FUN_00446186(0x1784); param_1 = FUN_004466f9(); _DAT_004627a6 = 1; param_3 = extraout_ECX; param_2 = extraout_EDX; } if (DAT_00461aa8 == 0) { DAT_00461aa8 = FUN_004474c6(param_1,param_2,(uint)param_3,0x643); FUN_0041704f(); param_3 = &LAB_0043c6f1; param_1 = FUN_0041029e(); param_2 = extraout_EDX_00; } _DAT_004627a4 = 0; FUN_00431024(param_1,param_2,(uint)param_3,0x642); uVar1 = FUN_00412ac4(0x640); uVar2 = FUN_00413cf4(); FUN_00412d0c(uVar2,extraout_EDX_01,extraout_ECX_00,uVar1); DAT_004693d8 = PoolAlloc(0x20); sVar4 = 0; do { uVar3 = FUN_00412ac4(sVar4 + 0x68f); *(undefined4 *)((int)DAT_004693d8 + sVar4 * 4) = uVar3; FUN_00412dc8(*(undefined4 *)((int)DAT_004693d8 + sVar4 * 4)); sVar4 = sVar4 + 1; } while (sVar4 < 8); DAT_0046a874 = FUN_00412ac4(0x641); FUN_00412dc8(DAT_0046a874); DAT_0046a878 = FUN_00412ac4(0x642); FUN_00412dc8(DAT_0046a878); iVar5 = 0; do { iVar6 = iVar5 + 0x697; uVar3 = FUN_00412ac4((ushort)iVar6); sVar4 = (short)iVar5; (&DAT_004693dc)[sVar4] = uVar3; iVar5 = iVar5 + 1; } while ((short)iVar5 < 4); FUN_004116e1(uVar3,(int)sVar4,iVar6,0x80,&DAT_0046943c,0xff); FUN_0041395c(DAT_004693dc,0x5e,0x11,5); FUN_0044ca1c(); FUN_00412ec0(); FUN_0041395c(DAT_004693e0,0x53,0x62,5); FUN_0044ca1c(); FUN_00412ec0(); FUN_0041395c(DAT_004693e4,0x9e,0x109,5); FUN_0044ca1c(); FUN_00412ec0(); FUN_0044ca1c(); DAT_00469428 = FUN_0044ca44(); DAT_00469430 = 0x1f9c; FUN_00413828(); FUN_0043139c(); return; } void FUN_0043c91a(uint param_1,undefined4 param_2,uint param_3) { void *pvVar1; undefined4 uVar2; void *pvVar3; undefined4 extraout_EDX; int iVar4; short sVar5; uint uVar6; uVar6 = DAT_0046a874; DAT_0046a874 = FUN_00412d0c(param_1,param_2,param_3,DAT_0046a874); pvVar3 = DAT_0046a878; DAT_0046a878 = (void *)FUN_00412d0c(DAT_0046a874,extraout_EDX,uVar6,(uint)DAT_0046a878); sVar5 = 0; do { uVar2 = FUN_00412d0c((int)sVar5,DAT_004693d8,(uint)pvVar3, *(uint *)((int)DAT_004693d8 + sVar5 * 4)); pvVar3 = DAT_004693d8; iVar4 = (int)sVar5; *(undefined4 *)((int)DAT_004693d8 + iVar4 * 4) = uVar2; sVar5 = sVar5 + 1; } while (sVar5 < 8); sVar5 = 0; do { pvVar1 = (void *)(&DAT_004693dc)[sVar5]; uVar2 = FUN_00412d0c((int)sVar5,iVar4,(uint)pvVar3,(uint)(&DAT_004693dc)[sVar5]); pvVar3 = pvVar1; iVar4 = (int)sVar5; (&DAT_004693dc)[iVar4] = uVar2; sVar5 = sVar5 + 1; } while (sVar5 < 4); PoolFree(DAT_004693d8); return; } void FUN_0043cd08(undefined4 param_1,undefined4 param_2,undefined4 param_3,int param_4) { FUN_0044d73f(); FUN_00410408(); return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_0043d275(void) { ushort uVar1; short sVar2; undefined2 extraout_var; undefined2 extraout_var_00; undefined2 extraout_var_01; int iVar3; undefined4 uVar4; undefined4 extraout_EDX; undefined4 extraout_EDX_00; undefined4 extraout_EDX_01; short sVar5; uint uVar6; if (_DAT_004627a4 == 2) { Puzzles::SetVtableForGivenCategory(&PTR_LAB_004627cc); } if (_DAT_004627a4 == 1) { Puzzles::SetVtableForGivenCategory(&PTR_LAB_004627b4); } switch(DAT_0046942c) { case 0: FUN_00412e18(DAT_004693dc); DAT_0046942c = 1; break; case 1: uVar6 = DAT_004693dc; sVar2 = FUN_00413ed0(DAT_004693dc); if (sVar2 == 1) { FUN_00412d0c(CONCAT22(extraout_var,sVar2),extraout_EDX,uVar6,DAT_004693dc); DAT_004693dc = FUN_00412ac4(0x68c); FUN_00412e18(DAT_004693dc); DAT_0046942c = 2; } break; case 2: sVar2 = FUN_00413ed0(DAT_004693dc); if (sVar2 == 0x10) { DAT_004693e0 = FUN_00412ac4(0x68d); FUN_00412e18(DAT_004693e0); DAT_0046942c = 3; } break; case 3: uVar6 = DAT_004693e0; sVar2 = FUN_00413ed0(DAT_004693e0); if (sVar2 == 1) { DAT_004693e0 = FUN_00412d0c(CONCAT22(extraout_var_00,sVar2),extraout_EDX_00,uVar6,DAT_004693e0 ); FUN_00412e18(DAT_004693dc); DAT_0046942c = 4; } break; case 4: uVar6 = DAT_004693dc; sVar2 = FUN_00413ed0(DAT_004693dc); if (sVar2 == 1) { FUN_00412d0c(CONCAT22(extraout_var_01,sVar2),extraout_EDX_01,uVar6,DAT_004693dc); DAT_004693dc = FUN_00412ac4(0x68a); FUN_00412e18(DAT_004693dc); DAT_0046942c = 5; } break; case 5: sVar2 = FUN_00413ed0(DAT_004693dc); if (sVar2 == 1) { DAT_004693e0 = FUN_00412ac4(0x68b); FUN_00412e18(DAT_004693e0); DAT_0046942c = 6; } break; case 6: sVar2 = FUN_00413ed0(DAT_004693e0); if (sVar2 == 1) { sVar5 = 0; sVar2 = 0x32; do { iVar3 = Random(); if (iVar3 % 100 < 0x32) { uVar1 = 0x68a; } else { uVar1 = 0x68b; } uVar4 = FUN_00412ac4(uVar1); *(undefined4 *)(DAT_004693d8 + sVar5 * 4) = uVar4; FUN_0041395c(*(undefined4 *)(DAT_004693d8 + sVar5 * 4),0xffff8000,0xffff8000,sVar2); FUN_00412ec0(); FUN_0044ca1c(); FUN_0044ca2e(); sVar5 = sVar5 + 1; sVar2 = sVar2 + -1; } while (sVar5 < 10); DAT_0046942c = 7; } break; case 7: sVar2 = FUN_00413ed0(*(undefined4 *)(DAT_004693d8 + 0x24)); if (sVar2 == 1) { Puzzles::SetVtableForGivenCategory(&PTR_LAB_004627b4); } } return; } ushort __stdcall LoadPartDefinitions_(void) { ushort uVar1; PartResource *pPVar2; undefined4 uVar3; void *pvVar4; PartDefinition *pPVar5; short sVar6; _Level_partResource = Resource::Load(_GameState->level + 1000,&_PART); pPVar2 = _Level_partResource + 1; *(PartResource **)&_Level_partResource->field_0x24 = pPVar2; pPVar5 = (PartDefinition *)(&pPVar2->field_0x0 + _Level_partResource->criticalSlotCount * 2); *(PartDefinition **)&_Level_partResource->field_0x28 = pPVar5; DAT_00469548 = pPVar5 + _Level_partResource->definitionCount; uVar1 = _Level_partResource->definitionCount; sVar6 = 0; _Level_partDefinitions = pPVar5; if (0 < (short)uVar1) { do { uVar3 = FUN_00412ac4(*(ushort *)&_Level_partResource->field_0x8); *(undefined4 *)&pPVar5->field_0x56 = uVar3; FUN_004129d4(*(undefined4 *)&pPVar5->field_0x56,*(undefined2 *)&pPVar5->field_0x10); *(short *)&pPVar5->field_0x60 = sVar6; pvVar4 = Resource::Load(*(ushort *)&pPVar5->field_0x16,_pTEXT); *(void **)&pPVar5->field_0x5a = pvVar4; *(undefined4 *)&pPVar5->field_0x52 = 0; pPVar5 = pPVar5 + 1; sVar6 = sVar6 + 1; } while (sVar6 < (short)uVar1); } return uVar1; } void FUN_0043d7c3(undefined4 param_1,undefined4 param_2,uint param_3) { short sVar1; undefined4 uVar2; PartResource *pPVar3; uint extraout_ECX; undefined4 extraout_EDX; PartDefinition *pPVar4; short sVar5; sVar1 = _Level_partResource->definitionCount; sVar5 = 0; pPVar3 = _Level_partResource; pPVar4 = _Level_partDefinitions; if (0 < sVar1) { do { uVar2 = FUN_00412d0c((uint)pPVar3,param_2,param_3,*(uint *)&pPVar4->field_0x56); *(undefined4 *)&pPVar4->field_0x56 = uVar2; FUN_00440695(*(short *)&pPVar4->field_0x16,_pTEXT); pPVar3 = (PartResource *)0x0; *(undefined4 *)&pPVar4->field_0x5a = 0; pPVar4 = pPVar4 + 1; sVar5 = sVar5 + 1; param_3 = extraout_ECX; param_2 = extraout_EDX; } while (sVar5 < sVar1); } FUN_0044073c(); _Level_partResource = (PartResource *)0x0; return; } uint FUN_0043d820(void) { short in_stack_00000004; return CONCAT22((short)((uint)(in_stack_00000004 * 0x31) >> 0x10), _Level_partDefinitions[in_stack_00000004].slotId); } uint FUN_0043d837(void) { short in_stack_00000004; return CONCAT22((short)((uint)(in_stack_00000004 * 0x31) >> 0x10), *(undefined2 *)&_Level_partDefinitions[in_stack_00000004].field_0x10); } uint FUN_0043d84e(void) { short in_stack_00000004; return CONCAT22((short)((uint)(in_stack_00000004 * 0x31) >> 0x10), *(undefined2 *)&_Level_partDefinitions[in_stack_00000004].field_0x12); } uint FUN_0043d865(void) { short in_stack_00000004; return CONCAT22((short)((uint)(in_stack_00000004 * 0x31) >> 0x10), *(undefined2 *)&_Level_partDefinitions[in_stack_00000004].field_0x14); } uint FUN_0043d87c(void) { short in_stack_00000004; return CONCAT22((short)((uint)(in_stack_00000004 * 0x31) >> 0x10), *(undefined2 *)&_Level_partDefinitions[in_stack_00000004].field_0xe); } int FUN_0043d893(void) { short in_stack_00000004; return (int)(_Level_partDefinitions + in_stack_00000004); } int FUN_0043d90c(void) { DlistNode *node; int iVar1; Dlist *in_stack_00000004; short in_stack_00000008; undefined2 *in_stack_0000000c; node = DlistHead(in_stack_00000004); *in_stack_0000000c = 0xffff; iVar1 = 0; for (; node != (DlistNode *)0x0; node = DlistNext(node)) { if (in_stack_00000008 == *(short *)&node[1].next) { iVar1 = iVar1 + 1; *in_stack_0000000c = *(undefined2 *)&node[0xc].next; } } return iVar1; } uint FUN_0043d94c(void) { DlistNode *node; Dlist *in_stack_00000004; short in_stack_00000008; for (node = DlistHead(in_stack_00000004); (node != (DlistNode *)0x0 && (in_stack_00000008 != *(short *)&node[1].next)); node = DlistNext(node)) { } return CONCAT22((short)((uint)node >> 0x10),*(undefined2 *)&node[0xc].next); } int FUN_0043d978(void) { DlistNode *node; int iVar1; short in_stack_00000004; node = DlistHead(*(Dlist **)&_Actors[in_stack_00000004].field_0x72); iVar1 = 0; for (; node != (DlistNode *)0x0; node = DlistNext(node)) { if (in_stack_00000004 == *(short *)&node[1].prev) { iVar1 = iVar1 + 1; } } return iVar1; } void FUN_0043d9c0(void) { DlistNode *node; DlistNode *in_stack_00000004; for (node = DlistNext(in_stack_00000004); (node != (DlistNode *)0x0 && (-1 < *(short *)&node[3].prev)); node = DlistNext(node)) { } return; } void FUN_0043d9e3(void) { DlistNode *node; DlistNode *in_stack_00000004; for (node = (DlistNode *)DlistPrev(in_stack_00000004); (node != (DlistNode *)0x0 && (-1 < *(short *)&node[3].prev)); node = (DlistNode *)DlistPrev(node)) { } return; } void FUN_0043da06(void) { short sVar1; undefined2 *in_stack_00000004; for (sVar1 = 0; sVar1 < _Level_partResource->definitionCount; sVar1 = sVar1 + 1) { *in_stack_00000004 = *(undefined2 *)&_Level_partDefinitions[sVar1].field_0xc; in_stack_00000004[1] = *(undefined2 *)&_Level_partDefinitions[sVar1].field_0x36; in_stack_00000004 = in_stack_00000004 + 2; } return; } void __stdcall ezFUN_0043da4e(ushort *param_1) { int i; i = 0; while( true ) { if (_Level_partResource->definitionCount <= (short)i) break; if (*param_1 != 0xffff) { FUN_00434ddd(*param_1); if (*param_1 == 0) { FUN_004162de(i); } } *(ushort *)&_Level_partDefinitions[(short)i].field_0x36 = param_1[1]; param_1 = param_1 + 2; i = i + 1; } return; } void FUN_0043daa4(undefined4 param_1,undefined4 param_2,uint param_3) { int iVar1; for (iVar1 = 0; (short)iVar1 < _Level_partResource->criticalSlotCount; iVar1 = iVar1 + 1) { FUN_00434ddd(0); FUN_004162de(CONCAT22((short)((uint)(iVar1 << 2) >> 0x10),(short)(iVar1 << 2) + 3)); DAT_004605b6 = DAT_004605b6 | 1; _GameState->missingCriticalSlots = _GameState->missingCriticalSlots - 1; } return; } void FUN_0043dae8(void) { short sVar1; int iVar2; int in_stack_00000004; short *in_stack_00000008; int local_1c [6]; local_1c[0] = 0; local_1c[1] = 0; local_1c[2] = 0; local_1c[3] = *(int *)(&DAT_00462a5c + _GameState->levelInBuilding * 4); for (; *in_stack_00000008 != -1; in_stack_00000008 = in_stack_00000008 + 1) { sVar1 = *(short *)&_Level_partDefinitions[*in_stack_00000008].field_0xa; switch(_Level_partDefinitions[*in_stack_00000008].slotId) { case 0xd: local_1c[3] = local_1c[3] - *(int *)(&DAT_0046285c + sVar1 * 4); break; case 0xe: local_1c[3] = local_1c[3] - *(int *)(&DAT_00462868 + sVar1 * 4); break; case 0xf: local_1c[0] = *(int *)(&DAT_00462878 + sVar1 * 4); break; case 0x10: local_1c[0] = local_1c[0] + *(int *)(&DAT_00462880 + sVar1 * 4); break; case 0x11: local_1c[0] = local_1c[0] + *(int *)(&DAT_00462890 + sVar1 * 4); break; case 0x12: local_1c[0] = local_1c[0] + *(int *)(&DAT_004628a0 + sVar1 * 4); break; case 0x13: local_1c[0] = local_1c[0] + *(int *)(&DAT_004628ac + sVar1 * 4); break; case 0x14: local_1c[0] = local_1c[0] + *(int *)(&DAT_004628bc + sVar1 * 4); break; case 0x15: local_1c[0] = local_1c[0] + *(int *)(&DAT_004628cc + sVar1 * 4); break; case 0x16: local_1c[0] = local_1c[0] + *(int *)(&DAT_004628dc + sVar1 * 4); break; case 0x17: local_1c[0] = local_1c[0] + *(int *)(&DAT_004628ec + sVar1 * 4); break; case 0x18: local_1c[3] = local_1c[3] - *(int *)(&DAT_004628fc + sVar1 * 4); break; case 0x19: local_1c[3] = local_1c[3] - *(int *)(&DAT_004628fc + sVar1 * 4); break; case 0x1a: local_1c[3] = local_1c[3] - *(int *)(&DAT_0046291c + sVar1 * 4); break; case 0x1b: local_1c[3] = local_1c[3] - *(int *)(&DAT_0046292c + sVar1 * 4); break; case 0x1c: local_1c[3] = local_1c[3] - *(int *)(&DAT_0046293c + sVar1 * 4); break; case 0x1d: local_1c[3] = local_1c[3] - *(int *)(&DAT_0046294c + sVar1 * 4); break; case 0x1e: local_1c[3] = local_1c[3] - *(int *)(&DAT_004629dc + sVar1 * 4); break; case 0x1f: local_1c[3] = local_1c[3] - *(int *)(&DAT_004629ec + sVar1 * 4); break; case 0x20: local_1c[0] = local_1c[0] + *(int *)(&DAT_004629fc + sVar1 * 4); break; case 0x21: local_1c[3] = local_1c[3] - *(int *)(&DAT_00462a0c + sVar1 * 4); break; case 0x24: local_1c[3] = local_1c[3] - *(int *)(&DAT_00462a1c + sVar1 * 4); break; case 0x25: local_1c[3] = local_1c[3] - *(int *)(&DAT_00462a2c + sVar1 * 4); break; case 0x26: local_1c[3] = local_1c[3] - *(int *)(&DAT_00462a3c + sVar1 * 4); break; case 0x27: local_1c[3] = local_1c[3] - *(int *)(&DAT_00462a4c + sVar1 * 4); break; case 0x28: local_1c[3] = local_1c[3] - *(int *)(&DAT_0046295c + sVar1 * 4); break; case 0x29: local_1c[3] = local_1c[3] - *(int *)(&DAT_0046296c + sVar1 * 4); break; case 0x2a: local_1c[3] = local_1c[3] - *(int *)(&DAT_0046297c + sVar1 * 4); break; case 0x2b: local_1c[3] = local_1c[3] - *(int *)(&DAT_0046298c + sVar1 * 4); break; case 0x2c: local_1c[0] = local_1c[0] + *(int *)(&DAT_0046299c + sVar1 * 4); break; case 0x2d: local_1c[0] = local_1c[0] + *(int *)(&DAT_004629ac + sVar1 * 4); break; case 0x2e: local_1c[3] = local_1c[3] - *(int *)(&DAT_004629bc + sVar1 * 4); break; case 0x2f: local_1c[3] = local_1c[3] - *(int *)(&DAT_004629cc + sVar1 * 4); } } iVar2 = (int)_GameState->levelInBuilding; if (iVar2 != 0) { if (iVar2 == 1) { local_1c[4] = 0x50000; local_1c[1] = 0x4ccd; local_1c[5] = 0x18000; local_1c[3] = 0x18000; local_1c[0] = -local_1c[0]; local_1c[2] = local_1c[0]; goto LAB_0043de5b; } if (2 < iVar2 - 2U) goto LAB_0043de5b; } local_1c[5] = local_1c[3]; local_1c[4] = local_1c[3]; local_1c[2] = local_1c[0]; local_1c[1] = local_1c[0]; LAB_0043de5b: sVar1 = 0; do { *(int *)(in_stack_00000004 + 0x1c + sVar1 * 4) = local_1c[sVar1 + 3]; *(int *)(in_stack_00000004 + 0x28 + sVar1 * 4) = local_1c[sVar1]; sVar1 = sVar1 + 1; } while (sVar1 < 3); return; } void FUN_0043de85(void) { undefined4 this; bool bVar1; short *psVar2; short sVar3; int in_stack_00000004; undefined4 in_stack_00000008; bVar1 = false; sVar3 = 0; while (!bVar1) { if (*(short *)(in_stack_00000004 + 4 + sVar3 * 10) == -1) { bVar1 = true; } else { this = *(undefined4 *)(in_stack_00000004 + 6 + sVar3 * 10); BigThing6Eh::processNodes_(this); FUN_0041395c(this,CONCAT22((short)((uint)(sVar3 * 5) >> 0x10), *(short *)(in_stack_00000004 + sVar3 * 10) - (short)((uint)in_stack_00000008 >> 0x10)), CONCAT22((short)((uint)(sVar3 * 5) >> 0x10), *(undefined2 *)(in_stack_00000004 + 2 + sVar3 * 10)),0); FUN_00412dc8(this); psVar2 = (short *)FUN_00413ebc(); if ((0x200 < *psVar2) || ((int)*psVar2 + (int)psVar2[2] < 0)) { BigThing6Eh::processNodes_(this); } } sVar3 = sVar3 + 1; } return; } void FUN_0043df27(void) { short sVar1; int in_stack_00000004; sVar1 = *(short *)(in_stack_00000004 + 0x14); *(int *)(in_stack_00000004 + 0xe) = *(int *)(in_stack_00000004 + 0xe) + *(int *)(in_stack_00000004 + 0x28 + sVar1 * 4); if (*(int *)(in_stack_00000004 + 0x28 + sVar1 * 4) < 0) { if (*(int *)(in_stack_00000004 + 0xe) < *(int *)(in_stack_00000004 + 0x1c + sVar1 * 4)) { *(undefined4 *)(in_stack_00000004 + 0xe) = *(undefined4 *)(in_stack_00000004 + 0x1c + sVar1 * 4); return; } } else if (*(int *)(in_stack_00000004 + 0x1c + sVar1 * 4) < *(int *)(in_stack_00000004 + 0xe)) { *(undefined4 *)(in_stack_00000004 + 0xe) = *(undefined4 *)(in_stack_00000004 + 0x1c + sVar1 * 4) ; } return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address uint FUN_0043df75(uint param_1,undefined4 param_2,uint param_3,int param_4) { undefined2 uVar1; bool bVar2; undefined4 local_8; bVar2 = false; local_8 = param_3 & 0xffff0000; do { if (bVar2) { return CONCAT22((short)(param_1 >> 0x10),(undefined2)local_8); } *(short *)(param_4 + 0x12) = *(short *)(param_4 + 0x12) + 1; uVar1 = *(undefined2 *)(*(int *)(param_4 + 0x18) + *(short *)(param_4 + 0x12) * 6); param_1 = (int)*(short *)(*(int *)(param_4 + 0x18) + 4 + *(short *)(param_4 + 0x12) * 6) + 0xe; switch(param_1) { case 0: param_1 = FUN_00446b08(); break; case 1: param_1 = FUN_00446fc9(); if ((short)param_1 == 0) { param_1 = FUN_004465a5(uVar1,local_8._2_2_ & 0xff,(short)(char)(local_8 >> 0x18)); } break; case 2: param_1 = CONCAT22((short)((uint)(*(short *)(param_4 + 0x12) * 3) >> 0x10), *(short *)(*(int *)(param_4 + 0x18) + *(short *)(param_4 + 0x12) * 6) + *(short *)(param_4 + 0x12)) - 1; *(short *)(param_4 + 0x12) = (short)param_1; break; case 3: case 5: *(undefined2 *)(param_4 + 0x14) = 0; break; case 4: *(undefined2 *)(param_4 + 0x14) = 2; break; case 6: *(undefined2 *)(param_4 + 0x14) = 1; break; case 7: case 8: break; case 0xc: *(undefined2 *)(param_4 + 0x16) = 1; local_8 = CONCAT22(local_8._2_2_,1); break; case 0xd: _DAT_004696aa = 1; default: bVar2 = true; } } while( true ); } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_0043e088(void) { _DAT_00462a70 = 1; return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_0043e096(undefined4 param_1,undefined4 param_2,uint param_3) { uint uVar1; uint uVar2; undefined4 uVar3; undefined2 uVar4; uint extraout_ECX; uint extraout_ECX_00; uint extraout_ECX_01; undefined4 extraout_EDX; undefined4 extraout_EDX_00; undefined4 extraout_EDX_01; short sVar5; DAT_00469600 = _GameState->levelInBuilding; FUN_00431024(CONCAT22((short)((uint)_GameState >> 0x10),DAT_00469600),param_2,param_3,0x157c); FUN_00431b20(); FUN_00430db4(); DAT_004695fc = Resource::Load(_GameState->levelInBuilding + 0x157c,&_RDAT); DAT_00469610 = DAT_004695fc + 1; DAT_00469614 = DAT_004695fc + *DAT_004695fc * 5 + 2; uVar1 = FUN_00412ac4(0x1645); uVar2 = FUN_00413cf4(); FUN_00412d0c(uVar2,extraout_EDX,extraout_ECX,uVar1); uVar1 = FUN_00412ac4(0x1644); uVar2 = FUN_00413cf4(); FUN_00412d0c(uVar2,extraout_EDX_00,extraout_ECX_00,uVar1); FUN_00446186(0x1772); FUN_004466f9(); DAT_00469604 = FUN_004474c6(CONCAT22(DAT_00469600 >> 0xf, *(ushort *)(&DAT_00462820 + DAT_00469600 * 2)), extraout_EDX_01,extraout_ECX_01, *(ushort *)(&DAT_00462820 + DAT_00469600 * 2)); sVar5 = 0; while (DAT_00469610[sVar5 * 5 + 2] != -1) { uVar3 = FUN_00412ac4(DAT_00469610[sVar5 * 5 + 2] + 0x1644); *(undefined4 *)(DAT_00469610 + sVar5 * 5 + 3) = uVar3; sVar5 = sVar5 + 1; } sVar5 = 0; while (DAT_00469614[sVar5 * 5 + 2] != -1) { uVar3 = FUN_00412ac4(DAT_00469614[sVar5 * 5 + 2] + 0x1644); *(undefined4 *)(DAT_00469614 + sVar5 * 5 + 3) = uVar3; sVar5 = sVar5 + 1; } DAT_00469630 = Resource::Load(*(ushort *)(&DAT_00462848 + DAT_00469600 * 2),&_RACE2); DAT_00469654 = FUN_00412ac4((short)(char)_GameState->field46_0x175e[_GameState->level + 2] + *(short *)(&DAT_00462834 + DAT_00469600 * 2)); FUN_00413a54(); DAT_00469672 = Resource::Load(*(ushort *)(&DAT_00462852 + DAT_00469600 * 2),&_RACE3); DAT_00469696 = FUN_00412ac4(*(ushort *)(&DAT_0046283e + DAT_00469600 * 2)); FUN_00413a54(); if (_GameState->levelInBuilding == 1) { DAT_004695f4 = FUN_00412ac4(0x1666); DAT_004695f8 = FUN_00412ac4(0x1666); DAT_00469608 = Resource::Load(0x1582,&_RACE4); DAT_0046960c = Resource::Load(0x1583,&_RACE5); } else { DAT_00469608 = (undefined2 *)0x0; } FUN_0043dae8(); FUN_0043dae8(); DAT_0046281c = 0; DAT_00462818 = 0; DAT_00469626 = 0; DAT_0046962a = 0; DAT_00469668 = 0; DAT_0046966c = 0; DAT_0046962e = 0; DAT_00469670 = 0; DAT_00462810 = 0; DAT_0046964c = (uint)*DAT_00469630 << 0x10; DAT_0046968e = (uint)*DAT_00469672 << 0x10; DAT_00469658 = *DAT_00469630; DAT_0046969a = *DAT_00469672; uVar4 = (undefined2)((uint)DAT_00469630 >> 0x10); FUN_0041395c(DAT_00469654,CONCAT22(uVar4,*DAT_00469630),CONCAT22(uVar4,DAT_00469630[1]),5); uVar4 = (undefined2)((uint)DAT_00469672 >> 0x10); FUN_0041395c(DAT_00469696,CONCAT22(uVar4,*DAT_00469672),CONCAT22(uVar4,DAT_00469672[1]),10); FUN_00412e70(); FUN_00412e70(); if (_GameState->levelInBuilding == 1) { uVar4 = (undefined2)((uint)DAT_00469608 >> 0x10); FUN_0041395c(DAT_004695f4,CONCAT22(uVar4,*DAT_00469608),CONCAT22(uVar4,DAT_00469608[1]),5); uVar4 = (undefined2)((uint)DAT_0046960c >> 0x10); FUN_0041395c(DAT_004695f8,CONCAT22(uVar4,*DAT_0046960c),CONCAT22(uVar4,DAT_0046960c[1]),10); FUN_00412e70(); FUN_00412e70(); } _DAT_004696ac = 0; _DAT_004696aa = 0; DAT_004695ee = *(undefined2 *)(&DAT_0046282a + _GameState->levelInBuilding * 2); DAT_004695ec = 0; FUN_0043de85(); FUN_0043de85(); DAT_004695e4 = 0; DAT_004605b6 = 0x20; FUN_004165c3(); FUN_0043139c(); FUN_00411599(); return; } void FUN_0043e530(void) { uint uVar1; undefined4 uVar2; uint uVar3; undefined4 extraout_EDX; undefined4 extraout_EDX_00; undefined4 extraout_EDX_01; short sVar4; uint uVar5; FUN_004462e8(0x1772); uVar3 = DAT_00469604; DAT_00469604 = FUN_0044751f(); if (_GameState->levelInBuilding == 1) { FUN_0044073c(); uVar3 = DAT_0046960c; uVar1 = FUN_0044073c(); uVar5 = DAT_004695f4; DAT_004695f4 = FUN_00412d0c(uVar1,extraout_EDX,uVar3,DAT_004695f4); uVar3 = DAT_004695f8; DAT_004695f8 = FUN_00412d0c(DAT_004695f4,extraout_EDX_00,uVar5,DAT_004695f8); } sVar4 = 0; while (*(short *)(DAT_00469610 + 4 + sVar4 * 10) != -1) { uVar2 = FUN_00412d0c(sVar4 * 5,DAT_00469610,uVar3,*(uint *)(DAT_00469610 + 6 + sVar4 * 10)); uVar3 = DAT_00469610; *(undefined4 *)(DAT_00469610 + 6 + sVar4 * 10) = uVar2; sVar4 = sVar4 + 1; } sVar4 = 0; while( true ) { if (*(short *)(DAT_00469614 + 4 + sVar4 * 10) == -1) break; uVar2 = FUN_00412d0c(sVar4 * 5,DAT_00469614,uVar3,*(uint *)(DAT_00469614 + 6 + sVar4 * 10)); uVar3 = DAT_00469614; *(undefined4 *)(DAT_00469614 + 6 + sVar4 * 10) = uVar2; sVar4 = sVar4 + 1; } uVar5 = DAT_00469654; DAT_00469654 = FUN_00412d0c(sVar4 * 5,DAT_00469614,uVar3,DAT_00469654); DAT_00469696 = FUN_00412d0c(DAT_00469654,extraout_EDX_01,uVar5,DAT_00469696); FUN_0044073c(); FUN_0044073c(); FUN_0044073c(); FUN_00431348(); FUN_00411599(); return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address uint FUN_0043e65c(void) { int iVar1; undefined2 *puVar2; ushort uVar3; int iVar4; uint uVar5; uint uVar6; uint uVar7; undefined2 uVar9; undefined **ppuVar8; undefined4 extraout_EDX; undefined4 extraout_EDX_00; undefined4 uVar10; undefined4 extraout_EDX_01; short sVar11; ushort uVar12; ushort uVar13; undefined2 *puVar14; iVar4 = (int)DAT_004695e4; if (iVar4 == 0) { iVar4 = FUN_0044ca04(); uVar5 = FUN_0044ca1c(); _DAT_004695e8 = iVar4 + uVar5; DAT_004695e4 = 1; } else if (iVar4 == 1) { uVar5 = FUN_0044ca04(); if (_DAT_004695e8 < uVar5) { DAT_004695e4 = 2; FUN_00412e18(DAT_00469654); FUN_00412e18(DAT_00469696); if (_GameState->levelInBuilding == 1) { FUN_00412e18(DAT_004695f4); FUN_00412e18(DAT_004695f8); } FUN_00413b24(); uVar5 = FUN_00413b24(); } } else { uVar5 = iVar4 - 2; if (uVar5 == 0) { if ((DAT_0046962e == 0) && (DAT_00469670 == 0)) { if (_DAT_00462a70 != 0) { FUN_0043df27(); puVar14 = &DAT_0046965a; FUN_0043df27(); DAT_00469650 = DAT_0046964c; iVar4 = DAT_0046964c + DAT_00469626; DAT_00469692 = DAT_0046968e; DAT_0046968e = DAT_0046968e + DAT_00469668; uVar10 = extraout_EDX; iVar1 = iVar4; if (DAT_0046962e == 0) { uVar6 = DAT_0046964c >> 0x10; uVar5 = (uint)DAT_0046964c >> 0x10; DAT_0046964c = iVar4; for (sVar11 = 0; iVar1 = DAT_0046964c, sVar11 < (short)((short)((uint)iVar4 >> 0x10) - (short)uVar5); sVar11 = sVar11 + 1) { puVar2 = &DAT_00469618; uVar6 = FUN_0043df75(uVar6,uVar10,puVar14,0x469618); puVar14 = puVar2; uVar10 = extraout_EDX_00; iVar1 = DAT_0046964c; if ((short)uVar6 != 0) break; } } DAT_0046964c = iVar1; if (DAT_00469670 == 0) { uVar7 = DAT_00469692 >> 0x10; uVar5 = (uint)DAT_00469692 >> 0x10; uVar6 = (uint)DAT_0046968e >> 0x10; for (sVar11 = 0; sVar11 < (short)((short)uVar6 - (short)uVar5); sVar11 = sVar11 + 1) { puVar2 = &DAT_0046965a; uVar7 = FUN_0043df75(uVar7,uVar10,puVar14,0x46965a); puVar14 = puVar2; if ((short)uVar7 != 0) break; uVar10 = extraout_EDX_01; } } uVar13 = *(short *)(DAT_00469630 + DAT_0046962a * 6) - DAT_00469658; DAT_00469658 = *(short *)(DAT_00469630 + DAT_0046962a * 6); DAT_00469618 = *(short *)(DAT_00469630 + DAT_0046962a * 6) - (short)(DAT_0046281c >> 0x10) ; DAT_0046961a = *(undefined2 *)(DAT_00469630 + 2 + DAT_0046962a * 6); uVar9 = (undefined2)((uint)(DAT_0046962a * 3) >> 0x10); FUN_0041395c(DAT_00469654,CONCAT22(uVar9,DAT_00469618),CONCAT22(uVar9,DAT_0046961a),0x8000 ); FUN_00413d18(); uVar3 = *(short *)(DAT_00469672 + DAT_0046966c * 6) - DAT_0046969a; DAT_0046969a = *(short *)(DAT_00469672 + DAT_0046966c * 6); DAT_0046965a = *(short *)(DAT_00469672 + DAT_0046966c * 6) - (short)(DAT_0046281c >> 0x10) ; DAT_0046965c = *(undefined2 *)(DAT_00469672 + 2 + DAT_0046966c * 6); uVar9 = (undefined2)((uint)(DAT_0046966c * 3) >> 0x10); FUN_0041395c(DAT_00469696,CONCAT22(uVar9,DAT_0046965a),CONCAT22(uVar9,DAT_0046965c),0x8000 ); FUN_00413d18(); uVar12 = 0; if ((DAT_0046966c <= DAT_0046962a) && (_DAT_00462812 = 2, 0x100 < DAT_00469618)) { uVar12 = uVar13; } if ((DAT_0046962a < DAT_0046966c) && (_DAT_00462812 = 3, 0x100 < DAT_0046965a)) { uVar12 = uVar3; } if (_GameState->levelInBuilding == 1) { if (DAT_00462810 < 0x3a) { if (DAT_00462810 == 0) { FUN_004465a5(0x1f88,3,1); } DAT_0046969c = *(short *)(DAT_00469608 + DAT_00462810 * 6) - (short)(DAT_0046281c >> 0x10); DAT_0046969e = *(undefined2 *)(DAT_00469608 + 2 + DAT_00462810 * 6); uVar9 = (undefined2)((uint)(DAT_00462810 * 3) >> 0x10); FUN_0041395c(DAT_004695f4,CONCAT22(uVar9,DAT_0046969c),CONCAT22(uVar9,DAT_0046969e), 0x8000); FUN_00413d18(); DAT_0046969c = *(short *)(DAT_0046960c + DAT_00462810 * 6) - (short)(DAT_0046281c >> 0x10); DAT_0046969e = *(undefined2 *)(DAT_0046960c + 2 + DAT_00462810 * 6); uVar9 = (undefined2)((uint)(DAT_00462810 * 3) >> 0x10); FUN_0041395c(DAT_004695f8,CONCAT22(uVar9,DAT_0046969c),CONCAT22(uVar9,DAT_0046969e), 0x8000); FUN_00413d18(); DAT_00462810 = DAT_00462810 + 1; if (DAT_00462810 == 0x3a) { FUN_00446b08(); } } else { BigThing6Eh::processNodes_(DAT_004695f4); BigThing6Eh::processNodes_(DAT_004695f8); } } DAT_0046281c = (uint)uVar12 * 0x10000 + DAT_0046281c; DAT_00462818 = DAT_0046281c / 0xa0000; FUN_0043de85(DAT_00462818,DAT_0046281c % 0xa0000,0xa0000,DAT_00469610,DAT_00462818); FUN_0043de85(); DAT_004695ec = DAT_004695ec + 1; uVar5 = (int)DAT_004695ec / (int)DAT_004695ee; DAT_004695ec = DAT_004695ec % DAT_004695ee; _DAT_00462a70 = 0; } } else { DAT_00467cf2 = (ushort)(DAT_0046962e == 0); if ((_DAT_00461aca == 0) && (DAT_00467cf2 == 0)) { _GameState->buildingCompletedLevels[_GameState->building] = _GameState->buildingCompletedLevels[_GameState->building] + 1; *(short *)_GameState->field46_0x175e = *(short *)_GameState->field46_0x175e + 1; } if (_DAT_00461aca == 0) { ppuVar8 = &PTR_LAB_00460b24; } else { ppuVar8 = &PTR_LAB_00460b30; } uVar5 = Puzzles::SetVtableForGivenCategory(ppuVar8); } } } return uVar5; } void FUN_0043ec54(void) { short sVar1; undefined4 uVar2; undefined4 extraout_EDX; uVar2 = CONCAT22((short)((uint)DAT_00469720 >> 0x10),*(undefined2 *)(DAT_00469720 + 0x34)); sVar1 = FUN_0044705a(); if (sVar1 != 0) { FUN_00446b96(*(undefined2 *)(DAT_00469720 + 0x34),extraout_EDX,uVar2, *(undefined2 *)(DAT_00469720 + 0x34)); } if (*(short *)(DAT_00469720 + 0x34) != 0) { FUN_00446367(*(undefined2 *)(DAT_00469720 + 0x34)); *(undefined2 *)(DAT_00469720 + 0x34) = 0; } DAT_00469724 = 3; return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address undefined4 FUN_0043ecaa(void) { bool bVar1; undefined2 uVar2; short sVar3; int iVar4; BOOL BVar5; undefined2 extraout_var; uint uVar6; undefined2 extraout_var_00; uint extraout_ECX; uint uVar7; undefined4 extraout_EDX; undefined4 extraout_EDX_00; undefined4 uVar8; undefined4 unaff_EDI; int iVar9; int in_stack_00000004; tagMSG local_60 [2]; ushort local_10; short local_e; short local_c; short local_a; undefined2 local_8; undefined2 local_6; bVar1 = false; _DAT_004634c8 = 1; if (DAT_00469544 != (code *)0x0) { (*DAT_00469544)(); } FUN_00413838(); FUN_00416f4d(); _DAT_0046972c = FUN_0044ca04(); FUN_0043be66(); FUN_004102ee(); FUN_00446bc3(); FUN_00446e68(); DAT_00469730 = SetCurrentColor(0); FUN_0041029e(); DAT_00469720 = in_stack_00000004; DAT_00462a98 = 0xffff; FUN_0043b9f5(); Nfnt::LoadWithCache(15000); local_6 = SetCurrentFont(15000); iVar9 = CONCAT22((short)((uint)unaff_EDI >> 0x10),0xfa); local_c = 0; do { iVar4 = FUN_0044d5aa(); local_e = (short)iVar4; if (local_e < 300) { local_c = 1; } sVar3 = (short)iVar9; iVar9 = CONCAT22((short)((uint)iVar9 >> 0x10),sVar3 + 0x14); } while (local_c == 0); local_10 = (ushort)(*(int *)(DAT_00469720 + 0x1e) != 0); if (*(int *)(DAT_00469720 + 0x22) != 0) { local_10 = local_10 | 2; } if (*(short *)(DAT_00469720 + 0xc) != 0) { local_10 = local_10 | 4; } FUN_0043f2c8(); PickapuzzleHitTest_(*(undefined2 *)(DAT_00469720 + 2),*(undefined2 *)(DAT_00469720 + 4), sVar3 + 0x1e,local_e + 10,0xc9,(ClickHandler *)0x0); FUN_0044d5aa(); uVar2 = SetCurrentFont(local_6); Nfnt::Unload(uVar2); if ((local_10 & 1) != 0) { FUN_0044ced4(); } if (*(short *)(DAT_00469720 + 0xc) != 0) { _DAT_00469726 = _DAT_00469726 - (local_a + 5); } *(undefined2 *)(DAT_00469720 + 0x34) = 0; DAT_00469724 = 3; sVar3 = FUN_0044714d(); if (sVar3 != 0) { DAT_00469738 = FUN_00412ac4(0x4a44); uVar2 = (undefined2)((uint)DAT_00469720 >> 0x10); FUN_0041395c(DAT_00469738,CONCAT22(uVar2,*(undefined2 *)(DAT_00469720 + 2)) + -1, CONCAT22(uVar2,*(undefined2 *)(DAT_00469720 + 4)) + -1,0xcd); FUN_00412e70(); PickapuzzleHitTest_(*(short *)(DAT_00469720 + 2) + -1,*(short *)(DAT_00469720 + 4) + -1,0x52, 0x14,0xcd,(ClickHandler *)&LAB_0043f1da); DAT_00462a9a = 0; } local_8 = (undefined2)(iVar9 + -0x40); sVar3 = local_e + 0x28; DAT_0046973c = FUN_00412ac4(0x4a43); FUN_0041395c(DAT_0046973c,CONCAT22((short)(DAT_0046973c >> 0x10),local_8), CONCAT22((short)((uint)(iVar9 + -0x40) >> 0x10),sVar3),0xcd); PickapuzzleHitTest_(local_8,sVar3,0x52,0x14,0xcd,(ClickHandler *)&LAB_0043f267); PickapuzzleHitTest_(0,0,0x200,0x180,200,(ClickHandler *)&LAB_0043f267); FUN_00412e70(); _DAT_00462a9c = 1; while (!bVar1) { FUN_00412784(); BVar5 = PeekMessageA(local_60,(HWND)0x0,0,0,1); if (BVar5 != 0) { TranslateMessage(local_60); DispatchMessageA(local_60); } switch(DAT_00469724) { case 1: if ((&DAT_0046978a)[DAT_00469728] == -1) { DAT_00469728 = 0; FUN_004129d4(DAT_00469738,0); BigThing6Eh::processNodes_(DAT_00469738); FUN_00412e70(); DAT_00462a9a = DAT_00462a9a ^ 1; DAT_00469724 = 3; } else { *(undefined2 *)(DAT_00469720 + 0x34) = (&DAT_0046978a)[DAT_00469728]; DAT_00469728 = DAT_00469728 + 1; FUN_004461ff(); FUN_00446778(); DAT_00469724 = 2; } break; case 2: sVar3 = FUN_0044705a(); if (sVar3 == 0) { FUN_00446367(*(undefined2 *)(DAT_00469720 + 0x34)); *(undefined2 *)(DAT_00469720 + 0x34) = 0; DAT_00469724 = 1; } break; case 4: sVar3 = FUN_00413ed0(*(undefined4 *)(DAT_00469720 + 0x16)); if ((sVar3 == 0x10) && (sVar3 = FUN_00413ed0(*(undefined4 *)(DAT_00469720 + 0x1a)), sVar3 == 0x10)) { bVar1 = true; } break; case 5: bVar1 = true; } } FUN_0043ec54(); sVar3 = FUN_0044714d(); uVar6 = CONCAT22(extraout_var,sVar3); uVar7 = extraout_ECX; uVar8 = extraout_EDX; if (sVar3 != 0) { uVar7 = DAT_00469738; uVar6 = FUN_00412d0c(uVar6,extraout_EDX,extraout_ECX,DAT_00469738); uVar8 = extraout_EDX_00; DAT_00469738 = uVar6; } FUN_00412d0c(uVar6,uVar8,uVar7,DAT_0046973c); FUN_0041408d(); FUN_0043ba1d(); SetCurrentColor(DAT_00469730); FUN_0041030c(); FUN_00413868(); FUN_00416ffd(); FUN_0043bfee(0xff,0xffff,0); FUN_00446ed9(); DAT_00469720 = 0; FUN_0044c95d(); _DAT_004634c8 = 0; return CONCAT22(extraout_var_00,DAT_00462a98); } void FUN_0043f193(void) { void *pvVar1; pvVar1 = PoolAlloc(0x3e); *(undefined2 *)((int)pvVar1 + 2) = 0xffff; *(undefined2 *)((int)pvVar1 + 4) = 0xffff; *(undefined2 *)((int)pvVar1 + 0xc) = 0; *(undefined2 *)((int)pvVar1 + 0x12) = 0; *(undefined2 *)((int)pvVar1 + 0x14) = 0; *(undefined4 *)((int)pvVar1 + 0x2a) = 0; *(undefined4 *)((int)pvVar1 + 0x22) = 0; *(undefined4 *)((int)pvVar1 + 0x26) = 0; *(undefined4 *)((int)pvVar1 + 0x1e) = 0; *(undefined2 *)((int)pvVar1 + 0x32) = 0; *(undefined2 *)((int)pvVar1 + 10) = 0; *(undefined4 *)((int)pvVar1 + 0x3a) = 0; *(undefined4 *)((int)pvVar1 + 0x36) = 0; return; } void FUN_0043f27a(void) { void *object; undefined4 in_stack_00000004; object = (void *)FUN_0043f193(); *(undefined4 *)((int)object + 0x26) = in_stack_00000004; GetWinapiString(&DAT_004696b0,0x4e5c); *(undefined **)((int)object + 0x1e) = &DAT_004696b0; *(undefined **)((int)object + 0x22) = &DAT_00462a9e; *(undefined2 *)((int)object + 4) = 8; *(undefined2 *)((int)object + 2) = 8; FUN_0043ecaa(); PoolFree(object); return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_0043f2c8(void) { short sVar1; short sVar2; int iVar3; short sVar4; uint uVar5; int in_stack_00000004; short in_stack_00000008; short in_stack_0000000c; short in_stack_00000010; byte in_stack_00000014; undefined2 local_c; undefined2 local_a; undefined2 local_8; undefined2 local_6; sVar1 = 0; if ((in_stack_00000014 & 1) != 0) { sVar1 = 0x15; } if ((in_stack_00000014 & 2) != 0) { sVar1 = sVar1 + 0x15; } if ((in_stack_00000014 & 4) != 0) { sVar1 = sVar1 + 0x32; } sVar2 = sVar1 + in_stack_00000010 + 0x14; FUN_00431dc9(); if ((short)in_stack_00000004 < 0) { uVar5 = (int)local_8 - (int)(short)(in_stack_0000000c + 0x14); in_stack_00000004 = (int)uVar5 >> 1; if (in_stack_00000004 < 0) { in_stack_00000004 = in_stack_00000004 + (uint)((uVar5 & 1) != 0); } } else { in_stack_00000004 = in_stack_00000004 + -8; } if (in_stack_00000008 < 0) { iVar3 = (int)local_a - (int)sVar2 >> 1; if (iVar3 < 0) { iVar3 = iVar3 + (uint)(((int)local_a - (int)sVar2 & 1U) != 0); } local_c = (short)iVar3; } else { local_c = in_stack_00000008 + -8; } FUN_00431b20(); _DAT_00469702 = local_c; uVar5 = in_stack_00000004 + 4; sVar4 = local_c + 4; local_8 = in_stack_0000000c + 8; local_a = sVar1 + in_stack_00000010 + 8; sVar1 = 0; _DAT_00469700 = (short)in_stack_00000004; _DAT_00469704 = in_stack_0000000c + 0x14; _DAT_00469706 = sVar2; do { local_6 = (short)uVar5; sVar4 = sVar4 + 1; FUN_00431b60(); uVar5 = (uint)(ushort)(local_6 + 1U); local_8 = local_8 + -2; local_a = local_a + -2; sVar1 = sVar1 + 1; } while (sVar1 < 4); DAT_00469708 = local_6 + 1U; DAT_0046970a = sVar4; DAT_0046970c = local_8; _DAT_0046970e = local_a; FUN_00431b20(); FUN_00431b20(); uVar5 = (uint)_DAT_00469710; if ((in_stack_00000014 & 1) != 0) { FUN_00431ab0(); FUN_00431ab0(); DAT_0046970a = DAT_0046970a + 0x16; _DAT_0046970e = _DAT_0046970e + -0x16; uVar5 = in_stack_00000004 + 8; DAT_00469712 = local_c + 8; DAT_00469714 = DAT_0046970c; _DAT_00469716 = 0x15; } _DAT_00469710 = (ushort)uVar5; if ((in_stack_00000014 & 2) != 0) { _DAT_0046970e = _DAT_0046970e + -0x15; FUN_00431ab0(); FUN_00431ab0(); _DAT_00469718 = (short)in_stack_00000004 + 8; _DAT_0046971a = local_c + sVar2 + -0x20; _DAT_0046971c = DAT_0046970c; _DAT_0046971e = 0x14; } if ((in_stack_00000014 & 4) != 0) { _DAT_0046970e = _DAT_0046970e + -0x32; } return; } void FUN_0043f579(void) { char cVar1; char cVar2; bool bVar3; short sVar4; short sVar5; char *pcVar6; char *pcVar7; char *pcVar8; char *in_stack_00000004; short *in_stack_00000008; short in_stack_0000000c; short local_a; bVar3 = true; local_a = 0; sVar4 = GetFontBaselineY_(0xffff); pcVar6 = in_stack_00000004; pcVar8 = in_stack_00000004; do { if ((((*pcVar6 == ' ') || (*pcVar6 == '\0')) || (*pcVar6 == '\n')) || ((*pcVar6 == '-' || (*pcVar6 == '^')))) { if ((*pcVar6 == '-') || (*pcVar6 == '^')) { pcVar6 = pcVar6 + 1; } cVar1 = *pcVar6; *pcVar6 = '\0'; sVar5 = FUN_0044ccf5(); if (in_stack_0000000c < sVar5) { cVar2 = *in_stack_00000004; *in_stack_00000004 = '\0'; local_a = local_a + 1; *in_stack_00000004 = cVar2; *pcVar6 = cVar1; pcVar7 = in_stack_00000004; if (*in_stack_00000004 == '\n') { pcVar7 = in_stack_00000004 + 1; } for (; *pcVar7 == ' '; pcVar7 = pcVar7 + 1) { } in_stack_00000004 = pcVar7; pcVar8 = pcVar7; if (bVar3) { bVar3 = false; } } else { *pcVar6 = cVar1; pcVar7 = pcVar6 + 1; in_stack_00000004 = pcVar6; } } else { pcVar7 = pcVar6 + 1; } pcVar6 = pcVar7; } while (*pcVar7 != '\0'); sVar5 = FUN_0044ccf5(); if (in_stack_0000000c < sVar5) { cVar1 = *in_stack_00000004; *in_stack_00000004 = '\0'; local_a = local_a + 1; *in_stack_00000004 = cVar1; for (; pcVar8 = in_stack_00000004, *in_stack_00000004 == ' '; in_stack_00000004 = in_stack_00000004 + 1) { } } if (pcVar8 != (char *)0x0) { local_a = local_a + 1; } *in_stack_00000008 = local_a * (sVar4 + 3); return; } void FUN_0043f8b4(void) { int iVar1; short sVar2; FUN_00416f98(); sVar2 = 0; do { iVar1 = PickapuzzleHitTest_(10,(&DAT_00462ab2)[sVar2],100,0xf,1,PickapuzzleMenu::OnClick); (&DAT_004698b8)[sVar2] = iVar1; *(int *)((&DAT_004698b8)[sVar2] + 0x1e) = (int)sVar2; sVar2 = sVar2 + 1; } while (sVar2 < 8); sVar2 = 8; do { iVar1 = PickapuzzleHitTest_(0xe1,(&DAT_00462ab2)[sVar2],0x58,0x17,1,PickapuzzleMenu::OnClick); (&DAT_004698b8)[sVar2] = iVar1; *(int *)((&DAT_004698b8)[sVar2] + 0x1e) = (int)sVar2; sVar2 = sVar2 + 1; } while (sVar2 < 0xb); DAT_004698e4 = PickapuzzleHitTest_(0x65,0x37,0x13,0x10,1,PickapuzzleMenu::OnClick); *(undefined4 *)(DAT_004698e4 + 0x1e) = 0xb; DAT_004698e8 = PickapuzzleHitTest_(0x65,0x4c,0x13,0x10,1,PickapuzzleMenu::OnClick); *(undefined4 *)(DAT_004698e8 + 0x1e) = 0xc; return; } void FUN_0043fb50(void) { BigThing6Eh::processNodes_(DAT_004698f8); FUN_0041395c(DAT_004698f8,0x1a, CONCAT22((short)Puzzles::currentCategory >> 0xf, *(undefined2 *)(&DAT_00462aa2 + (short)Puzzles::currentCategory * 2)),1); FUN_00412e70(); return; } void FUN_0043fd88(void) { short sVar1; sVar1 = 0; do { FUN_0042fc9c(); FUN_0044001b(); FUN_00412784(); sVar1 = sVar1 + 1; } while (sVar1 < 4); return; } void FUN_0043fdaa(void) { char *format; undefined4 uVar1; undefined2 in_stack_00000004; FUN_004465a5(in_stack_00000004,0xf,0); FUN_00430de8(10,0x140,0x14e,0x3f); FUN_00430abc(10,0x140,0x14e,0x3f); SetCurrentColor(0); format = GetWinapiStringAlloc(0x4e3c); Sprintf_(&DAT_004697b8,format,&DAT_00462b11); TurboFree_(format); Draw::StringWithCurrentFontAndColor(10,0x148,&DAT_004697b8); if ((Puzzles::endgame == 0) && (_GameState->puzzles[(short)Puzzles::currentCategory].completion[Puzzles::currentPuzzle + -1] == 0)) { _GameState->puzzles[(short)Puzzles::currentCategory].completion[Puzzles::currentPuzzle + -1] = 1 ; uVar1 = FUN_004401a3(); if ((short)uVar1 != 0) { _GameState->puzzles[(short)Puzzles::currentCategory].mode = FULLY_SOLVED; uVar1 = FUN_00440221(); if ((short)uVar1 != 0) { Puzzles::ThrowChosenCategoriesExhausted(); } } } return; } void __stdcall FUN_0043fef9(short param_1) { undefined2 font; FUN_00430de8(10,0x140,0x14e,0x3f); FUN_00430abc(10,300,0x14e,0x50); SetCurrentColor(0); if (param_1 == 0) { // font 15000 = small font for puzzles Nfnt::LoadWithCache(15000); font = SetCurrentFont(15000); Draw::StringWithCurrentFontAndColor(10,0x148,DAT_00469770); SetCurrentFont(font); Nfnt::Unload(15000); return; } Draw::StringWithCurrentFontAndColor(10,0x148,&DAT_004697b8); return; } void __cdecl FUN_0043ff91(int param_1) { short sVar1; sVar1 = 0; while (*(short *)(param_1 + sVar1 * 2) != -1) { FUN_00446172(); sVar1 = sVar1 + 1; } return; } void FUN_0043ffba(void) { short sVar1; int in_stack_00000004; FUN_00446bc3(); sVar1 = 0; while (*(short *)(in_stack_00000004 + sVar1 * 2) != -1) { FUN_004462d4(*(undefined2 *)(in_stack_00000004 + sVar1 * 2)); sVar1 = sVar1 + 1; } return; } void __cdecl Puzzles::ThrowChosenCategoriesExhausted(void) { void *pvVar1; pvVar1 = Resource::Load(19000,&_TEXT28); FUN_0044c8f3(pvVar1,100); TurnAllOffCategoriesBackOn(); FUN_00440695(19000,&_TEXT29); return; } void FUN_0044001b(void) { short sVar1; int local_1c [4]; int local_c; int local_8; local_1c[0] = *(int *)&_GameState->field_0x10 % 10; local_1c[1] = (*(int *)&_GameState->field_0x10 / 10) % 10; local_1c[2] = (*(int *)&_GameState->field_0x10 / 100) % 10; local_1c[3] = (*(int *)&_GameState->field_0x10 / 1000) % 10; local_c = (*(int *)&_GameState->field_0x10 / 10000) % 10; local_8 = *(int *)&_GameState->field_0x10 / 100000; sVar1 = 0; do { BigThing6Eh::processNodes_((&DAT_004698fc)[sVar1]); FUN_004129d4((&DAT_004698fc)[sVar1],(short)local_1c[sVar1]); FUN_00412e70(); sVar1 = sVar1 + 1; } while (sVar1 < 6); return; } void FUN_004400eb(uint param_1,undefined4 param_2,uint param_3) { uint uVar1; uint uVar2; undefined4 extraout_EDX; undefined4 uVar3; undefined4 extraout_EDX_00; short sVar4; uVar2 = DAT_00469914; FUN_00412d0c(param_1,param_2,param_3,DAT_00469914); sVar4 = 0; uVar3 = extraout_EDX; do { uVar1 = (&DAT_004698fc)[sVar4]; FUN_00412d0c((int)sVar4,uVar3,uVar2,(&DAT_004698fc)[sVar4]); uVar2 = uVar1; sVar4 = sVar4 + 1; uVar3 = extraout_EDX_00; } while (sVar4 < 6); return; } void FUN_00440113(uint param_1,undefined4 param_2,uint param_3) { undefined4 uVar1; short sVar2; DAT_00469914 = FUN_00412ac4(Puzzles::currentCategory + 0x4c2d); FUN_0041395c(DAT_00469914,0x15d,0x16a,10); FUN_00412e70(); sVar2 = 0; do { uVar1 = FUN_00412ac4(Puzzles::currentCategory + 0x4c35); (&DAT_004698fc)[sVar2] = uVar1; FUN_0041395c((&DAT_004698fc)[sVar2],CONCAT22(sVar2 >> 0xf,(&DAT_00462acc)[sVar2 * 2] + 0x15d), 0x16b,0xf); sVar2 = sVar2 + 1; } while (sVar2 < 6); FUN_0044001b(); return; } undefined4 FUN_004401a3(void) { int iVar1; undefined4 uVar2; short sVar3; short in_stack_00000004; sVar3 = 0; iVar1 = 0; while( true ) { if (Puzzles::CATEGORY_LEN[in_stack_00000004] <= (short)iVar1) break; if (_GameState->puzzles[in_stack_00000004].completion[(short)iVar1] == 0) { sVar3 = sVar3 + 1; } iVar1 = iVar1 + 1; } if (sVar3 == 0) { uVar2 = CONCAT22((short)((uint)iVar1 >> 0x10),1); } else { uVar2 = 0; } return uVar2; } undefined4 FUN_00440221(void) { int iVar1; iVar1 = 0; while ((_GameState->puzzles[(short)iVar1].mode != ON && (_GameState->puzzles[(short)iVar1].mode != ON_ENDGAME))) { iVar1 = iVar1 + 1; if (7 < (short)iVar1) { return CONCAT22((short)((uint)iVar1 >> 0x10),1); } } return 0; } bool FUN_00440260(void) { bool bVar1; int iVar2; UINT uMode; uint uVar3; int in_stack_00000004; char local_108 [260]; if (*(char *)(in_stack_00000004 + 9) == ':') { local_108[0] = '\0'; } else { Strcpy(local_108,(char *)&lpReturnedString_00462b30); } FUN_0044feec(); FUN_0044ff28(); iVar2 = FUN_0044ff50(); if (iVar2 == 0) { *(undefined2 *)(in_stack_00000004 + 0x1c) = 5; *(HMODULE *)(in_stack_00000004 + 0x1e) = _Module; bVar1 = false; } else { uMode = SetErrorMode(0x8000); uVar3 = FUN_004105b0(); *(uint *)(in_stack_00000004 + 0x1e) = uVar3; SetErrorMode(uMode); bVar1 = 0x1f < *(int *)(in_stack_00000004 + 0x1e); if (bVar1) { *(undefined2 *)(in_stack_00000004 + 0x1c) = 1; } bVar1 = !bVar1; } return bVar1; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address undefined4 FUN_00440318(void) { if (_DAT_00462b20 == 0) { _DAT_00462b20 = 1; DAT_00462c34 = DlistNew(); DAT_00469918 = DlistNew(); } return 0; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_00440342(void) { DlistNode *node; DlistNode *pDVar1; undefined4 extraout_EDX; DlistNode *pDVar2; if (_DAT_00462b20 != 0) { FUN_0044086e(); node = DlistHead(DAT_00469918); while (node != (DlistNode *)0x0) { pDVar2 = node; pDVar1 = DlistNext(node); if (*(short *)&node[3].prev == 1) { FUN_00410528(pDVar1,extraout_EDX,pDVar2,*(undefined4 *)((int)&node[3].prev + 2)); } DlistRemove(DAT_00469918,node); PoolFree(node); node = pDVar1; } PoolFreeIfNotNull(DAT_00462c34); PoolFreeIfNotNull(DAT_00469918); _DAT_00462b20 = 0; } return; } undefined4 FUN_004403be(void) { bool bVar1; DlistNode *node; undefined3 extraout_var; char *in_stack_00000004; undefined4 uVar2; node = PoolAlloc(0x22); Strcpy((char *)(node + 1),in_stack_00000004); bVar1 = FUN_00440260(); uVar2 = CONCAT31(extraout_var,bVar1); if ((short)uVar2 != 0) { FUN_00440342(); return 0; } DlistInsert(DAT_00469918,node,-1); return CONCAT22((short)((uint)uVar2 >> 0x10),1); } // WARNING: Heritage AFTER dead removal. Example location: EAX : 0x00440435 // WARNING: Restarted to delay deadcode elimination for space: register void FUN_0044040c(void) { DlistNode *node; DlistNode *pDVar1; int iVar2; undefined4 extraout_EDX; DlistNode *pDVar3; pDVar1 = DlistHead(DAT_00469918); while (node = pDVar1, node != (DlistNode *)0x0) { pDVar3 = node; pDVar1 = DlistNext(node); iVar2 = FUN_0044ff50(pDVar1,extraout_EDX,pDVar3); if (iVar2 == 0) { if (*(short *)&node[3].prev == 1) { FUN_00410528(); } DlistRemove(DAT_00469918,node); PoolFree(node); } } return; } // WARNING: Heritage AFTER dead removal. Example location: EAX : 0x00440589 // WARNING: Globals starting with '_' overlap smaller symbols at the same address // WARNING: Restarted to delay deadcode elimination for space: register void * __cdecl Resource::Load(short id,LPCSTR fourcc) { short *psVar1; DlistNode *pDVar2; DlistNode *pDVar3; Dlist *pDVar4; HRSRC hResInfo; uint uVar5; undefined4 extraout_EDX; undefined4 uVar6; undefined4 extraout_EDX_00; Dlist *pDVar7; Dlist *node; pDVar2 = (DlistNode *)ResolveFourcc(fourcc); for (pDVar3 = DlistHead(DAT_00462c34); pDVar3 != (DlistNode *)0x0; pDVar3 = DlistNext(pDVar3)) { if ((id == *(short *)&pDVar3[1].next) && (pDVar2 == pDVar3[1].prev)) { _DAT_00462c38 = 1; psVar1 = (short *)((int)&pDVar3[1].next + 2); *psVar1 = *psVar1 + 1; _DAT_0046991c = pDVar3; return pDVar3[2].prev; } } pDVar3 = PoolAlloc(0x1a); _DAT_00462c38 = 0; _DAT_0046991c = pDVar3; *(short *)&pDVar3[1].next = id; pDVar3[1].prev = pDVar2; *(undefined2 *)((int)&pDVar3[1].next + 2) = 1; pDVar3[2].prev = (DlistNode *)0x0; pDVar7 = DAT_00469918; pDVar4 = (Dlist *)DlistHead(DAT_00469918); uVar6 = extraout_EDX; do { node = pDVar4; if (node == (Dlist *)0x0) { LAB_004405cb: if ((pDVar3[2].next == (DlistNode *)0x0) || (pDVar3[2].prev == (DlistNode *)0x0)) { PoolFree(pDVar3); pDVar3 = (DlistNode *)0x0; } else { DlistInsert(DAT_00462c34,pDVar3,-1); pDVar3 = pDVar3[2].prev; } return pDVar3; } if (*(short *)&node[3].tail == 5) { hResInfo = FindResourceA(*(HMODULE *)((int)&node[3].tail + 2), (LPCSTR)(uint)*(ushort *)&pDVar3[1].next,fourcc); if (hResInfo != (HRSRC)0x0) { pDVar2 = LoadResource(*(HMODULE *)((int)&node[3].tail + 2),hResInfo); pDVar3[2].next = pDVar2; pDVar2 = LockResource(pDVar3[2].next); pDVar3[2].prev = pDVar2; *(undefined2 *)&pDVar3[3].next = 1; goto LAB_004405cb; } } else { uVar5 = FUN_004107fe(node,uVar6,pDVar7); if (uVar5 != 0) { pDVar2 = FUN_00410937(*(undefined4 *)((int)&node[3].tail + 2),(short)uVar5); pDVar3[2].next = pDVar2; pDVar2 = FUN_00410a01(pDVar3[2].next); pDVar3[2].prev = pDVar2; *(undefined2 *)&pDVar3[3].next = 0; goto LAB_004405cb; } } pDVar4 = (Dlist *)DlistNext((DlistNode *)node); pDVar7 = node; uVar6 = extraout_EDX_00; } while( true ); } void FUN_00440615(uint param_1,undefined4 param_2,uint param_3,ushort param_4,LPCSTR param_5) { Resource::Load(param_4,param_5); return; } void FUN_0044062c(void) { bool bVar1; DlistNode *pDVar2; DlistNode *node; DlistNode *in_stack_00000004; undefined1 local_c [4]; undefined1 local_8; bVar1 = false; pDVar2 = DlistHead(DAT_00462c34); while ((node = pDVar2, !bVar1 && (node != (DlistNode *)0x0))) { pDVar2 = DlistNext(node); if (node[2].next == in_stack_00000004) { Memcpy(local_c,&node[1].prev,4); local_8 = 0; FUN_00440695(*(short *)&node[1].next,local_c); bVar1 = true; } } return; } // WARNING: Heritage AFTER dead removal. Example location: EAX : 0x004406fc // WARNING: Globals starting with '_' overlap smaller symbols at the same address // WARNING: Restarted to delay deadcode elimination for space: register void __cdecl FUN_00440695(short param_1,undefined *param_2) { short *psVar1; bool bVar2; DlistNode *pDVar3; DlistNode *pDVar4; DlistNode *node; DlistNode *pDVar5; bVar2 = false; pDVar3 = (DlistNode *)Resource::ResolveFourcc(param_2); pDVar4 = DlistHead(DAT_00462c34); while( true ) { node = pDVar4; if (bVar2) { return; } if (node == (DlistNode *)0x0) break; pDVar5 = node; pDVar4 = DlistNext(node); if ((pDVar3 == node[1].prev) && (*(short *)&node[1].next == param_1)) { bVar2 = true; psVar1 = (short *)((int)&node[1].next + 2); *psVar1 = *psVar1 + -1; if (*(short *)((int)&node[1].next + 2) == 0) { _DAT_00462c38 = 0; if (*(short *)&node[3].next == 1) { FreeResource(node[2].next); } else { FUN_00410a17(pDVar4,0,pDVar5); FUN_00410a30(); } DlistRemove(DAT_00462c34,node); PoolFree(node); return; } _DAT_00462c38 = 1; } } return; } // WARNING: Heritage AFTER dead removal. Example location: EAX : 0x00440793 // WARNING: Globals starting with '_' overlap smaller symbols at the same address // WARNING: Restarted to delay deadcode elimination for space: register void FUN_0044073c(void) { short *psVar1; bool bVar2; DlistNode *pDVar3; undefined4 extraout_EDX; undefined4 extraout_EDX_00; DlistNode *node; DlistNode *in_stack_00000004; DlistNode *pDVar4; DlistNode *pDVar5; bVar2 = false; pDVar3 = DlistHead(DAT_00462c34); while ((node = pDVar3, !bVar2 && (node != (DlistNode *)0x0))) { pDVar4 = node; pDVar3 = DlistNext(node); if (node[2].prev == in_stack_00000004) { bVar2 = true; psVar1 = (short *)((int)&node[1].next + 2); *psVar1 = *psVar1 + -1; if (*(short *)((int)&node[1].next + 2) == 0) { _DAT_00462c38 = 0; if (*(short *)&node[3].next == 1) { FreeResource(node[2].next); } else { pDVar5 = node[2].next; FUN_00410a17(pDVar3,extraout_EDX,pDVar4); FUN_00410a30(pDVar3,extraout_EDX_00,pDVar5); } DlistRemove(DAT_00462c34,node); PoolFree(node); } else { _DAT_00462c38 = 1; } } } return; } undefined4 FUN_004407d3(void) { DlistNode *node; undefined4 unaff_EDI; DlistNode *in_stack_00000004; node = DlistHead(DAT_00462c34); while( true ) { if (node == (DlistNode *)0x0) { return unaff_EDI; } if (in_stack_00000004 == node[2].prev) break; node = DlistNext(node); } return node[2].next; } // WARNING: Heritage AFTER dead removal. Example location: EAX : 0x00440849 // WARNING: Restarted to delay deadcode elimination for space: register undefined4 FUN_0044080d(void) { Dlist *pDVar1; HRSRC pHVar2; undefined4 extraout_EDX; undefined4 uVar3; undefined4 extraout_EDX_00; uint in_stack_00000004; LPCSTR in_stack_00000008; Dlist *pDVar4; Dlist *node; pDVar4 = DAT_00469918; pDVar1 = (Dlist *)DlistHead(DAT_00469918); uVar3 = extraout_EDX; while( true ) { node = pDVar1; if (node == (Dlist *)0x0) { return 0; } if (*(short *)&node[3].tail == 5) { pHVar2 = FindResourceA(*(HMODULE *)((int)&node[3].tail + 2), (LPCSTR)(in_stack_00000004 & 0xffff),in_stack_00000008); } else { pHVar2 = (HRSRC)FUN_004107fe(node,uVar3,pDVar4); } if (pHVar2 != (HRSRC)0x0) break; pDVar1 = (Dlist *)DlistNext((DlistNode *)node); pDVar4 = node; uVar3 = extraout_EDX_00; } return *(undefined4 *)((int)&node[3].tail + 2); } // WARNING: Heritage AFTER dead removal. Example location: EAX : 0x0044089f // WARNING: Restarted to delay deadcode elimination for space: register void FUN_0044086e(void) { DlistNode *node; DlistNode *pDVar1; undefined4 extraout_EDX; undefined4 extraout_EDX_00; DlistNode *pDVar2; DlistNode *pDVar3; node = DlistHead(DAT_00462c34); while (node != (DlistNode *)0x0) { pDVar2 = node; pDVar1 = DlistNext(node); if (*(short *)&node[3].next == 1) { FreeResource(node[2].next); } else { pDVar3 = node[2].next; FUN_00410a17(pDVar1,extraout_EDX,pDVar2); FUN_00410a30(pDVar1,extraout_EDX_00,pDVar3); } DlistRemove(DAT_00462c34,node); PoolFree(node); node = pDVar1; } return; } undefined4 FUN_004408cd(void) { DlistNode *node; undefined4 uVar1; DlistNode *in_stack_00000004; char local_200 [500]; undefined1 local_c [4]; undefined1 local_8; uVar1 = 0; for (node = DlistHead(DAT_00462c34); node != (DlistNode *)0x0; node = DlistNext(node)) { if (node == in_stack_00000004) { uVar1 = 1; Memcpy(local_c,&node[1].prev,4); local_8 = 0; Sprintf_(local_200,s_Rs32____s__d_00462c4e,local_c,(int)*(short *)&node[1].next); ShowAlertMessage(local_200); } } return uVar1; } undefined4 FUN_0044094e(undefined4 param_1,undefined4 param_2,uint param_3,short param_4,undefined *param_5) { DlistNode *pDVar1; DlistNode *node; pDVar1 = (DlistNode *)Resource::ResolveFourcc(param_5); node = DlistHead(DAT_00462c34); while( true ) { if (node == (DlistNode *)0x0) { return 0; } if ((param_4 == *(short *)&node[1].next) && (pDVar1 == node[1].prev)) break; node = DlistNext(node); } return node[2].prev; } void FUN_00440994(void) { int iVar1; short sVar2; short sVar3; FUN_00416f98(); sVar2 = 0; do { if (0 < (short)(&DAT_004699d6)[sVar2]) { iVar1 = PickapuzzleHitTest_((&DAT_00462c72)[sVar2 * 9],(&DAT_00462c74)[sVar2 * 9], (&DAT_00462c76)[sVar2 * 9],(&DAT_00462c78)[sVar2 * 9],10, FUN_00441736); (&DAT_00469990)[sVar2] = iVar1; *(int *)((&DAT_00469990)[sVar2] + 0x1e) = (int)sVar2; } sVar2 = sVar2 + 1; } while (sVar2 < 6); sVar2 = 0; do { if ((&DAT_004699e2)[sVar2 * 6] == -1) { iVar1 = PickapuzzleHitTest_((&DAT_00462cd4)[(10 - DAT_00462c62) * 0x14 + sVar2 * 2] + -10, (&DAT_00462cd6)[(10 - DAT_00462c62) * 0x14 + sVar2 * 2] + -10,0x1e ,0x32,10,FUN_00441531); (&DAT_004699a8)[sVar2] = iVar1; *(int *)((&DAT_004699a8)[sVar2] + 0x1e) = (int)sVar2; } else { sVar3 = 2; do { if ((&DAT_004699e2)[sVar2 * 6 + sVar3 * 2] != -1) { iVar1 = PickapuzzleHitTest_((&DAT_00462cd4)[(10 - DAT_00462c62) * 0x14 + sVar2 * 2] + -10, (&DAT_00462cd6)[(10 - DAT_00462c62) * 0x14 + sVar2 * 2] + sVar3 * 0x1f + -10,0x1e,0x32,10,FUN_00441531); (&DAT_004699a8)[sVar2] = iVar1; *(int *)((&DAT_004699a8)[sVar2] + 0x1e) = (int)sVar2; break; } sVar3 = sVar3 + -1; } while (-1 < sVar3); } sVar2 = sVar2 + 1; if (4 < sVar2) { PickapuzzleHitTest_(0x18e,0x144,0x1f5,0x165,5,(ClickHandler *)&LAB_004413a9); PickapuzzleHitTest_(0x13,0x1b,0x3a,0x30,5,FUN_0044182e); PickapuzzleHitTest_(0,0,0x200,0x17c,0,(ClickHandler *)&LAB_00441509); PickapuzzleHitTest_(0xb,0x81,0x42,0xb1,5,(ClickHandler *)&LAB_004414b1); if (DAT_00462c5c != 0) { PickapuzzleHitTest_(10,0x140,0x14e,0x3c,0x19,(ClickHandler *)&LAB_00440bf3); } return; } } while( true ); } // WARNING: Heritage AFTER dead removal. Example location: EAX : 0x00440c95 // WARNING: Globals starting with '_' overlap smaller symbols at the same address // WARNING: Restarted to delay deadcode elimination for space: register void Puzzles::SetParametersForBalance_(void) { uint uVar1; undefined4 uVar2; uint extraout_ECX; uint extraout_ECX_00; undefined4 extraout_EDX; undefined4 extraout_EDX_00; short sVar3; int iVar4; undefined2 *puVar5; int iVar6; _DAT_004699d4 = 0; DAT_00469742 = 0x4a64; DAT_00469744 = 0x4a65; DAT_00469746 = 0x4a70; DAT_00469748 = 0x4a72; DAT_0046974a = 0x4a77; DAT_0046974c = 0xffff; puVar5 = &DAT_00469742; uVar1 = FUN_0043ff91(&DAT_00469742); FUN_00440113(uVar1,extraout_EDX,(uint)puVar5); FUN_0044c950(); sVar3 = 0; do { (&DAT_00469948)[sVar3] = 0; sVar3 = sVar3 + 1; } while (sVar3 < 0xc); iVar4 = 0; do { iVar6 = iVar4 + 0x2eed; uVar2 = FUN_00412ac4((ushort)iVar6); sVar3 = (short)iVar4; (&DAT_00469a60)[sVar3] = uVar2; uVar1 = FUN_0043b58e((int)sVar3,-(&DAT_00462e8c)[sVar3],iVar6); (&DAT_00469a78)[sVar3] = uVar1; iVar4 = iVar4 + 1; } while ((short)iVar4 < 6); FUN_00431024(uVar1,(int)sVar3,extraout_ECX,12000); DAT_00469944 = FUN_00412ac4(12000); uVar1 = FUN_00413cf4(); FUN_00412d0c(uVar1,extraout_EDX_00,extraout_ECX_00,DAT_00469944); SetParametersForBalance(); FUN_00440994(); DAT_00469940 = FUN_00412ac4(0x2ef6); FUN_00412dc8(DAT_00469940); FUN_0041395c(DAT_00469940,10,0x19,10); FUN_0041029e(); DAT_0046993c = FUN_00412ac4(0x2ef7); FUN_00412dc8(DAT_0046993c); FUN_0041395c(DAT_0046993c,0x18e,0x143,10); DAT_00469938 = FUN_00412ac4(0x2ef8); FUN_00412e70(); FUN_0041395c(DAT_00469938,0x6b,0x1f,10); FUN_004129d4(DAT_00469938,3); _DAT_00469920 = FUN_0044ca04(); FUN_00441ab9(); FUN_0043fef9(DAT_00462c5c); FUN_00441942(); DAT_00469930 = FUN_00412ac4(0x2ef9); DAT_00469934 = FUN_0043b58e(); *(undefined2 *)(DAT_00469934 + 0x12) = 0; FUN_00443878(); DAT_00469544 = &LAB_0044381d; FUN_0043139c(); return; } // WARNING: Heritage AFTER dead removal. Example location: EAX : 0x00440ef5 // WARNING: Restarted to delay deadcode elimination for space: register void FUN_00440e11(uint param_1,undefined4 param_2,uint param_3) { uint uVar1; uint uVar2; undefined4 uVar3; uint extraout_ECX; uint extraout_ECX_00; undefined4 extraout_EDX; undefined4 extraout_EDX_00; undefined4 extraout_EDX_01; undefined4 extraout_EDX_02; undefined4 extraout_EDX_03; int extraout_EDX_04; undefined4 extraout_EDX_05; int iVar4; short sVar5; uint uVar6; if (DAT_0046976c != 0) { param_3 = CONCAT22((short)(param_1 >> 0x10),DAT_0046976c); param_1 = FUN_00446367(DAT_0046976c); DAT_0046976c = 0; param_2 = extraout_EDX; } FUN_004400eb(param_1,param_2,param_3); PoolFree(DAT_00469a5c); uVar1 = FUN_0043b9d2(); FUN_00412d0c(uVar1,extraout_EDX_00,extraout_ECX,DAT_00469930); FUN_0043b69e(); FUN_0043ffba(); DAT_00469544 = 0; DAT_0046976a = DAT_00462c5c; uVar6 = 0; uVar2 = FUN_0044c950(); uVar1 = DAT_00469940; uVar6 = FUN_00412d0c(uVar2,extraout_EDX_01,uVar6,DAT_00469940); uVar2 = DAT_0046993c; uVar1 = FUN_00412d0c(uVar6,extraout_EDX_02,uVar1,DAT_0046993c); FUN_00412d0c(uVar1,extraout_EDX_03,uVar2,DAT_00469938); FUN_00416f98(); FUN_004102d7(); sVar5 = 0; uVar1 = extraout_ECX_00; iVar4 = extraout_EDX_04; do { uVar2 = (&DAT_00469978)[sVar5]; FUN_00412d0c((int)sVar5,iVar4,uVar1,uVar2); uVar6 = (&DAT_00469a60)[sVar5]; uVar3 = FUN_00412d0c((int)sVar5,extraout_EDX_05,uVar2,uVar6); (&DAT_00469a60)[sVar5] = uVar3; uVar1 = (&DAT_00469a78)[sVar5]; uVar3 = FUN_0043b69e((int)sVar5,(int)sVar5,uVar6); iVar4 = (int)sVar5; (&DAT_00469a78)[iVar4] = uVar3; sVar5 = sVar5 + 1; } while (sVar5 < 6); sVar5 = 0; do { if ((&DAT_00469948)[sVar5] != 0) { uVar2 = (&DAT_00469948)[sVar5]; uVar3 = FUN_00412d0c((int)sVar5,iVar4,uVar1,(&DAT_00469948)[sVar5]); uVar1 = uVar2; iVar4 = (int)sVar5; (&DAT_00469948)[iVar4] = uVar3; } sVar5 = sVar5 + 1; } while (sVar5 < 0xc); FUN_00440695(DAT_0046977e,&_TEXT30); FUN_0043b6bf(); FUN_00431348(); return; } void FUN_004413d3(void) { FUN_00413b08(); DAT_00469926 = DAT_00462c60; DAT_00462c60 = 2; if (DAT_00462c62 == 5) { FUN_004129d4(DAT_00469938,2); } else { FUN_004129d4(DAT_00469938,1); } FUN_00412fe4(DAT_00469938); FUN_00412e18(DAT_00469938); return; } void FUN_00441442(void) { FUN_00413b08(); DAT_00469926 = DAT_00462c60; DAT_00462c60 = 0; if (DAT_00462c62 == 5) { FUN_004129d4(DAT_00469938,0); } else { FUN_004129d4(DAT_00469938,3); } FUN_00412fe4(DAT_00469938); FUN_00412e18(DAT_00469938); return; } int FUN_00441514(undefined4 param_1,int param_2) { int iVar1; iVar1 = 0; do { if ((&DAT_00469948)[(short)iVar1] == 0) { return iVar1; } iVar1 = iVar1 + 1; } while ((short)iVar1 < 0xc); return param_2; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_00441531(void) { short sVar1; short sVar2; int iVar3; undefined4 uVar4; undefined4 uVar5; undefined4 extraout_ECX; int extraout_EDX; undefined4 extraout_EDX_00; undefined4 extraout_EDX_01; short sVar6; int in_stack_00000004; uint uVar7; uint uVar8; sVar1 = *(short *)(in_stack_00000004 + 0x1e); if (3 < DAT_00462c60) { if (DAT_00462c60 == 4) { if ((&DAT_004699ea)[sVar1 * 6] == -1) { uVar5 = FUN_004438d3(); DAT_00462c60 = 6; iVar3 = FUN_00441514(uVar5,extraout_EDX); sVar6 = (short)iVar3; (&DAT_004699e2)[sVar1 * 6 + (short)(&DAT_004699bc)[sVar1] * 2] = sVar6; sVar2 = (&DAT_004699bc)[sVar1]; (&DAT_004699e4)[sVar1 * 6 + sVar2 * 2] = DAT_004699cc; uVar5 = CONCAT22(sVar2 >> 0xf,DAT_004699cc + 0x2ee7U); uVar4 = FUN_00412ac4(DAT_004699cc + 0x2ee7U); (&DAT_00469948)[sVar6] = uVar4; uVar7 = (&DAT_00469948)[sVar6]; uVar5 = FUN_00412e70((int)sVar6,(int)sVar6,uVar5); FUN_004438e9(uVar5,extraout_EDX_00,uVar7,sVar1); (&DAT_004699bc)[sVar1] = (&DAT_004699bc)[sVar1] + 1; FUN_00441ab9(); FUN_004438e0(); FUN_00440994(); FUN_004465a5(0x4a72,5,0); _DAT_00462c64 = 1; } } else if ((DAT_00462c60 == 6) && ((&DAT_004699e2)[sVar1 * 6] != -1)) { FUN_004438d3(); (&DAT_004699bc)[sVar1] = (&DAT_004699bc)[sVar1] + -1; sVar2 = (&DAT_004699e2)[sVar1 * 6 + (short)(&DAT_004699bc)[sVar1] * 2]; DAT_00462c60 = 4; DAT_004699cc = (&DAT_004699e4 + sVar1 * 6)[(short)(&DAT_004699bc)[sVar1] * 2]; uVar7 = (&DAT_00469a78)[DAT_004699cc]; FUN_0043b4e2((int)DAT_004699cc,&DAT_004699e4 + sVar1 * 6,extraout_ECX,uVar7); uVar8 = (&DAT_00469948)[sVar2]; uVar5 = FUN_00412d0c((int)sVar2,extraout_EDX_01,uVar7,uVar8); (&DAT_00469948)[sVar2] = uVar5; (&DAT_004699e4)[sVar1 * 6 + (short)(&DAT_004699bc)[sVar1] * 2] = 0xffff; sVar2 = (&DAT_004699bc)[sVar1]; (&DAT_004699e2 + sVar1 * 6)[sVar2 * 2] = 0xffff; FUN_004438e9((int)sVar2,&DAT_004699e2 + sVar1 * 6,uVar8,sVar1); FUN_004465a5(0x4a70,5,0); FUN_00441ab9(); FUN_00440994(); _DAT_00462c64 = 1; } } return; } void FUN_00441736(void) { short sVar1; int iVar2; undefined4 extraout_ECX; undefined4 extraout_EDX; int in_stack_00000004; if (3 < DAT_00462c60) { if (DAT_00462c60 == 4) { FUN_004438d3(); DAT_00462c60 = 6; sVar1 = (&DAT_004699d6)[DAT_004699cc]; (&DAT_004699d6)[DAT_004699cc] = (&DAT_004699d6)[DAT_004699cc] + 1; if (sVar1 == 0) { FUN_00412e70(); } FUN_00440994(); FUN_004465a5(0x4a72,5,0); FUN_00441942(); FUN_004438e0(); return; } if (DAT_00462c60 != 6) { return; } DAT_00462c60 = 4; FUN_004438d3(); DAT_004699cc = *(short *)(in_stack_00000004 + 0x1e); FUN_0043b4e2((int)DAT_004699cc,extraout_EDX,extraout_ECX,(&DAT_00469a78)[DAT_004699cc]); iVar2 = (int)DAT_004699cc; (&DAT_004699d6)[iVar2] = (&DAT_004699d6)[iVar2] + -1; if ((&DAT_004699d6)[iVar2] == 0) { BigThing6Eh::processNodes_((&DAT_00469978)[DAT_004699cc]); } FUN_00441942(); FUN_00440994(); FUN_004465a5(0x4a70,5,0); } return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_0044182e(void) { void *pvVar1; short sVar2; void *apvStackY_20400 [32762]; void *local_400 [5]; undefined1 local_3ec [1000]; FUN_00412dc8(DAT_00469940); FUN_00412784(); BigThing6Eh::processNodes_(DAT_00469940); FUN_00412784(); Memset(local_3ec,0,1000); local_400[0] = Resource::Load(DAT_004697a8,&_TEXT31); FUN_0044ffac(); FUN_0045008c(); for (sVar2 = 1; sVar2 < _DAT_0046977c; sVar2 = sVar2 + 1) { pvVar1 = Resource::Load((&DAT_004697a8)[sVar2],&_TEXT32); local_400[sVar2] = pvVar1; FUN_0044ffac(); FUN_0044ffc8(); } FUN_0043f27a(); for (sVar2 = 0; sVar2 < _DAT_0046977c; sVar2 = sVar2 + 1) { FUN_00440695((&DAT_004697a8)[sVar2],&_TEXT33); } return; } void FUN_00441942(void) { short sVar1; char local_10 [12]; Nfnt::LoadWithCache(15000); FUN_00430de8(0xb,0x81,0x42,0xb1); sVar1 = 0; do { if (0 < (short)(&DAT_004699d6)[sVar1]) { FUN_00412e70(); FUN_0041395c((&DAT_00469978)[sVar1], CONCAT22((short)((uint)(sVar1 * 9) >> 0x10),(&DAT_00462c6a)[sVar1 * 9]), CONCAT22((short)((uint)(sVar1 * 9) >> 0x10),(&DAT_00462c6c)[sVar1 * 9]),0x14); Sprintf_(local_10,&DAT_00462ecc,(int)(short)(&DAT_004699d6)[sVar1]); Draw::String(15000,local_10,(&DAT_00462c6e)[sVar1 * 9],(&DAT_00462c70)[sVar1 * 9],0); } sVar1 = sVar1 + 1; } while (sVar1 < 6); FUN_00430abc(0xb,0x81,0x42,0xb1); Nfnt::Unload(15000); return; } void FUN_00441a34(void) { short sVar1; short in_stack_00000004; short in_stack_00000008; short in_stack_0000000c; sVar1 = 0; do { if ((&DAT_004699e2)[in_stack_0000000c * 6 + sVar1 * 2] != -1) { FUN_0041395c((&DAT_00469948)[(short)(&DAT_004699e2)[in_stack_0000000c * 6 + sVar1 * 2]], CONCAT22((short)(&DAT_004699e4)[in_stack_0000000c * 6 + sVar1 * 2] >> 0xf, (&DAT_00462e8c) [(short)(&DAT_004699e4)[in_stack_0000000c * 6 + sVar1 * 2]] + in_stack_00000004), CONCAT22((short)((uint)(sVar1 * 0x1f) >> 0x10), (short)(sVar1 * 0x1f) + in_stack_00000008),0x14); } sVar1 = sVar1 + 1; } while (sVar1 < 3); return; } void FUN_00441ab9(void) { short sVar1; sVar1 = 0; do { if ((&DAT_004699e2)[sVar1 * 6] != -1) { FUN_00441a34(); } sVar1 = sVar1 + 1; } while (sVar1 < 10); return; } short FUN_00441b27(void) { short sVar1; short sVar2; short sVar3; sVar2 = 0; sVar3 = 0; do { sVar1 = 0; do { if ((&DAT_004699e4)[sVar3 * 6 + sVar1 * 2] == -1) break; sVar2 = sVar2 + *(short *)(&DAT_00462c68 + (short)(&DAT_004699e4)[sVar3 * 6 + sVar1 * 2] * 0x12) * (5 - sVar3); sVar1 = sVar1 + 1; } while (sVar1 < 3); sVar3 = sVar3 + 1; if (4 < sVar3) { return sVar2; } } while( true ); } short FUN_00441b8a(void) { short sVar1; short sVar2; short sVar3; sVar2 = 0; sVar3 = 5; do { sVar1 = 0; do { if ((&DAT_004699e4)[sVar3 * 6 + sVar1 * 2] == -1) break; sVar2 = sVar2 + *(short *)(&DAT_00462c68 + (short)(&DAT_004699e4)[sVar3 * 6 + sVar1 * 2] * 0x12) * (sVar3 + -4) ; sVar1 = sVar1 + 1; } while (sVar1 < 3); sVar3 = sVar3 + 1; if (9 < sVar3) { return sVar2; } } while( true ); } void FUN_00441bea(void) { FUN_00413b08(); DAT_00469926 = DAT_00462c60; if (DAT_00462c62 == 0) { FUN_004129d4(DAT_00469938,1); FUN_00412fe4(DAT_00469938); FUN_00412e18(DAT_00469938); DAT_00462c60 = 3; return; } if (DAT_00462c62 != 5) { if (DAT_00462c62 != 10) { return; } FUN_004129d4(DAT_00469938,3); FUN_00412fe4(DAT_00469938); FUN_00412e18(DAT_00469938); DAT_00462c60 = 1; } return; } undefined4 FUN_00441c86(void) { short sVar1; short sVar2; uint uVar3; int iVar4; undefined2 extraout_var; sVar1 = FUN_00441b27(); sVar2 = FUN_00441b8a(); if (sVar1 < sVar2) { uVar3 = (sVar1 * 100) / (int)sVar2 + 1; iVar4 = (int)uVar3 >> 1; if (iVar4 < 0) { iVar4 = iVar4 + (uint)((uVar3 & 1) != 0); } DAT_0046992a = (undefined2)iVar4; } else { uVar3 = (sVar2 * 100) / (int)sVar1 + 1; iVar4 = (int)uVar3 >> 1; if (iVar4 < 0) { iVar4 = iVar4 + (uint)((uVar3 & 1) != 0); } DAT_0046992a = (undefined2)iVar4; } if (sVar2 < sVar1) { if (DAT_00462c62 != 0) { FUN_00441442(); } return 0; } if (sVar1 < sVar2) { if (DAT_00462c62 != 10) { FUN_004413d3(); } return 0; } if (sVar1 == sVar2) { DAT_0046992a = 0x19; FUN_00441bea(); return CONCAT22(extraout_var,1); } return 0; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void __cdecl Puzzles::SetParametersForBalance(void) { undefined4 uVar1; undefined4 in_ECX; short sVar2; short sVar3; undefined4 uStack_8; DAT_00462c5c = 0; _DAT_00462c66 = 0; DAT_00462c60 = 6; DAT_00462c62 = 10; DAT_00469978 = FUN_00412ac4(0x2eed); DAT_0046997c = FUN_00412ac4(0x2eee); DAT_00469980 = FUN_00412ac4(0x2eef); DAT_00469984 = FUN_00412ac4(0x2ef0); DAT_00469988 = FUN_00412ac4(0x2ef1); DAT_0046998c = FUN_00412ac4(0x2ef2); sVar3 = 0; do { sVar2 = 0; do { (&DAT_004699e2)[sVar3 * 6 + sVar2 * 2] = 0xffff; (&DAT_004699e4)[sVar3 * 6 + sVar2 * 2] = 0xffff; sVar2 = sVar2 + 1; } while (sVar2 < 3); sVar3 = sVar3 + 1; } while (sVar3 < 10); sVar3 = 0; do { (&DAT_004699bc)[sVar3] = 0; sVar3 = sVar3 + 1; } while (sVar3 < 5); if (43 < currentPuzzle) { currentPuzzle = 1; } switch(currentPuzzle) { case 1: _DAT_0046977a = 3; _DAT_0046977c = 1; DAT_004697a8 = 0x2ee1; DAT_0046978a = 0x2ee1; DAT_0046978c = 0x2ee2; DAT_0046978e = 0x2ee3; DAT_00469790 = 0xffff; DAT_004699d6 = 0; DAT_004699d8 = 0; _DAT_004699da = 1; _DAT_004699dc = 0; _DAT_004699de = 0; _DAT_004699e0 = 0; DAT_00469a38 = 2; break; case 2: _DAT_0046977a = 3; _DAT_0046977c = 1; DAT_004697a8 = 0x2ee1; DAT_0046978a = 0x2ee1; DAT_0046978c = 0x2ee2; DAT_0046978e = 0x2ee3; DAT_00469790 = 0xffff; DAT_004699d6 = 0; DAT_004699d8 = 0; _DAT_004699da = 0; _DAT_004699dc = 0; _DAT_004699de = 1; _DAT_004699e0 = 0; DAT_00469a44 = 4; break; case 3: _DAT_0046977a = 3; _DAT_0046977c = 1; DAT_004697a8 = 0x2ee1; DAT_0046978a = 0x2ee1; DAT_0046978c = 0x2ee2; DAT_0046978e = 0x2ee3; DAT_00469790 = 0xffff; DAT_004699d6 = 0; DAT_004699d8 = 0; _DAT_004699da = 0; _DAT_004699dc = 0; _DAT_004699de = 0; _DAT_004699e0 = 1; DAT_00469a20 = 5; break; case 4: _DAT_0046977a = 3; _DAT_0046977c = 1; DAT_004697a8 = 0x2ee6; DAT_0046978a = 0x2ee4; DAT_0046978c = 0x2ee5; DAT_0046978e = 0x2ee6; DAT_00469790 = 0xffff; DAT_004699d6 = 0; DAT_004699d8 = 0; _DAT_004699da = 1; _DAT_004699dc = 0; _DAT_004699de = 0; _DAT_004699e0 = 0; DAT_00469a38 = 4; break; case 5: _DAT_0046977a = 3; _DAT_0046977c = 1; DAT_004697a8 = 0x2ee4; DAT_0046978a = 0x2ee7; DAT_0046978c = 0x2ee8; DAT_0046978e = 0x2ee9; DAT_00469790 = 0xffff; DAT_004699d6 = 0; DAT_004699d8 = 0; _DAT_004699da = 0; _DAT_004699dc = 1; _DAT_004699de = 0; _DAT_004699e0 = 0; DAT_00469a44 = 1; break; case 6: _DAT_0046977a = 3; _DAT_0046977c = 1; DAT_004697a8 = 0x2ee4; DAT_0046978a = 0x2ee7; DAT_0046978c = 0x2ee8; DAT_0046978e = 0x2ee9; DAT_00469790 = 0xffff; DAT_004699d6 = 0; DAT_004699d8 = 0; _DAT_004699da = 0; _DAT_004699dc = 0; _DAT_004699de = 1; _DAT_004699e0 = 0; DAT_00469a2c = 5; break; case 7: _DAT_0046977a = 6; _DAT_0046977c = 1; DAT_004697a8 = 0x2ee3; DAT_0046978a = 0x2eea; DAT_0046978c = 0x2eeb; DAT_0046978e = 0x2eec; DAT_00469790 = 0x2eed; DAT_00469792 = 0x2eee; DAT_00469794 = 0x2eef; _DAT_00469796 = 0xffff; DAT_004699d6 = 2; DAT_004699d8 = 0; _DAT_004699da = 0; _DAT_004699dc = 0; _DAT_004699de = 0; _DAT_004699e0 = 0; DAT_00469a20 = 5; break; case 8: _DAT_0046977a = 6; _DAT_0046977c = 1; DAT_004697a8 = 0x2ee3; DAT_0046978a = 0x2eea; DAT_0046978c = 0x2eeb; DAT_0046978e = 0x2eec; DAT_00469790 = 0x2eed; DAT_00469792 = 0x2eee; DAT_00469794 = 0x2eef; _DAT_00469796 = 0xffff; DAT_004699d6 = 0; DAT_004699d8 = 2; _DAT_004699da = 0; _DAT_004699dc = 0; _DAT_004699de = 0; _DAT_004699e0 = 0; DAT_00469a20 = 5; break; case 9: _DAT_0046977a = 6; _DAT_0046977c = 1; DAT_004697a8 = 0x2ee5; DAT_0046978a = 0x2ef3; DAT_0046978c = 0x2ef4; DAT_0046978e = 0x2ef5; DAT_00469790 = 0x2ef6; DAT_00469792 = 0x2ef7; DAT_00469794 = 0x2ef8; _DAT_00469796 = 0xffff; DAT_004699d6 = 0; DAT_004699d8 = 0; _DAT_004699da = 0; _DAT_004699dc = 0; _DAT_004699de = 2; _DAT_004699e0 = 0; DAT_00469a38 = 5; break; case 10: _DAT_0046977a = 3; _DAT_0046977c = 1; DAT_004697a8 = 0x2ee7; DAT_0046978a = 0x2ef0; DAT_0046978c = 0x2ef1; DAT_0046978e = 0x2ef2; DAT_00469790 = 0xffff; DAT_004699d6 = 0; DAT_004699d8 = 0; _DAT_004699da = 0; _DAT_004699dc = 0; _DAT_004699de = 1; _DAT_004699e0 = 0; DAT_00469a38 = 3; DAT_00469a3c = 0; break; case 0xb: _DAT_0046977a = 3; _DAT_0046977c = 1; DAT_004697a8 = 0x2ee7; DAT_0046978a = 0x2ef0; DAT_0046978c = 0x2ef1; DAT_0046978e = 0x2ef2; DAT_00469790 = 0xffff; DAT_004699d6 = 0; DAT_004699d8 = 0; _DAT_004699da = 0; _DAT_004699dc = 0; _DAT_004699de = 0; _DAT_004699e0 = 1; DAT_00469a50 = 4; DAT_00469a54 = 0; break; case 0xc: _DAT_0046977a = 3; _DAT_0046977c = 1; DAT_004697a8 = 0x2ee7; DAT_0046978a = 0x2ef0; DAT_0046978c = 0x2ef1; DAT_0046978e = 0x2ef2; DAT_00469790 = 0xffff; DAT_004699d6 = 3; DAT_004699d8 = 0; _DAT_004699da = 0; _DAT_004699dc = 0; _DAT_004699de = 0; _DAT_004699e0 = 0; DAT_00469a2c = 4; break; case 0xd: _DAT_0046977a = 3; _DAT_0046977c = 1; DAT_004697a8 = 0x2ee7; DAT_0046978a = 0x2ef0; DAT_0046978c = 0x2ef1; DAT_0046978e = 0x2ef2; DAT_00469790 = 0xffff; DAT_004699d6 = 0; DAT_004699d8 = 0; _DAT_004699da = 0; _DAT_004699dc = 0; _DAT_004699de = 1; _DAT_004699e0 = 0; DAT_00469a20 = 5; DAT_00469a24 = 5; break; case 0xe: _DAT_0046977a = 3; _DAT_0046977c = 1; DAT_004697a8 = 0x2ee7; DAT_0046978a = 0x2ef0; DAT_0046978c = 0x2ef1; DAT_0046978e = 0x2ef2; DAT_00469790 = 0xffff; DAT_004699d6 = 0; DAT_004699d8 = 2; _DAT_004699da = 0; _DAT_004699dc = 0; _DAT_004699de = 0; _DAT_004699e0 = 0; DAT_00469a44 = 1; DAT_00469a48 = 1; DAT_00469a4c = 0; break; case 0xf: _DAT_0046977a = 3; _DAT_0046977c = 1; DAT_004697a8 = 0x2ee7; DAT_0046978a = 0x2ef0; DAT_0046978c = 0x2ef1; DAT_0046978e = 0x2ef2; DAT_00469790 = 0xffff; DAT_004699d6 = 0; DAT_004699d8 = 0; _DAT_004699da = 0; _DAT_004699dc = 0; _DAT_004699de = 1; _DAT_004699e0 = 0; DAT_00469a38 = 2; DAT_00469a3c = 0; DAT_00469a40 = 0; break; case 0x10: _DAT_0046977a = 3; _DAT_0046977c = 1; DAT_004697a8 = 0x2ee7; DAT_0046978a = 0x2ef0; DAT_0046978c = 0x2ef1; DAT_0046978e = 0x2ef2; DAT_00469790 = 0xffff; DAT_004699d6 = 0; DAT_004699d8 = 0; _DAT_004699da = 1; _DAT_004699dc = 1; _DAT_004699de = 0; _DAT_004699e0 = 0; DAT_00469a50 = 2; break; case 0x11: _DAT_0046977a = 3; _DAT_0046977c = 1; DAT_004697a8 = 0x2ee7; DAT_0046978a = 0x2ef0; DAT_0046978c = 0x2ef1; DAT_0046978e = 0x2ef2; DAT_00469790 = 0xffff; DAT_004699d6 = 2; DAT_004699d8 = 0; _DAT_004699da = 2; _DAT_004699dc = 0; _DAT_004699de = 0; _DAT_004699e0 = 0; DAT_00469a20 = 5; break; case 0x12: _DAT_0046977a = 3; _DAT_0046977c = 1; DAT_004697a8 = 0x2ee7; DAT_0046978a = 0x2ef0; DAT_0046978c = 0x2ef1; DAT_0046978e = 0x2ef2; DAT_00469790 = 0xffff; DAT_004699d6 = 0; DAT_004699d8 = 1; _DAT_004699da = 1; _DAT_004699dc = 0; _DAT_004699de = 0; _DAT_004699e0 = 0; DAT_00469a44 = 3; break; case 0x13: _DAT_0046977a = 3; _DAT_0046977c = 1; DAT_004697a8 = 0x2ee7; DAT_0046978a = 0x2ef0; DAT_0046978c = 0x2ef1; DAT_0046978e = 0x2ef2; DAT_00469790 = 0xffff; DAT_004699d6 = 0; DAT_004699d8 = 1; _DAT_004699da = 0; _DAT_004699dc = 1; _DAT_004699de = 0; _DAT_004699e0 = 0; DAT_00469a2c = 4; DAT_00469a44 = 1; break; case 0x14: _DAT_0046977a = 3; _DAT_0046977c = 1; DAT_004697a8 = 0x2ee7; DAT_0046978a = 0x2ef0; DAT_0046978c = 0x2ef1; DAT_0046978e = 0x2ef2; DAT_00469790 = 0xffff; DAT_004699d6 = 0; DAT_004699d8 = 0; _DAT_004699da = 0; _DAT_004699dc = 1; _DAT_004699de = 1; _DAT_004699e0 = 0; DAT_00469a2c = 5; DAT_00469a44 = 4; break; case 0x15: _DAT_0046977a = 3; _DAT_0046977c = 1; DAT_004697a8 = 0x2ee7; DAT_0046978a = 0x2ef0; DAT_0046978c = 0x2ef1; DAT_0046978e = 0x2ef2; DAT_00469790 = 0xffff; DAT_004699d6 = 0; DAT_004699d8 = 1; _DAT_004699da = 1; _DAT_004699dc = 0; _DAT_004699de = 0; _DAT_004699e0 = 0; DAT_00469a20 = 0; DAT_00469a44 = 3; break; case 0x16: _DAT_0046977a = 3; _DAT_0046977c = 1; DAT_004697a8 = 0x2ee7; DAT_0046978a = 0x2ef0; DAT_0046978c = 0x2ef1; DAT_0046978e = 0x2ef2; DAT_00469790 = 0xffff; DAT_004699d6 = 0; DAT_004699d8 = 1; _DAT_004699da = 0; _DAT_004699dc = 1; _DAT_004699de = 0; _DAT_004699e0 = 0; DAT_00469a20 = 4; DAT_00469a38 = 2; break; case 0x17: _DAT_0046977a = 3; _DAT_0046977c = 1; DAT_004697a8 = 0x2ee7; DAT_0046978a = 0x2ef0; DAT_0046978c = 0x2ef1; DAT_0046978e = 0x2ef2; DAT_00469790 = 0xffff; DAT_004699d6 = 0; DAT_004699d8 = 0; _DAT_004699da = 0; _DAT_004699dc = 1; _DAT_004699de = 1; _DAT_004699e0 = 0; DAT_00469a20 = 0; DAT_00469a38 = 5; break; case 0x18: _DAT_0046977a = 3; _DAT_0046977c = 1; DAT_004697a8 = 0x2ee7; DAT_0046978a = 0x2ef0; DAT_0046978c = 0x2ef1; DAT_0046978e = 0x2ef2; DAT_00469790 = 0xffff; DAT_004699d6 = 0; DAT_004699d8 = 0; _DAT_004699da = 1; _DAT_004699dc = 0; _DAT_004699de = 1; _DAT_004699e0 = 0; DAT_00469a38 = 5; break; case 0x19: _DAT_0046977a = 3; _DAT_0046977c = 1; DAT_004697a8 = 0x2ee7; DAT_0046978a = 0x2ef0; DAT_0046978c = 0x2ef1; DAT_0046978e = 0x2ef2; DAT_00469790 = 0xffff; DAT_004699d6 = 0; DAT_004699d8 = 0; _DAT_004699da = 0; _DAT_004699dc = 1; _DAT_004699de = 1; _DAT_004699e0 = 0; DAT_00469a38 = 0; DAT_00469a50 = 4; break; case 0x1a: _DAT_0046977a = 3; _DAT_0046977c = 1; DAT_004697a8 = 0x2ee7; DAT_0046978a = 0x2ef0; DAT_0046978c = 0x2ef1; DAT_0046978e = 0x2ef2; DAT_00469790 = 0xffff; DAT_004699d6 = 0; DAT_004699d8 = 1; _DAT_004699da = 0; _DAT_004699dc = 0; _DAT_004699de = 1; _DAT_004699e0 = 0; DAT_00469a20 = 0; DAT_00469a44 = 2; break; case 0x1b: _DAT_0046977a = 3; _DAT_0046977c = 1; DAT_004697a8 = 0x2ee7; DAT_0046978a = 0x2ef0; DAT_0046978c = 0x2ef1; DAT_0046978e = 0x2ef2; DAT_00469790 = 0xffff; DAT_004699d6 = 1; DAT_004699d8 = 0; _DAT_004699da = 0; _DAT_004699dc = 0; _DAT_004699de = 0; _DAT_004699e0 = 1; DAT_00469a20 = 0; DAT_00469a2c = 1; DAT_00469a38 = 2; break; case 0x1c: _DAT_0046977a = 3; _DAT_0046977c = 1; DAT_004697a8 = 0x2ee7; DAT_0046978a = 0x2ef0; DAT_0046978c = 0x2ef1; DAT_0046978e = 0x2ef2; DAT_00469790 = 0xffff; DAT_004699d6 = 0; DAT_004699d8 = 0; _DAT_004699da = 1; _DAT_004699dc = 0; _DAT_004699de = 1; _DAT_004699e0 = 0; DAT_00469a20 = 4; DAT_00469a38 = 2; DAT_00469a44 = 2; break; case 0x1d: _DAT_0046977a = 3; _DAT_0046977c = 1; DAT_004697a8 = 0x2ee7; DAT_0046978a = 0x2ef0; DAT_0046978c = 0x2ef1; DAT_0046978e = 0x2ef2; DAT_00469790 = 0xffff; DAT_004699d6 = 0; DAT_004699d8 = 0; _DAT_004699da = 1; _DAT_004699dc = 0; _DAT_004699de = 0; _DAT_004699e0 = 1; DAT_00469a20 = 0; DAT_00469a44 = 3; DAT_00469a50 = 4; break; case 0x1e: _DAT_0046977a = 3; _DAT_0046977c = 1; DAT_004697a8 = 0x2ee7; DAT_0046978a = 0x2ef0; DAT_0046978c = 0x2ef1; DAT_0046978e = 0x2ef2; DAT_00469790 = 0xffff; DAT_004699d6 = 0; DAT_004699d8 = 1; _DAT_004699da = 1; _DAT_004699dc = 1; _DAT_004699de = 0; _DAT_004699e0 = 0; DAT_00469a38 = 4; DAT_00469a44 = 3; break; case 0x1f: _DAT_0046977a = 3; _DAT_0046977c = 1; DAT_004697a8 = 0x2ee7; DAT_0046978a = 0x2ef0; DAT_0046978c = 0x2ef1; DAT_0046978e = 0x2ef2; DAT_00469790 = 0xffff; DAT_004699d6 = 2; DAT_004699d8 = 0; _DAT_004699da = 0; _DAT_004699dc = 0; _DAT_004699de = 0; _DAT_004699e0 = 1; DAT_00469a20 = 1; DAT_00469a44 = 3; DAT_00469a50 = 2; break; case 0x20: _DAT_0046977a = 3; _DAT_0046977c = 1; DAT_004697a8 = 0x2ee7; DAT_0046978a = 0x2ef0; DAT_0046978c = 0x2ef1; DAT_0046978e = 0x2ef2; DAT_00469790 = 0xffff; DAT_004699d6 = 0; DAT_004699d8 = 1; _DAT_004699da = 1; _DAT_004699dc = 1; _DAT_004699de = 0; _DAT_004699e0 = 1; DAT_00469a20 = 0; DAT_00469a38 = 1; break; case 0x21: _DAT_0046977a = 3; _DAT_0046977c = 1; DAT_004697a8 = 0x2ee7; DAT_0046978a = 0x2ef0; DAT_0046978c = 0x2ef1; DAT_0046978e = 0x2ef2; DAT_00469790 = 0xffff; DAT_004699d6 = 0; DAT_004699d8 = 0; _DAT_004699da = 1; _DAT_004699dc = 0; _DAT_004699de = 1; _DAT_004699e0 = 1; DAT_00469a20 = 2; DAT_00469a38 = 5; DAT_00469a44 = 3; break; case 0x22: _DAT_0046977a = 3; _DAT_0046977c = 1; DAT_004697a8 = 0x2ee7; DAT_0046978a = 0x2ef0; DAT_0046978c = 0x2ef1; DAT_0046978e = 0x2ef2; DAT_00469790 = 0xffff; DAT_004699d6 = 0; DAT_004699d8 = 1; _DAT_004699da = 0; _DAT_004699dc = 1; _DAT_004699de = 2; _DAT_004699e0 = 0; DAT_00469a20 = 2; DAT_00469a2c = 3; DAT_00469a50 = 5; break; case 0x23: _DAT_0046977a = 6; _DAT_0046977c = 1; DAT_004697a8 = 0x2ee5; DAT_0046978a = 0x2ef3; DAT_0046978c = 0x2ef4; DAT_0046978e = 0x2ef5; DAT_00469790 = 0x2ef6; DAT_00469792 = 0x2ef7; DAT_00469794 = 0x2ef8; _DAT_00469796 = 0xffff; DAT_004699d6 = 2; DAT_004699d8 = 0; _DAT_004699da = 1; _DAT_004699dc = 0; _DAT_004699de = 1; _DAT_004699e0 = 0; DAT_00469a20 = 0; DAT_00469a2c = 3; DAT_00469a38 = 4; DAT_00469a44 = 3; break; case 0x24: _DAT_0046977a = 3; _DAT_0046977c = 1; DAT_004697a8 = 0x2ee8; DAT_0046978a = 0x2ef9; DAT_0046978c = 0x2efa; DAT_0046978e = 0x2efb; DAT_00469790 = 0xffff; DAT_004699d6 = 0; DAT_004699d8 = 2; _DAT_004699da = 0; _DAT_004699dc = 1; _DAT_004699de = 1; _DAT_004699e0 = 0; DAT_00469a2c = 5; DAT_00469a38 = 0; DAT_00469a44 = 0; DAT_00469a50 = 4; break; case 0x25: _DAT_0046977a = 3; _DAT_0046977c = 1; DAT_004697a8 = 0x2ee8; DAT_0046978a = 0x2ef9; DAT_0046978c = 0x2efa; DAT_0046978e = 0x2efb; DAT_00469790 = 0xffff; DAT_004699d6 = 0; DAT_004699d8 = 0; _DAT_004699da = 1; _DAT_004699dc = 0; _DAT_004699de = 0; _DAT_004699e0 = 0; DAT_00469a20 = 0; DAT_00469a2c = 0; DAT_00469a38 = 0; DAT_00469a44 = 0; DAT_00469a50 = 0; break; case 0x26: _DAT_0046977a = 3; _DAT_0046977c = 1; DAT_004697a8 = 0x2ee8; DAT_0046978a = 0x2ef9; DAT_0046978c = 0x2efa; DAT_0046978e = 0x2efb; DAT_00469790 = 0xffff; DAT_004699d6 = 0; DAT_004699d8 = 0; _DAT_004699da = 0; _DAT_004699dc = 0; _DAT_004699de = 0; _DAT_004699e0 = 3; DAT_00469a20 = 5; DAT_00469a2c = 5; DAT_00469a38 = 5; DAT_00469a44 = 5; DAT_00469a50 = 5; break; case 0x27: _DAT_0046977a = 3; _DAT_0046977c = 1; DAT_004697a8 = 0x2ee8; DAT_0046978a = 0x2ef9; DAT_0046978c = 0x2efa; DAT_0046978e = 0x2efb; DAT_00469790 = 0xffff; DAT_004699d6 = 0; DAT_004699d8 = 1; _DAT_004699da = 1; _DAT_004699dc = 0; _DAT_004699de = 0; _DAT_004699e0 = 2; DAT_00469a20 = 4; DAT_00469a2c = 3; DAT_00469a38 = 2; DAT_00469a44 = 1; DAT_00469a50 = 0; break; case 0x28: _DAT_0046977a = 3; _DAT_0046977c = 1; DAT_004697a8 = 0x2ee8; DAT_0046978a = 0x2ef9; DAT_0046978c = 0x2efa; DAT_0046978e = 0x2efb; DAT_00469790 = 0xffff; DAT_004699d6 = 0; DAT_004699d8 = 0; _DAT_004699da = 1; _DAT_004699dc = 1; _DAT_004699de = 1; _DAT_004699e0 = 1; DAT_00469a20 = 0; DAT_00469a2c = 1; DAT_00469a38 = 2; DAT_00469a44 = 3; DAT_00469a50 = 4; break; case 0x29: _DAT_0046977a = 3; _DAT_0046977c = 1; DAT_004697a8 = 0x2ee8; DAT_0046978a = 0x2ef9; DAT_0046978c = 0x2efa; DAT_0046978e = 0x2efb; DAT_00469790 = 0xffff; DAT_004699d6 = 1; DAT_004699d8 = 0; _DAT_004699da = 1; _DAT_004699dc = 1; _DAT_004699de = 0; _DAT_004699e0 = 1; DAT_00469a20 = 5; DAT_00469a2c = 4; DAT_00469a38 = 3; DAT_00469a44 = 2; DAT_00469a50 = 1; break; case 0x2a: _DAT_0046977a = 3; _DAT_0046977c = 1; DAT_004697a8 = 0x2ee8; DAT_0046978a = 0x2ef9; DAT_0046978c = 0x2efa; DAT_0046978e = 0x2efb; DAT_00469790 = 0xffff; DAT_004699d6 = 0; DAT_004699d8 = 0; _DAT_004699da = 0; _DAT_004699dc = 1; _DAT_004699de = 1; _DAT_004699e0 = 1; DAT_00469a20 = 2; DAT_00469a2c = 2; DAT_00469a38 = 2; DAT_00469a44 = 2; DAT_00469a50 = 2; break; case 0x2b: _DAT_0046977a = 3; _DAT_0046977c = 1; DAT_004697a8 = 0x2ee2; DAT_0046978a = 0x2efc; DAT_0046978c = 0x2efd; DAT_0046978e = 0x2efe; DAT_00469790 = 0xffff; DAT_004699d6 = 0; DAT_004699d8 = 0; _DAT_004699da = 0; _DAT_004699dc = 0; _DAT_004699de = 1; _DAT_004699e0 = 1; DAT_00469a20 = 3; DAT_00469a24 = 3; DAT_00469a28 = 1; DAT_00469a2c = 3; DAT_00469a30 = 3; DAT_00469a34 = 1; DAT_00469a38 = 3; DAT_00469a3c = 3; DAT_00469a40 = 1; } DAT_0046992c = 0; sVar3 = 0; uStack_8 = in_ECX; do { sVar2 = 0; do { if ((&DAT_004699e4)[sVar3 * 6 + sVar2 * 2] != -1) { switch((&DAT_004699e4)[sVar3 * 6 + sVar2 * 2]) { case 0: uStack_8 = 0x2ee10000; break; case 1: uStack_8 = 0x2ee20000; break; case 2: uStack_8 = 0x2ee30000; break; case 3: uStack_8 = 0x2ee40000; break; case 4: uStack_8 = 0x2ee50000; break; case 5: uStack_8 = 0x2ee60000; } (&DAT_004699e2)[sVar3 * 6 + sVar2 * 2] = DAT_0046992c; DAT_0046992c = DAT_0046992c + 1; uVar1 = FUN_00412ac4(uStack_8._2_2_); (&DAT_00469948)[(short)(&DAT_004699e2)[sVar3 * 6 + sVar2 * 2]] = uVar1; FUN_00412e70(); } sVar2 = sVar2 + 1; } while (sVar2 < 3); sVar3 = sVar3 + 1; } while (sVar3 < 10); DAT_0046977e = 12000; DAT_00469780 = 12000; DAT_00469770 = Resource::Load(12000,(LPCSTR)((int)&_nulTEXT + 1)); return; } void FUN_0044380a(void) { FUN_00441942(); FUN_0043fef9(DAT_00462c5c); return; } void FUN_00443878(void) { undefined4 uVar1; undefined2 *puVar2; short in_stack_00000004; undefined4 uVar3; if (in_stack_00000004 == 0) { PoolFree(DAT_00469a5c); } uVar3 = 0x10; puVar2 = PoolAlloc(0x10); DAT_00469a5c = puVar2; *puVar2 = 0; puVar2[1] = 5; puVar2[3] = 0x17a; puVar2[2] = 0x1ff; uVar1 = DAT_00469934; *(undefined4 *)(puVar2 + 6) = DAT_00469934; puVar2[5] = 0; FUN_0043b9d2(puVar2,uVar1,uVar3,DAT_00469a5c,1); return; } void FUN_004438d3(void) { FUN_0043b9d2(); return; } void FUN_004438e0(void) { FUN_00443878(); return; } void FUN_004438e9(undefined4 param_1,undefined4 param_2,uint param_3,short param_4) { undefined2 *puVar1; short sVar2; bool bVar3; undefined4 uVar4; short sVar5; int unaff_EDI; int iVar6; bVar3 = false; sVar5 = 2; do { sVar2 = (&DAT_004699e2)[param_4 * 6 + sVar5 * 2]; if (sVar2 != -1) { puVar1 = &DAT_004699e4 + param_4 * 6; iVar6 = CONCAT22((short)((uint)unaff_EDI >> 0x10),puVar1[sVar5 * 2]); if (bVar3) { uVar4 = FUN_00412d0c((int)sVar2,puVar1,param_3,(&DAT_00469948)[sVar2]); (&DAT_00469948)[sVar2] = uVar4; unaff_EDI = iVar6 + 0x2f44; iVar6 = unaff_EDI; uVar4 = FUN_00412ac4((ushort)unaff_EDI); (&DAT_00469948)[sVar2] = uVar4; param_3 = (&DAT_00469948)[sVar2]; FUN_00412e70((int)sVar2,(int)sVar2,iVar6); } else { bVar3 = true; uVar4 = FUN_00412d0c((int)sVar2,puVar1,param_3,(&DAT_00469948)[sVar2]); (&DAT_00469948)[sVar2] = uVar4; unaff_EDI = iVar6 + 0x2ee7; iVar6 = unaff_EDI; uVar4 = FUN_00412ac4((ushort)unaff_EDI); (&DAT_00469948)[sVar2] = uVar4; param_3 = (&DAT_00469948)[sVar2]; FUN_00412e70((int)sVar2,(int)sVar2,iVar6); } } sVar5 = sVar5 + -1; } while (-1 < sVar5); return; } void FUN_004439cf(void) { FUN_00441ab9(); return; } void FUN_004439dc(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined2 param_4, undefined2 param_5) { undefined2 uVar1; uVar1 = (undefined2)((uint)param_1 >> 0x10); FUN_0041395c(DAT_00469a90,CONCAT22(uVar1,param_4),CONCAT22(uVar1,param_5),5); return; } void FUN_004439fb(void) { int iVar1; undefined2 uVar2; undefined2 extraout_var; short sVar3; short sVar4; undefined2 *in_stack_00000004; sVar3 = 0; do { iVar1 = (int)sVar3; BigThing6Eh::processNodes_((&DAT_00469a90)[iVar1]); sVar3 = sVar3 + 1; } while (sVar3 < 5); if (*(int *)(in_stack_00000004 + 10) < 1) { sVar3 = 3; sVar4 = 4; } else { sVar3 = 1; sVar4 = 2; } uVar2 = (undefined2)((uint)iVar1 >> 0x10); FUN_0041395c((&DAT_00469a90)[sVar3],CONCAT22(uVar2,*in_stack_00000004), CONCAT22(uVar2,in_stack_00000004[2]),0); FUN_00412e18((&DAT_00469a90)[sVar3]); FUN_0041395c((&DAT_00469a90)[sVar4],CONCAT22(extraout_var,*in_stack_00000004), CONCAT22(extraout_var,in_stack_00000004[2] + in_stack_00000004[6] + -0x15),0); FUN_00412e18((&DAT_00469a90)[sVar4]); if (0 < *(int *)(in_stack_00000004 + 10)) { *(int *)(in_stack_00000004 + 0x10) = (int)(short)((short)(((int)(short)(in_stack_00000004[6] + -0x3b) * *(int *)(in_stack_00000004 + 8)) / *(int *)(in_stack_00000004 + 10)) + in_stack_00000004[2] + 0x14); FUN_004439dc(); FUN_00412e18(DAT_00469a90); } return; } void FUN_00443ae0(void) { int in_stack_00000004; short in_stack_00000008; if (in_stack_00000008 < 0) { in_stack_00000008 = 0; } else if (*(int *)(in_stack_00000004 + 0x14) < (int)in_stack_00000008) { in_stack_00000008 = *(short *)(in_stack_00000004 + 0x14); } if ((int)in_stack_00000008 != *(int *)(in_stack_00000004 + 0x10)) { *(int *)(in_stack_00000004 + 0x10) = (int)in_stack_00000008; FUN_004439fb(); } return; } void FUN_00443b15(void) { int in_stack_00000004; short in_stack_00000008; if (in_stack_00000008 < 0) { in_stack_00000008 = 0; } if ((int)in_stack_00000008 != *(int *)(in_stack_00000004 + 0x14)) { *(int *)(in_stack_00000004 + 0x14) = (int)in_stack_00000008; if ((int)in_stack_00000008 < *(int *)(in_stack_00000004 + 0x10)) { *(int *)(in_stack_00000004 + 0x10) = (int)in_stack_00000008; } FUN_004439fb(); } return; } // WARNING: Removing unreachable block (ram,0x00443c62) // WARNING: Removing unreachable block (ram,0x00443c6c) // WARNING: Removing unreachable block (ram,0x00443c7d) // WARNING: Removing unreachable block (ram,0x00443c9d) // WARNING: Removing unreachable block (ram,0x00443ca4) // WARNING: Removing unreachable block (ram,0x00443cb8) // WARNING: Removing unreachable block (ram,0x00443cc7) // WARNING: Removing unreachable block (ram,0x00443ccd) void FUN_00443b4a(undefined param_1,undefined param_2,undefined param_3,int param_4, undefined param_5,undefined param_6,undefined param_7,undefined param_8, undefined param_9,undefined param_10,byte param_11) { int iVar1; uint uVar2; bool bVar3; short local_12; short local_c; FUN_0044fbfd(); if (0 < *(int *)(param_4 + 0x14)) { bVar3 = (param_11 & 0x40) != 0; if (bVar3) { iVar1 = FUN_0044ca04(); *(int *)(param_4 + 0x1c) = iVar1 + 0x1b; } uVar2 = FUN_0044ca04(); if ((*(uint *)(param_4 + 0x1c) < uVar2) || (bVar3)) { if ((int)local_12 < *(short *)(param_4 + 4) + 0x13) { FUN_00443ae0(); } else if ((int)*(short *)(param_4 + 4) + (int)*(short *)(param_4 + 0xc) + -0x13 < (int)local_12 ) { FUN_00443ae0(); } else if ((int)local_12 < *(int *)(param_4 + 0x20)) { FUN_00443ae0(); } else if ((int)local_12 < *(int *)(param_4 + 0x20) + 0x15) { do { } while ((param_11 & 0x80) != 0); *(undefined4 *)(param_4 + 0x10) = 0xffffffff; *(int *)(param_4 + 0x20) = (int)local_c; FUN_00443ae0(); } else { FUN_00443ae0(); } iVar1 = FUN_0044ca04(); *(int *)(param_4 + 0x1c) = iVar1 + 0x1b; } } return; } void FUN_00443d53(undefined4 param_1,int param_2,uint param_3) { undefined4 uVar1; short sVar2; sVar2 = 0; do { uVar1 = FUN_00412ac4(sVar2 + 0x1774); (&DAT_00469a90)[sVar2] = uVar1; sVar2 = sVar2 + 1; } while (sVar2 < 5); return; } void FUN_00443d76(undefined4 param_1,int param_2,uint param_3) { uint uVar1; undefined4 uVar2; short sVar3; sVar3 = 0; do { uVar1 = (&DAT_00469a90)[sVar3]; uVar2 = FUN_00412d0c((int)sVar3,param_2,param_3,(&DAT_00469a90)[sVar3]); param_3 = uVar1; param_2 = (int)sVar3; (&DAT_00469a90)[param_2] = uVar2; sVar3 = sVar3 + 1; } while (sVar3 < 5); return; } bool FUN_00443d9c(void) { return DAT_00469b26 == DAT_00469b28; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_00443db0(void) { short sVar1; undefined2 in_stack_00000004; if (_DAT_00469b24 == 0) { sVar1 = (short)((DAT_00469b26 + 1) % 100); if (sVar1 != DAT_00469b28) { *(undefined2 *)(&DAT_00469b2a + DAT_00469b26 * 6) = in_stack_00000004; DAT_00469b26 = sVar1; } _DAT_00469b24 = 0; } return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address undefined4 FUN_00443e08(void) { int iVar1; bool bVar2; undefined3 extraout_var; undefined2 extraout_var_00; if (_DAT_00469b24 == 0) { bVar2 = FUN_00443d9c(); if ((short)CONCAT31(extraout_var,bVar2) == 0) { iVar1 = DAT_00469b28 * 6; _DAT_00469aa4 = *(undefined2 *)(&DAT_00469b2c + iVar1); DAT_00469aa6 = *(undefined2 *)(&DAT_00469b2e + iVar1); DAT_00469b28 = DAT_00469b28 + 1; DAT_00469b28 = DAT_00469b28 % 100; return CONCAT22(extraout_var_00,*(undefined2 *)(&DAT_00469b2a + iVar1)); } } return 0; } void FUN_00443e85(void) { short sVar1; int in_stack_00000004; sVar1 = *(short *)(in_stack_00000004 + 0x1e); if ((&DAT_00462eda)[sVar1 * 9] != 0) { DAT_00462ed4 = sVar1; FUN_00412e18(*(undefined4 *)((int)&DAT_00462ee0 + sVar1 * 0x12)); FUN_00443db0(); } return; } void FUN_00443ed8(void) { FUN_00412998(); return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_00443f0b(undefined4 param_1,undefined4 param_2,undefined4 param_3,int param_4) { short sVar1; FUN_0044fbfd(); if (_DAT_00469b24 == 0) { sVar1 = (short)((DAT_00469b26 + 1) % 100); if (sVar1 != DAT_00469b28) { *(undefined2 *)(&DAT_00469b2a + DAT_00469b26 * 6) = *(undefined2 *)(param_4 + 0x1e); *(undefined4 *)(&DAT_00469b2c + DAT_00469b26 * 6) = param_3; DAT_00469b26 = sVar1; } _DAT_00469b24 = 0; } return; } void FUN_00443f85(void) { return; } void FUN_00443f86(void) { return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address undefined4 FUN_00443f87(void) { undefined4 *puVar1; bool bVar2; short sVar3; undefined2 extraout_var_01; uint uVar4; int iVar5; undefined3 extraout_var; undefined3 extraout_var_00; byte **extraout_ECX; DWORD extraout_ECX_00; byte **extraout_ECX_01; DWORD extraout_ECX_02; undefined *extraout_EDX; undefined4 extraout_EDX_00; undefined4 extraout_EDX_01; undefined4 uVar6; uVar6 = 0; DAT_00469aac = PoolAlloc(0x8a0); sVar3 = FUN_0042b00b(); if (sVar3 == 0) { FUN_0041161a(); FUN_0042b00b(); *DAT_00469aac = 0x1a525355; *(undefined2 *)(DAT_00469aac + 1) = 0x11; *(undefined2 *)((int)DAT_00469aac + 6) = 0; sVar3 = 0; do { Memset((void *)((int)DAT_00469aac + sVar3 * 0x16 + 8),0,0x16); puVar1 = DAT_00469aac; iVar5 = (int)sVar3; *(short *)((int)DAT_00469aac + iVar5 * 0x16 + 0x1c) = sVar3; sVar3 = sVar3 + 1; } while (sVar3 < 99); bVar2 = FUN_0042b199(iVar5 * 0xb,puVar1,extraout_ECX_01,DAT_00469aac,0x8a0); if ((short)CONCAT31(extraout_var,bVar2) == 0) { uVar4 = FUN_0042aec8(); FUN_0042b1cb(uVar4,extraout_EDX_01,extraout_ECX_02); _DAT_004617c8 = 0; _DAT_004617ca = 1; sVar3 = 0; do { *(short *)&_GameState->field_0x14 = sVar3; bVar2 = FUN_0042b260(); if ((short)CONCAT31(extraout_var_00,bVar2) != 0) { uVar6 = 1; break; } sVar3 = sVar3 + 1; } while (sVar3 < 99); _DAT_004617ca = 0; _DAT_004617c8 = 1; } else { uVar6 = 1; } FUN_0041161a(); } else { uVar4 = FUN_0042b10a(CONCAT22(extraout_var_01,sVar3),extraout_EDX,extraout_ECX,DAT_00469aac, 0x8a0,1); FUN_0042b1cb(uVar4,extraout_EDX_00,extraout_ECX_00); } return uVar6; } void FUN_004440c3(void) { bool bVar1; short sVar2; undefined2 extraout_var_00; undefined3 extraout_var; byte **extraout_ECX; DWORD extraout_ECX_00; undefined4 extraout_EDX; undefined4 extraout_EDX_00; sVar2 = FUN_0042b00b(); bVar1 = FUN_0042b199(CONCAT22(extraout_var_00,sVar2),extraout_EDX,extraout_ECX,DAT_00469aac,0x8a0) ; FUN_0042b1cb(CONCAT31(extraout_var,bVar1),extraout_EDX_00,extraout_ECX_00); return; } void FUN_004440e8(uint param_1,undefined4 param_2,uint param_3) { uint uVar1; uint uVar2; uint extraout_ECX; uint extraout_ECX_00; undefined4 extraout_EDX; undefined4 extraout_EDX_00; FUN_00431024(param_1,param_2,param_3,6000); uVar1 = FUN_00412ac4(6000); uVar2 = FUN_00413cf4(); FUN_00412d0c(uVar2,extraout_EDX,extraout_ECX,uVar1); uVar1 = FUN_00412ac4(0x1779); uVar2 = FUN_00413cf4(); FUN_00412d0c(uVar2,extraout_EDX_00,extraout_ECX_00,uVar1); return; } void FUN_0044413c(uint param_1,undefined4 param_2,uint param_3) { FUN_004440e8(param_1,param_2,param_3); return; } bool FUN_00444142(undefined4 param_1,byte param_2,undefined4 param_3,short param_4) { short sVar1; undefined2 uVar2; short sVar3; short sVar4; uint uVar5; uint extraout_ECX; int iVar6; undefined4 extraout_EDX; undefined4 *puVar7; undefined4 *puVar8; bool bVar9; byte local_5; sVar1 = *(short *)(DAT_00469aac + 6); if ((0 < sVar1) && (*(int *)(DAT_00469aac + 0x18 + DAT_00469aaa * 0x16) < 0)) { if ((0 < DAT_00469ab2) && (*(int *)(DAT_00469aac + 0x18 + DAT_00469aaa * 0x16) == -2)) { (&DAT_00469ac0)[DAT_00469ab2] = 0x1f; DAT_00469ab2 = DAT_00469ab2 + 1; param_4 = 0x1f; } uVar2 = *(undefined2 *)(DAT_00469aac + 0x1c + DAT_00469aaa * 0x16); *(short *)(DAT_00469aac + 6) = *(short *)(DAT_00469aac + 6) + -1; for (sVar3 = DAT_00469aaa; sVar3 < *(short *)(DAT_00469aac + 6); sVar3 = sVar3 + 1) { puVar7 = (undefined4 *)(DAT_00469aac + 0x1e + sVar3 * 0x16); puVar8 = (undefined4 *)(DAT_00469aac + 8 + sVar3 * 0x16); for (iVar6 = 5; iVar6 != 0; iVar6 = iVar6 + -1) { *puVar8 = *puVar7; puVar7 = puVar7 + 1; puVar8 = puVar8 + 1; } *(undefined2 *)puVar8 = *(undefined2 *)puVar7; } *(undefined2 *)(DAT_00469aac + 0x1c + *(short *)(DAT_00469aac + 6) * 0x16) = uVar2; if (*(short *)(DAT_00469aac + 6) <= DAT_00469aaa) { DAT_00469aaa = *(short *)(DAT_00469aac + 6) + -1; } } if (DAT_00469ab2 < 1) { bVar9 = *(short *)(DAT_00469aac + 6) != sVar1; } else { for (sVar3 = 0; sVar3 < *(short *)(DAT_00469aac + 6); sVar3 = sVar3 + 1) { for (sVar4 = 0; sVar4 < DAT_00469ab2; sVar4 = sVar4 + 1) { local_5 = (&DAT_00469ac0)[sVar4]; param_2 = *(byte *)(DAT_00469aac + sVar3 * 0x16 + 8 + (int)sVar4); if ((param_2 == 0) && (*(int *)(DAT_00469aac + 0x18 + sVar3 * 0x16) < 0)) { param_2 = (&DAT_00469ac0)[sVar4]; *(byte *)(DAT_00469aac + sVar3 * 0x16 + 8 + (int)sVar4) = param_2; *(undefined1 *)(DAT_00469aac + sVar3 * 0x16 + 9 + (int)sVar4) = 0; } if (param_2 != local_5) break; } if ((param_2 == 0) && (local_5 == 0x1f)) break; if (param_2 == local_5) { DAT_00469aaa = sVar3; return *(short *)(DAT_00469aac + 6) != sVar1; } if (local_5 < param_2) break; } if ((sVar3 < *(short *)(DAT_00469aac + 6)) && (*(int *)(DAT_00469aac + 0x18 + sVar3 * 0x16) < 0) ) { bVar9 = false; } else if (*(short *)(DAT_00469aac + 6) < 99) { uVar2 = *(undefined2 *)(DAT_00469aac + 0x1c + *(short *)(DAT_00469aac + 6) * 0x16); for (sVar4 = *(short *)(DAT_00469aac + 6); sVar3 < sVar4; sVar4 = sVar4 + -1) { puVar7 = (undefined4 *)(DAT_00469aac + -0xe + sVar4 * 0x16); puVar8 = (undefined4 *)(DAT_00469aac + 8 + sVar4 * 0x16); for (iVar6 = 5; iVar6 != 0; iVar6 = iVar6 + -1) { *puVar8 = *puVar7; puVar7 = puVar7 + 1; puVar8 = puVar8 + 1; } *(undefined2 *)puVar8 = *(undefined2 *)puVar7; } *(undefined2 *)(DAT_00469aac + 0x1c + sVar3 * 0x16) = uVar2; *(undefined4 *)(DAT_00469aac + 0x18 + sVar3 * 0x16) = 0xffffffff; if (param_4 == 0x1f) { *(undefined4 *)(DAT_00469aac + 0x18 + sVar3 * 0x16) = 0xfffffffe; } (&DAT_00469ac0)[DAT_00469ab2] = 0; while ((0 < DAT_00469ab2 && ((byte)(&DAT_00469abf)[DAT_00469ab2] < 0x20))) { DAT_00469ab2 = DAT_00469ab2 + -1; (&DAT_00469ac0)[DAT_00469ab2] = 0; } Strcpy((char *)(sVar3 * 0x16 + DAT_00469aac + 8),&DAT_00469ac0); *(short *)(DAT_00469aac + 6) = *(short *)(DAT_00469aac + 6) + 1; bVar9 = *(short *)(DAT_00469aac + 6) != sVar1; DAT_00469aaa = sVar3; } else { uVar5 = FUN_00443f85(); FUN_0044c8c2(uVar5,extraout_EDX,extraout_ECX,0x3fa); FUN_00443f86(); DAT_00469ab2 = DAT_00469ab2 + -1; bVar9 = false; } } return bVar9; } void FUN_004444bf(void) { short sVar1; int iVar2; int in_stack_00000004; short in_stack_00000008; short in_stack_0000000c; char acStack_38 [52]; iVar2 = 0; do { GetWinapiString(&DAT_00467a98 + iVar2 * 0x32,0x4e4a); iVar2 = iVar2 + 1; } while (iVar2 < 7); if (-1 < in_stack_00000004) { FUN_0041032e(); sVar1 = FUN_0044ccf5(); Draw::StringWithCurrentFontAndColor ((in_stack_00000008 + 0xa8) - sVar1,in_stack_0000000c + 1,acStack_38); sVar1 = FUN_0042b4e4(); Draw::StringWithCurrentFontAndColor (in_stack_00000008 + 0xb2,in_stack_0000000c + 1,&DAT_00467a98 + sVar1 * 0x32); } return; } void FUN_004444c5(void) { int iVar1; int iVar2; short sVar3; int iVar4; int unaff_EBP; iVar1 = *(int *)(unaff_EBP + 0xc); iVar2 = *(int *)(unaff_EBP + 8); iVar4 = 0; do { GetWinapiString(&DAT_00467a98 + iVar4 * 0x32,0x4e4a); iVar4 = iVar4 + 1; } while (iVar4 < 7); if (-1 < iVar2) { FUN_0041032e(); sVar3 = FUN_0044ccf5(); Draw::StringWithCurrentFontAndColor ((short)(iVar1 + 0xa8) - sVar3,*(short *)(unaff_EBP + 0x10) + 1, (char *)(unaff_EBP + -0x34)); sVar3 = FUN_0042b4e4(); Draw::StringWithCurrentFontAndColor ((short)iVar1 + 0xb2,*(short *)(unaff_EBP + 0x10) + 1,&DAT_00467a98 + sVar3 * 0x32); } return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_00444558(void) { short sVar1; ushort uVar2; char *value; short sVar3; short sVar4; short in_stack_00000004; short in_stack_00000008; short in_stack_0000000c; undefined4 uVar5; char acStack_3d [51]; short local_a; short local_8; short local_6; local_8 = DAT_00462f1c; local_a = *(short *)(DAT_00469aac + 6); if (8 < local_a) { local_a = 8; } if ((-1 < in_stack_0000000c) && (local_a != 0)) { if (DAT_00469aaa < DAT_00462f1c) { local_8 = DAT_00469aaa; FUN_00443ae0(); in_stack_0000000c = -1; } if (local_8 + 7 <= (int)DAT_00469aaa) { local_8 = DAT_00469aaa + -7; FUN_00443ae0(); in_stack_0000000c = -1; } } sVar4 = 0x43; local_6 = 0; sVar1 = 0x43; if (0 < local_a) { do { sVar3 = local_6 + local_8; sVar4 = sVar1 + 0x15; if (((in_stack_0000000c < 0) || (sVar3 == in_stack_00000008)) || (sVar3 == in_stack_0000000c)) { if (sVar3 == DAT_00469aaa) { FUN_00431b20(); if (DAT_00469ab2 < 1) { SetCurrentColor(0xefe); Draw::StringWithCurrentFontAndColor (0x65,sVar1 + 0x16,(char *)(sVar3 * 0x16 + DAT_00469aac + 8)); FUN_004444bf(); } else { Strcpy(acStack_3d + 1,(char *)(sVar3 * 0x16 + DAT_00469aac + 8)); acStack_3d[DAT_00469ab2 + 1] = '\0'; if (acStack_3d[DAT_00469ab2] == '\x1f') { acStack_3d[DAT_00469ab2] = '\0'; } SetCurrentColor(0xbfb); Draw::StringWithCurrentFontAndColor(0x65,sVar1 + 0x16,acStack_3d + 1); uVar5 = 0xefe; SetCurrentColor(0xefe); value = (char *)(sVar3 * 0x16 + DAT_00469aac + (int)DAT_00469ab2 + 8); sVar1 = sVar1 + 0x16; sVar3 = FUN_0044ccf5(acStack_3d + 1,(int)DAT_00469ab2,uVar5,0xffffffff,acStack_3d + 1); Draw::StringWithCurrentFontAndColor(sVar3 + 0x65,sVar1,value); FUN_004444bf(); } } else { FUN_00430de8(99,sVar1 + 0x13,0x120,0x15); SetCurrentColor(0xfff); Draw::StringWithCurrentFontAndColor (0x65,sVar1 + 0x16,(char *)(sVar3 * 0x16 + DAT_00469aac + 8)); FUN_004444bf(); } if (in_stack_00000004 != 0) { FUN_00430bbc(); } } local_6 = local_6 + 1; sVar1 = sVar4; } while (local_6 < local_a); } if (((in_stack_0000000c == -1) || (local_a < in_stack_0000000c)) && (local_a < 8)) { FUN_00430de8(99,sVar4 + 0x15,0x120,0x15); if (in_stack_00000004 != 0) { FUN_00430bbc(); } } sVar1 = 0; if (((-1 < DAT_00469aaa) && (DAT_00469aaa < *(short *)(DAT_00469aac + 6))) && ((*(int *)(DAT_00469aac + 0x18 + DAT_00469aaa * 0x16) != -2 || (0 < DAT_00469ab2)))) { sVar1 = 1; } if (sVar1 != DAT_00462eda) { DAT_00462eda = sVar1; FUN_00443ed8(); } sVar1 = 1; if (((-1 < DAT_00469aaa) && (DAT_00469aaa < *(short *)(DAT_00469aac + 6))) && (*(int *)(DAT_00469aac + 0x18 + DAT_00469aaa * 0x16) < 0)) { sVar1 = 0; } if (sVar1 != _DAT_00462eec) { _DAT_00462eec = sVar1; FUN_00443ed8(); } uVar2 = 0; if (local_a != 0) { uVar2 = (ushort)(_DAT_00462eec == 0); } if (uVar2 != _DAT_00462efe) { _DAT_00462efe = uVar2; FUN_00443ed8(); } return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address undefined4 FUN_00444911(undefined4 param_1,undefined4 param_2,undefined4 param_3,uint param_4) { bool bVar1; byte bVar2; bool bVar3; short sVar4; short sVar5; undefined4 uVar6; int iVar7; uint uVar8; int iVar9; undefined3 extraout_var; undefined2 extraout_var_01; undefined3 extraout_var_00; undefined4 extraout_ECX; uint extraout_ECX_00; undefined4 extraout_ECX_01; undefined4 extraout_ECX_02; uint extraout_ECX_03; byte extraout_DL; undefined4 extraout_EDX; uint extraout_EDX_00; int extraout_EDX_01; undefined4 extraout_EDX_02; ushort uVar10; char local_a; char local_9; sVar5 = DAT_00469aaa; bVar2 = DAT_00469aa8; bVar3 = false; bVar1 = false; if ((short)param_4 == 0x26) { bVar3 = true; _DAT_00469abe = 0; } else if ((short)param_4 == 0x28) { bVar1 = true; _DAT_00469abe = 0; } if ((param_4 & 0xffff) == (uint)DAT_00469aa8) { if (((-1 < DAT_00469aaa) && (DAT_00469aaa < *(short *)(DAT_00469aac + 6))) && (-1 < *(int *)(DAT_00469aac + 0x18 + DAT_00469aaa * 0x16))) { FUN_00443f85(); uVar6 = FUN_0044571b(); iVar9 = DAT_00469aac; if ((short)uVar6 == 1) { iVar7 = (int)DAT_00469aaa; *(undefined4 *)(DAT_00469aac + 0x18 + iVar7 * 0x16) = 0xffffffff; DAT_00469ab2 = 0; FUN_00444142(iVar7 * 0xb,(byte)iVar9,extraout_ECX,8); FUN_00443b15(); FUN_00444558(); FUN_004440c3(); } FUN_00443f86(); } uVar6 = 0; } else if ((param_4 & 0xfff) == 0x702) { DAT_00469ab2 = 0; FUN_00444142(0x702,DAT_00469aa8,param_3,8); FUN_00443b15(); FUN_00444558(); uVar6 = 0; } else if ((param_4 & 0xfff) == 0x703) { if (*(short *)(DAT_00469aac + 6) < 99) { iVar9 = (int)DAT_00469ab2; (&DAT_00469ac0)[iVar9] = 0x1f; DAT_00469ab2 = DAT_00469ab2 + 1; bVar3 = FUN_00444142(iVar9,bVar2,param_3,0x1f); if ((short)CONCAT31(extraout_var,bVar3) != 0) { FUN_00443b15(); if (DAT_00469aaa < DAT_00462f1c) { FUN_00443ae0(); } else if (DAT_00462f1c + 7 <= (int)DAT_00469aaa) { FUN_00443ae0(); } } FUN_00444558(); uVar6 = 0; } else { uVar8 = FUN_00443f85(); FUN_0044c8c2(uVar8,extraout_EDX,extraout_ECX_00,0x3fa); FUN_00443f86(); uVar6 = 0; } } else { sVar4 = *(short *)(DAT_00469aac + 6); if (8 < sVar4) { sVar4 = 8; } iVar9 = CONCAT22((short)((uint)DAT_00469aac >> 0x10),sVar4); uVar8 = param_4 & 0xfff; if (uVar8 == 0x700) { if ((((_DAT_00469aa4 < 0x5f) || (0x182 < _DAT_00469aa4)) || (DAT_00469aa6 < 0x58)) || (uVar8 = (uint)DAT_00469aa6, sVar4 * 0x15 + 0x58 <= (int)uVar8)) { _DAT_00469ab0 = 0; _DAT_00469ab4 = 0; iVar9 = 0; _DAT_00469ab8 = 0; } else { if (*(int *)(DAT_00469aac + 0x18 + DAT_00469aaa * 0x16) < 0) { return 0; } sVar4 = (short)((DAT_00469aa6 + -0x58) / 0x15) + DAT_00462f1c; if (DAT_00469aa6 < 0x58) { sVar4 = DAT_00462f1c + -1; } if ((sVar4 < 0) || (*(short *)(DAT_00469aac + 6) <= sVar4)) { _DAT_00469ab0 = 0; _DAT_00469ab4 = 0; _DAT_00469ab8 = 0; return 0; } DAT_00469aaa = sVar4; iVar9 = FUN_0044ca04(); _DAT_00469ab8 = iVar9; if (sVar5 != DAT_00469aaa) { _DAT_00469ab4 = FUN_0044ca04(); _DAT_00469ab8 = 0; DAT_00469ab2 = 0; FUN_00444558(); _DAT_00469ab0 = 1; return 0; } param_4 = 0x704; param_3 = extraout_ECX_01; uVar8 = extraout_EDX_00; } } else { _DAT_00469ab0 = 0; } uVar10 = (ushort)param_4; if (bVar3) { if ((_DAT_00469abe != 2) || (4 < _DAT_00469abc)) { _DAT_00469abc = 0; _DAT_00469abe = 2; if ((0 < DAT_00469aaa) && ((DAT_00469aaa < *(short *)(DAT_00469aac + 6) && (-1 < *(int *)(DAT_00469aac + 0x18 + DAT_00469aaa * 0x16))))) { DAT_00469ab2 = 0; DAT_00469aaa = DAT_00469aaa + -1; FUN_00444558(); } return 0; } } else if (_DAT_00469abe == 2) { _DAT_00469abe = 0; } if (bVar1) { if ((_DAT_00469abe != 3) || (4 < _DAT_00469abc)) { _DAT_00469abc = 0; _DAT_00469abe = 3; if ((-1 < DAT_00469aaa) && (((int)DAT_00469aaa < *(short *)(DAT_00469aac + 6) + -1 && (-1 < *(int *)(DAT_00469aac + 0x18 + DAT_00469aaa * 0x16))))) { DAT_00469ab2 = 0; DAT_00469aaa = DAT_00469aaa + 1; FUN_00444558(); } return 0; } } else if (_DAT_00469abe == 3) { _DAT_00469abe = 0; } if (uVar10 == 8) { if (DAT_00469ab2 != 0) { DAT_00469ab2 = DAT_00469ab2 + -1; } FUN_00444142(iVar9,(byte)uVar8,param_3,8); sVar5 = DAT_00462f1c; if (DAT_00469aaa < DAT_00462f1c) { FUN_00443ae0(); } if (sVar5 + 6 <= (int)DAT_00469aaa) { FUN_00443ae0(); } FUN_00443b15(); FUN_00444558(); uVar6 = 0; } else if ((uVar10 < 0x20) || (0xff < uVar10)) { if ((DAT_00469aaa < 0) || (*(short *)(DAT_00469aac + 6) <= DAT_00469aaa)) { uVar6 = 0; } else { if ((param_4 & 0xfff) == 0x704) { uVar10 = 0xd; } if (uVar10 == 0xd) { iVar9 = DAT_00469aaa * 0xb; if (*(int *)(DAT_00469aac + 0x18 + DAT_00469aaa * 0x16) < 0) { iVar9 = (int)DAT_00469ab2; iVar7 = DAT_00469aac; if ((&DAT_00469abf)[iVar9] == ' ') { while (sVar5 = DAT_00462f1c, iVar9 = (int)DAT_00469ab2, (&DAT_00469abf)[iVar9] == ' ') { DAT_00469ab2 = DAT_00469ab2 + -1; uVar6 = 8; FUN_00444142(iVar9,(byte)iVar7,param_3,8); param_3 = uVar6; iVar7 = extraout_EDX_01; } if (DAT_00469aaa < DAT_00462f1c) { FUN_00443ae0(); } if (sVar5 + 6 <= (int)DAT_00469aaa) { FUN_00443ae0(); } FUN_00443b15(); iVar9 = FUN_00444558(); } if ((-1 < DAT_00469aaa) && (iVar9 = (int)DAT_00469aaa, iVar9 < *(short *)(DAT_00469aac + 6) + -1)) { for (iVar9 = 0; sVar5 = (short)iVar9, sVar5 <= DAT_00469ab2; iVar9 = iVar9 + 1) { local_9 = (&DAT_00469ac0)[sVar5]; local_a = *(char *)(DAT_00469aac + DAT_00469aaa * 0x16 + 0x1e + (int)sVar5); if (local_9 != local_a) break; } iVar9 = CONCAT31((int3)((uint)iVar9 >> 8),local_9); if (local_9 == local_a) { uVar8 = FUN_00443f85(); FUN_0044c8c2(uVar8,extraout_EDX_02,extraout_ECX_03,0x3f9); FUN_00443f86(); return 0; } } } uVar6 = CONCAT22((short)((uint)iVar9 >> 0x10),0xd); } else { uVar6 = 0; } } } else if (DAT_00469ab2 < 0xf) { if ((((DAT_00469ab2 == 0) || (DAT_00469ac0 == '\x1f')) && (0x60 < uVar10)) && (uVar10 < 0x7b)) { uVar10 = uVar10 - 0x20; } if ((0 < DAT_00469ab2) && ((&DAT_00469abf)[DAT_00469ab2] == '\x1f')) { DAT_00469ab2 = DAT_00469ab2 + -1; } (&DAT_00469ac0)[DAT_00469ab2] = (char)uVar10; DAT_00469ab2 = DAT_00469ab2 + 1; sVar5 = FUN_0044ccf5(); if (sVar5 < 0x57) { bVar3 = FUN_00444142(CONCAT22(extraout_var_01,sVar5),extraout_DL,extraout_ECX_02,uVar10); if ((short)CONCAT31(extraout_var_00,bVar3) != 0) { FUN_00443b15(); } sVar5 = DAT_00469aaa; sVar4 = DAT_00462f1c; if (DAT_00469aaa < DAT_00462f1c) { FUN_00443ae0(); sVar4 = sVar5; } if (sVar4 + 6 <= (int)DAT_00469aaa) { FUN_00443ae0(); } FUN_00444558(); uVar6 = 0; } else { DAT_00469ab2 = DAT_00469ab2 + -1; (&DAT_00469ac0)[DAT_00469ab2] = 0; uVar6 = 0; } } else { uVar6 = 0; } } return uVar6; } void FUN_0044510a(undefined4 param_1,undefined4 param_2,uint param_3) { undefined4 uVar1; int iVar2; short sVar3; CHAR local_10 [12]; sVar3 = 0; do { uVar1 = FUN_00412ac4((&DAT_00462ede)[sVar3 * 9]); *(undefined4 *)((int)&DAT_00462ee0 + sVar3 * 0x12) = uVar1; FUN_0041395c(*(undefined4 *)((int)&DAT_00462ee0 + sVar3 * 0x12), CONCAT22((short)((uint)(sVar3 * 9) >> 0x10),(&DAT_00462ed6)[sVar3 * 9]), CONCAT22((short)((uint)(sVar3 * 9) >> 0x10),(&DAT_00462ed8)[sVar3 * 9]),5); if ((&DAT_00462eda)[sVar3 * 9] == 0) { FUN_004129d4(*(undefined4 *)((int)&DAT_00462ee0 + sVar3 * 0x12),1); } uVar1 = FUN_00417375(); *(undefined4 *)((int)&DAT_00462ee4 + sVar3 * 0x12) = uVar1; FUN_00417216(); FUN_00412e18(*(undefined4 *)((int)&DAT_00462ee0 + sVar3 * 0x12)); sVar3 = sVar3 + 1; } while (sVar3 < 3); LoadStringA(_Module,0x4e27,local_10,10); iVar2 = Atoi(local_10); DAT_00469aa8 = (char)iVar2; return; } void FUN_00445202(undefined4 param_1,undefined4 param_2,uint param_3) { undefined4 uVar1; undefined4 extraout_EDX; short sVar2; uint uVar3; sVar2 = 0; do { uVar3 = *(uint *)((int)&DAT_00462ee0 + sVar2 * 0x12); uVar1 = FUN_00412d0c(sVar2 * 9,param_2,param_3,uVar3); *(undefined4 *)((int)&DAT_00462ee0 + sVar2 * 0x12) = uVar1; param_3 = *(uint *)((int)&DAT_00462ee4 + sVar2 * 0x12); FUN_00416e35(sVar2 * 9,sVar2 * 9,uVar3); sVar2 = sVar2 + 1; param_2 = extraout_EDX; } while (sVar2 < 3); PoolFree(DAT_00469aac); return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_0044525f(void) { bool bVar1; short sVar2; undefined4 uVar3; uint uVar4; uint extraout_ECX; uint extraout_ECX_00; uint extraout_ECX_01; undefined4 extraout_EDX; undefined4 extraout_EDX_00; int extraout_EDX_01; _DAT_004617c8 = 1; _DAT_00461ab0 = 0; _DAT_00461aae = 0; uVar3 = FUN_00443f87(); if ((short)uVar3 == 0) { _DAT_00462efe = (ushort)(*(short *)(DAT_00469aac + 6) == 0); bVar1 = 0 < *(short *)(DAT_00469aac + 6); DAT_00462eda = (ushort)bVar1; _DAT_00462eec = DAT_00462eda; uVar4 = FUN_0044510a((uint)bVar1,extraout_EDX,extraout_ECX); uVar3 = FUN_0044413c(uVar4,extraout_EDX_00,extraout_ECX_00); FUN_00443d53(uVar3,extraout_EDX_01,extraout_ECX_01); _DAT_00469ab0 = 0; DAT_00469aaa = 0; DAT_00469ab2 = 0xffff; sVar2 = *(short *)(DAT_00469aac + 6) + -8; if (sVar2 < 0) { sVar2 = 0; } _DAT_00462f20 = (int)sVar2; _DAT_00462f28 = FUN_0044ca04(); _DAT_00462f1c = 0; FUN_00444558(); FUN_004439fb(); PickapuzzleHitTest_(99,0x58,0x120,0xa8,4,FUN_00443f0b); FUN_00417216(); FUN_00416ea3(); FUN_0041029e(); _DAT_00469ad2 = 0; FUN_0044c950(); FUN_0043139c(); FUN_0042f4e7(); } return; } undefined4 FUN_004456d2(void) { void *object; void *pvVar1; undefined4 uVar2; undefined4 extraout_EDX; object = (void *)FUN_0044c2df(); pvVar1 = Resource::Load(0x3f1,_pTEXT); *(void **)((int)object + 0x22) = pvVar1; *(undefined2 *)((int)object + 0xe) = 0x3ee; *(undefined2 *)((int)object + 0x10) = 0x3ef; pvVar1 = object; uVar2 = FUN_0044c371(object); FUN_0044073c(uVar2,extraout_EDX,pvVar1,*(undefined4 *)((int)object + 0x22)); PoolFree(object); return uVar2; } undefined4 FUN_0044571b(void) { void *object; void *pvVar1; undefined4 uVar2; undefined4 uVar3; undefined4 extraout_EDX; undefined4 extraout_EDX_00; undefined4 uVar4; char local_54 [80]; object = (void *)FUN_0044c2df(); pvVar1 = Resource::Load(0x3fb,_pTEXT); *(void **)((int)object + 0x1a) = pvVar1; pvVar1 = Resource::Load(0x3fc,_pTEXT); *(void **)((int)object + 0x22) = pvVar1; GetWinapiString(local_54,0x4e59); Sprintf_(&DAT_00469ad4,local_54,&DAT_00462f3c); *(undefined **)((int)object + 0x1e) = &DAT_00469ad4; pvVar1 = object; uVar2 = FUN_0044c371(object); uVar4 = *(undefined4 *)((int)object + 0x1a); uVar3 = FUN_0044073c(uVar2,extraout_EDX,pvVar1); FUN_0044073c(uVar3,extraout_EDX_00,uVar4,*(undefined4 *)((int)object + 0x22)); PoolFree(object); return uVar2; } void __stdcall FUN_004457b0(undefined4 param_1) { char local_54 [80]; switch(param_1) { case 0: goto switchD_004457c8_caseD_0; case 1: GetWinapiString(local_54,0x4e94); break; case 2: GetWinapiString(local_54,0x4e98); break; default: GetWinapiString(local_54,0x4e9a); break; case 4: GetWinapiString(local_54,0x4e92); break; case 5: GetWinapiString(local_54,0x4e97); break; case 7: GetWinapiString(local_54,0x4e93); break; case 0xb: GetWinapiString(local_54,0x4e99); break; case 0x20: GetWinapiString(local_54,0x4e95); break; case 0x23: GetWinapiString(local_54,0x4e96); } FUN_004478cf(); switchD_004457c8_caseD_0: return; } void FUN_004458d8(void) { char *pcVar1; MMRESULT in_stack_00000004; CHAR local_104 [256]; if (in_stack_00000004 != 0) { waveOutGetErrorTextA(in_stack_00000004,local_104,0x100); pcVar1 = GetWinapiStringAlloc(0x4e9b); ShowAlertMessage(pcVar1,local_104); TurboFree_(pcVar1); } return; } undefined2 __stdcall FUN_00445924(undefined2 param_1) { return param_1; } LRESULT SoundWndProc(void) { MCIERROR MVar1; LRESULT LVar2; int iVar3; HWND in_stack_00000004; UINT in_stack_00000008; uint in_stack_0000000c; short sStack00000010; HWND local_18; undefined4 local_14; undefined4 local_10; undefined1 local_c [8]; // 0x4592d 3 SoundWndProc if (in_stack_00000008 == 0x3b9) { if (((in_stack_0000000c == 1) && (DAT_00469d98 != 0)) && (*(short *)(DAT_00469d98 + 0x2c) == sStack00000010)) { if (*(short *)(DAT_00469d98 + 0x18) == 0) { FUN_00446b4c(*(undefined2 *)(DAT_00469d98 + 0xc)); } else { MVar1 = mciSendCommandA((uint)*(ushort *)(DAT_00469d98 + 0x2c),0x807,0x102, (DWORD_PTR)local_c); FUN_00445924((short)MVar1); local_18 = dwCallback_00469e44; local_10 = 0; local_14 = 0; MVar1 = mciSendCommandA((uint)*(ushort *)(DAT_00469d98 + 0x2c),0x806,1,(DWORD_PTR)&local_18) ; FUN_00445924((short)MVar1); } } LVar2 = 0; } else if (in_stack_00000008 == 0x3bd) { iVar3 = DAT_00469e60; if (((DAT_00462f48 == 1) && (iVar3 = 0, in_stack_0000000c != 0)) && (in_stack_0000000c < 5)) { iVar3 = *(int *)(&DAT_00469e50 + in_stack_0000000c * 0x10); } if (iVar3 != 0) { if (DAT_00462f48 == 0) { FUN_00446967(); } (&DAT_00469e4c)[*(short *)(iVar3 + 0x1c) * 8] = 0xffff; *(undefined4 *)(&DAT_00469e50 + *(short *)(iVar3 + 0x1c) * 0x10) = 0; *(undefined2 *)(iVar3 + 0x16) = 0; } LVar2 = 0; } else { LVar2 = DefWindowProcA(in_stack_00000004,in_stack_00000008,in_stack_0000000c,_sStack00000010); } return LVar2; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address short FUN_00445a67(void) { bool bVar1; short sVar2; short unaff_SI; short sVar3; short in_stack_00000004; bVar1 = false; sVar3 = -1; if (_DAT_0046305a == 0) { for (sVar2 = 1; (!bVar1 && (sVar2 < _DAT_00469d96)); sVar2 = sVar2 + 1) { if ((&DAT_00469e4c)[sVar2 * 8] == -1) { bVar1 = true; unaff_SI = sVar2; } else if (*(short *)(&DAT_00469e4e + sVar2 * 0x10) < in_stack_00000004) { in_stack_00000004 = *(short *)(&DAT_00469e4e + sVar2 * 0x10); sVar3 = sVar2; } } if (!bVar1) { if (sVar3 == -1) { unaff_SI = -1; } else { FUN_00446ac0(); unaff_SI = sVar3; } } if (unaff_SI != -1) { *(undefined4 *)(&DAT_00469e58 + unaff_SI * 0x10) = 0; } } else { unaff_SI = -1; } return unaff_SI; } void FUN_00445b16(void) { int iVar1; int iVar2; bool bVar3; int in_stack_00000004; iVar2 = *(int *)(in_stack_00000004 + 8) + 0xc; bVar3 = false; while (!bVar3) { iVar1 = FUN_00450048(); bVar3 = iVar1 == 0; if (!bVar3) { iVar2 = iVar2 + 1; } } *(int *)(in_stack_00000004 + 0x20) = iVar2 + 8; *(undefined4 *)(in_stack_00000004 + 0x24) = *(undefined4 *)(iVar2 + 0x1c); *(int *)(in_stack_00000004 + 0x28) = iVar2 + 0x20; return; } void __stdcall FUN_00445b61(undefined4 param_1,ushort param_2) { DlistNode *node; node = (DlistNode *)DlistTail(DAT_00469d84); while ((node != (DlistNode *)0x0 && (((short)param_1 != *(short *)&node[1].prev || ((*(ushort *)((int)&node[1].prev + 2) & param_2) == 0))))) { node = (DlistNode *)DlistPrev(node); } return; } void FUN_00445b97(void) { undefined4 uVar1; if (DAT_00462f48 == 1) { uVar1 = (*_pWaveMixActivate)(); FUN_004457b0(uVar1); } return; } undefined4 FUN_00445cd8(void) { UINT uMode; uMode = SetErrorMode(0x8000); hModule_00463070 = LoadLibraryA(s_DSOUND_DLL_00463145); SetErrorMode(uMode); if (hModule_00463070 != (HMODULE)0x0) { DAT_00469d9c = GetProcAddress(hModule_00463070,s_DirectSoundCreate_00463150); } return 0; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address uint FUN_00445d1d(uint param_1) { undefined4 uVar1; int iVar2; char *pcVar3; bool bVar4; WNDCLASSA local_38; undefined2 local_10; undefined4 local_e; undefined2 local_a; undefined2 local_8; if (_DAT_00469d8a == 0) { DAT_00469d92 = 2; bVar4 = (DAT_00469d88 & 1) != 0; DAT_00469d90 = (ushort)bVar4; DAT_00469d8c = (ushort)bVar4; DAT_00469d8e = (ushort)((DAT_00469d88 & 2) != 0); local_38.style = 0; local_38.lpfnWndProc = SoundWndProc; local_38.cbClsExtra = 0; local_38.cbWndExtra = 0; local_38.hInstance = _Module; local_38.hIcon = (HICON)0x0; local_38.hCursor = (HCURSOR)0x0; local_38.hbrBackground = (HBRUSH)0x0; local_38.lpszMenuName = (LPCSTR)0x0; local_38.lpszClassName = lpClassName_00463068; RegisterClassA(&local_38); dwCallback_00469e44 = CreateWindowExA(0,lpClassName_00463068,&lpWindowName_00463162,0x40000000,-0x80000000, -0x80000000,-0x80000000,-0x80000000,Game::window,(HMENU)0x0,_Module, (LPVOID)0x0); if (DAT_00462f48 == 0) { _DAT_00469d96 = 2; } else if (DAT_00462f48 == 1) { local_10 = 10; local_e = 3; local_a = 1; local_8 = 0x16; _WaveMixHandle = (*_pWaveMixConfigureInit)(); _DAT_00469d96 = 5; FUN_00445b97(); uVar1 = (*_pWaveMixOpenChannel)(); FUN_004457b0(uVar1); } else if (DAT_00462f48 == 2) { _DAT_00469d96 = 5; iVar2 = (**(code **)(*DAT_00469e48 + 0x18))(); if (iVar2 != 0) { pcVar3 = GetWinapiStringAlloc(0x4e9c); ShowAlertMessage(pcVar3); TurboFree_(pcVar3); } } DAT_00469d84 = DlistNew(); DAT_00469d98 = 0; param_1 = 0; do { (&DAT_00469e4c)[(short)param_1 * 8] = 0xffff; param_1 = param_1 + 1; } while ((short)param_1 < 5); _DAT_00469d8a = 1; } return CONCAT22((short)(param_1 >> 0x10),DAT_00469d88); } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void __stdcall FUN_00445eea(void) { short sVar1; DlistNode *node; DlistNode *next; undefined4 uVar2; MCIERROR MVar3; undefined1 local_8 [4]; if (_DAT_00469d8a != 0) { FUN_00446ccc(); next = DlistHead(DAT_00469d84); while (node = next, node != (DlistNode *)0x0) { next = DlistNext(node); sVar1 = *(short *)((int)&node[1].prev + 2); if (sVar1 == 1) { FUN_004462d4(*(undefined2 *)&node[1].prev); } else if (sVar1 == 2) { FUN_00446367(*(undefined2 *)&node[1].prev); } else if (sVar1 == 4) { FUN_004462e8((uint)*(ushort *)&node[1].prev); } } if (DAT_00462f48 == 1) { uVar2 = (*_pWaveMixCloseChannel)(_WaveMixHandle,0,1); FUN_004457b0(uVar2); (*_pWaveMixCloseSession)(); FreeLibraryForWAVEMIX(); } else if ((DAT_00462f48 == 2) && (DAT_00469e48 != (int *)0x0)) { (**(code **)(*DAT_00469e48 + 8))(DAT_00469e48); DAT_00469e48 = (int *)0x0; } if (((byte)DAT_00469d88 & 2) != 0) { MVar3 = mciSendCommandA(0xffffffff,0x804,2,(DWORD_PTR)local_8); FUN_00445924((short)MVar3); } DestroyWindow(dwCallback_00469e44); UnregisterClassA(lpClassName_00463068,_Module); PoolFreeIfNotNull(DAT_00469d84); _DAT_00469d8a = 0; } return; } // WARNING: Heritage AFTER dead removal. Example location: EAX : 0x00446091 // WARNING: Globals starting with '_' overlap smaller symbols at the same address // WARNING: Restarted to delay deadcode elimination for space: register void FUN_0044600b(void) { undefined2 uVar1; int iVar2; DlistNode *node; DlistNode *pDVar3; HGLOBAL hMem; undefined4 uVar4; char *pcVar5; undefined4 extraout_EDX; undefined4 in_stack_00000004; undefined2 in_stack_00000008; ushort id; DlistNode *pDVar6; iVar2 = FUN_00445b61(in_stack_00000004,in_stack_00000008); if (iVar2 == 0) { node = PoolAlloc(0x54); Memset(node,0,0x54); *(undefined2 *)((int)&node[1].prev + 2) = in_stack_00000008; *(undefined2 *)&node[2].next = 1; id = (ushort)in_stack_00000004; pDVar3 = Resource::Load(id,_pWAVE); node[1].next = pDVar3; if (node[1].next == (DlistNode *)0x0) { PoolFree(node); } else { pDVar6 = node; FUN_00445b16(); if (DAT_00462f48 == 1) { FUN_0044080d(pDVar3,extraout_EDX,pDVar6); Memset(&DAT_00469dfc,0,0x48); _DAT_00469e14 = node[1].next; hMem = (HGLOBAL)FUN_004407d3(); _DAT_00469e10 = GlobalSize(hMem); _DAT_00469e00 = 0x204d454d; *(undefined4 *)((int)&node[5].prev + 2) = 0; (*_pWaveMixActivate)(); uVar4 = (*_pWaveMixOpenWave)(); *(undefined4 *)((int)&node[5].prev + 2) = uVar4; (*_pWaveMixActivate)(); if (*(int *)((int)&node[5].prev + 2) == 0) { pcVar5 = GetWinapiStringAlloc(0x4e9d); ShowAlertMessage(); TurboFree_(pcVar5); } FUN_00440695(id,_pWAVE); } *(ushort *)&node[1].prev = id; *(undefined2 *)((int)&node[2].prev + 2) = 0; *(undefined2 *)&node[2].prev = 0; *(undefined2 *)((int)&node[3].prev + 2) = 1; uVar1 = FUN_00435355(); *(undefined2 *)((int)&node[10].next + 2) = uVar1; DlistInsert(DAT_00469d84,node,-1); } } else { *(short *)(iVar2 + 0x1e) = *(short *)(iVar2 + 0x1e) + 1; } return; } void FUN_00446172(void) { FUN_0044600b(); return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void __stdcall FUN_00446186(ushort param_1) { undefined1 uVar1; undefined2 uVar2; DlistNode *node; DlistNode *pDVar3; node = PoolAlloc(0x54); *(undefined2 *)((int)&node[1].prev + 2) = 4; *(undefined2 *)&node[2].next = DAT_00469d92; pDVar3 = Resource::Load(param_1,_pTEXT); node[1].next = pDVar3; uVar1 = 0x65; if (_DAT_00462f42 == 0) { uVar1 = 0x62; } *(undefined1 *)&(node[1].next)->next = uVar1; *(ushort *)&node[1].prev = param_1; *(undefined2 *)((int)&node[2].prev + 2) = 0; *(undefined2 *)&node[2].prev = 0; uVar2 = FUN_00435355(); *(undefined2 *)((int)&node[10].next + 2) = uVar2; DlistInsert(DAT_00469d84,node,-1); return; } void FUN_004461ff(void) { undefined2 in_stack_00000004; if (DAT_00469d90 != 0) { FUN_0044600b(); DAT_00462f4a = in_stack_00000004; } return; } void __stdcall FUN_00446225(short param_1,ushort param_2) { short *psVar1; DlistNode *node; undefined4 uVar2; undefined2 in_stack_00000006; node = (DlistNode *)FUN_00445b61(_param_1,param_2); if (node == (DlistNode *)0x0) { return; } if (*(short *)((int)&node[2].prev + 2) != 0) { FUN_00446ac0(); } psVar1 = (short *)((int)&node[3].prev + 2); *psVar1 = *psVar1 + -1; if (*(short *)((int)&node[3].prev + 2) != 0) { return; } if (DAT_00462f48 != 0) { if (DAT_00462f48 == 1) { (*_pWaveMixActivate)(); uVar2 = (*_pWaveMixFreeWave)(); FUN_004457b0(uVar2); (*_pWaveMixActivate)(); goto LAB_004462ba; } if (DAT_00462f48 != 2) goto LAB_004462ba; } FUN_00440695(param_1,_pWAVE); LAB_004462ba: DlistRemove(DAT_00469d84,node); PoolFree(node); return; } void __stdcall FUN_004462d4(undefined2 param_1) { FUN_00446225(param_1,1); return; } void __stdcall FUN_004462e8(undefined4 param_1) { DlistNode *node; node = (DlistNode *)FUN_00445b61(param_1,4); if (node != (DlistNode *)0x0) { FUN_00446b4c(*(undefined2 *)&node[1].prev); FUN_00440695((short)param_1,_pTEXT); DlistRemove(DAT_00469d84,node); if (node == DAT_00469d98) { DAT_00469d98 = (DlistNode *)0x0; } PoolFree(node); DAT_0046305c = 0xffff; } return; } void FUN_0044634d(void) { if (DAT_00469d98 != 0) { FUN_004462e8(CONCAT22((short)((uint)DAT_00469d98 >> 0x10),*(undefined2 *)(DAT_00469d98 + 0xc))); } return; } void __stdcall FUN_00446367(undefined2 param_1) { FUN_00446225(param_1,2); DAT_00462f4a = 0xffff; return; } void FUN_00446384(void) { if (DAT_00462f4a != -1) { FUN_00446367(DAT_00462f4a); } return; } void FUN_0044639c(void) { int iVar1; char *pcVar2; uint uVar3; int iVar4; int in_stack_00000004; undefined4 uVar5; undefined4 uVar6; undefined4 uVar7; undefined4 uVar8; void *pvVar9; undefined4 uVar10; undefined4 uVar11; int *piVar12; undefined4 *puVar13; undefined *puVar14; undefined4 uVar15; undefined4 local_40; uint local_3c; undefined4 local_38; undefined4 local_30; undefined2 local_2c; undefined4 local_2a; int local_26; undefined4 local_22; HWND local_1e; undefined4 local_1a; undefined2 local_16; undefined4 local_c; void *local_8; if (DAT_00462f48 == 0) { *(undefined4 *)(in_stack_00000004 + 0x32) = *(undefined4 *)(in_stack_00000004 + 0x28); *(undefined4 *)(in_stack_00000004 + 0x36) = *(undefined4 *)(in_stack_00000004 + 0x24); *(undefined4 *)(in_stack_00000004 + 0x3e) = 0; if (*(short *)(in_stack_00000004 + 0x18) == 0) { *(undefined4 *)(in_stack_00000004 + 0x42) = 0; *(undefined4 *)(in_stack_00000004 + 0x46) = 0; } else { *(undefined4 *)(in_stack_00000004 + 0x42) = 0xc; *(undefined4 *)(in_stack_00000004 + 0x46) = 0xffffffff; } waveOutOpen(&hwo_00463064,0xffffffff,*(LPCWAVEFORMATEX *)(in_stack_00000004 + 0x20), (DWORD_PTR)dwCallback_00469e44,0,0x10000); FUN_004458d8(); waveOutPrepareHeader(hwo_00463064,(LPWAVEHDR)(in_stack_00000004 + 0x32),0x20); FUN_004458d8(); waveOutWrite(hwo_00463064,(LPWAVEHDR)(in_stack_00000004 + 0x32),0x20); FUN_004458d8(); } else if (DAT_00462f48 == 1) { local_2c = 0x18; local_2a = _WaveMixHandle; local_26 = (int)*(short *)(in_stack_00000004 + 0x1c); local_22 = *(undefined4 *)(in_stack_00000004 + 0x2e); local_1e = dwCallback_00469e44; local_1a = 5; local_16 = 0xffff; if (*(short *)(in_stack_00000004 + 0x18) == 0) { local_16 = 0; } uVar15 = (*_pWaveMixPlay)(); FUN_004457b0(uVar15); } else if (DAT_00462f48 == 2) { local_8 = (void *)0x0; local_c = 0; iVar4 = *(short *)(in_stack_00000004 + 0x1c) * 0x10; Memset(&local_40,0,0x14); local_40 = 0x14; local_3c = local_3c | 2; local_38 = *(undefined4 *)(in_stack_00000004 + 0x24); local_30 = *(undefined4 *)(in_stack_00000004 + 0x20); uVar15 = 0; puVar14 = &DAT_00469e54 + iVar4; puVar13 = &local_40; piVar12 = DAT_00469e48; iVar1 = (**(code **)(*DAT_00469e48 + 0xc))(); if (iVar1 == 0) { (**(code **)(**(int **)(&DAT_00469e54 + iVar4) + 0x2c))(); Memcpy(local_8,*(void **)(in_stack_00000004 + 0x28),*(uint *)(in_stack_00000004 + 0x24)); uVar11 = 0; uVar10 = 0; uVar15 = *(undefined4 *)(in_stack_00000004 + 0x24); uVar8 = *(undefined4 *)(&DAT_00469e54 + iVar4); pvVar9 = local_8; (**(code **)(**(int **)(&DAT_00469e54 + iVar4) + 0x4c))(); uVar3 = (uint)(*(short *)(in_stack_00000004 + 0x18) != 0); uVar7 = 0; uVar6 = 0; uVar5 = *(undefined4 *)(&DAT_00469e54 + iVar4); iVar1 = (**(code **)(**(int **)(&DAT_00469e54 + iVar4) + 0x30))(); if (iVar1 != 0) { pcVar2 = GetWinapiStringAlloc(0x4e9e); ShowAlertMessage(pcVar2,uVar5,uVar6,uVar7,uVar3,uVar8,pvVar9,uVar15,uVar10,uVar11); TurboFree_(pcVar2); } } else { pcVar2 = GetWinapiStringAlloc(0x4ea5); ShowAlertMessage(pcVar2,piVar12,puVar13,puVar14,uVar15); TurboFree_(pcVar2); } } return; } void __cdecl FUN_004465a5(undefined2 param_1,undefined2 param_2,ushort param_3) { short sVar1; undefined4 in_EAX; int iVar2; if (DAT_00469d8c != 0) { iVar2 = FUN_00445b61(CONCAT22((short)((uint)in_EAX >> 0x10),param_1),1); if (iVar2 != 0) { if ((*(short *)(iVar2 + 0x16) != 0) && ((param_3 & 2) != 0)) { FUN_00446b08(); } if (*(short *)(iVar2 + 0x16) == 0) { sVar1 = FUN_00445a67(); if (sVar1 != -1) { *(short *)(iVar2 + 0x1c) = sVar1; (&DAT_00469e4c)[sVar1 * 8] = param_1; *(undefined2 *)(&DAT_00469e4e + sVar1 * 0x10) = param_2; *(undefined2 *)(iVar2 + 0x14) = param_2; *(int *)(&DAT_00469e50 + sVar1 * 0x10) = iVar2; *(ushort *)(iVar2 + 0x18) = param_3; *(undefined2 *)(iVar2 + 0x16) = 1; *(undefined2 *)(iVar2 + 0x1a) = 0; FUN_0044639c(); } } } } return; } void FUN_00446654(void) { short sVar1; MCIERROR MVar2; int in_stack_00000004; char local_510 [1260]; undefined1 local_24 [4]; undefined2 local_20; undefined4 local_1c; char *local_18; HWND local_10; undefined4 local_c; undefined4 local_8; Strcpy(local_510,s_MIDI__00462f4c); FUN_0044feec(); local_18 = local_510; local_1c = 0x20b; MVar2 = mciSendCommandA(0,0x803,0x202,(DWORD_PTR)local_24); sVar1 = FUN_00445924((short)MVar2); if (sVar1 == 0) { *(undefined2 *)(in_stack_00000004 + 0x2c) = local_20; local_10 = dwCallback_00469e44; local_8 = 0; local_c = 0; MVar2 = mciSendCommandA((uint)*(ushort *)(in_stack_00000004 + 0x2c),0x806,1,(DWORD_PTR)&local_10 ); FUN_00445924((short)MVar2); } else { *(ushort *)(in_stack_00000004 + 0x1a) = *(ushort *)(in_stack_00000004 + 0x1a) | 0x2000; } return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_004466f9(void) { int iVar1; undefined4 in_stack_00000004; undefined2 in_stack_00000008; iVar1 = FUN_00445b61(in_stack_00000004,4); if ((DAT_00469d8e != 0) && (iVar1 != 0)) { FUN_00446bfe(); DAT_0046305c = (short)in_stack_00000004; *(undefined2 *)(iVar1 + 0x14) = 1; *(undefined2 *)(iVar1 + 0x18) = in_stack_00000008; *(undefined2 *)(iVar1 + 0x1a) = 0; *(undefined2 *)(iVar1 + 0x1c) = 0; FUN_00446654(); if ((*(ushort *)(iVar1 + 0x1a) & 0x2000) == 0) { *(undefined2 *)(iVar1 + 0x16) = 1; _DAT_00469e4e = 1; DAT_00469d98 = iVar1; DAT_00469e4c = (short)in_stack_00000004; _DAT_00469e50 = iVar1; } } return; } void FUN_00446778(void) { short sVar1; undefined2 extraout_var; int iVar2; undefined2 in_stack_00000004; if (DAT_00469d90 != 0) { FUN_00446bc3(); iVar2 = FUN_00445b61(CONCAT22(extraout_var,in_stack_00000004),2); if (iVar2 != 0) { sVar1 = FUN_00445a67(); if (sVar1 != -1) { *(short *)(iVar2 + 0x1c) = sVar1; (&DAT_00469e4c)[sVar1 * 8] = in_stack_00000004; *(undefined2 *)(&DAT_00469e4e + sVar1 * 0x10) = 1000; *(undefined2 *)(iVar2 + 0x14) = 1000; *(int *)(&DAT_00469e50 + sVar1 * 0x10) = iVar2; *(undefined2 *)(iVar2 + 0x18) = 0; *(undefined2 *)(iVar2 + 0x16) = 1; *(undefined2 *)(iVar2 + 0x1a) = 0; FUN_0044639c(); } } } return; } void FUN_00446803(void) { return; } void FUN_00446808(void) { int iVar1; undefined4 in_stack_00000004; if (DAT_00469d90 != 0) { FUN_00446bc3(); FUN_004461ff(); iVar1 = FUN_00445b61(in_stack_00000004,2); *(ushort *)(iVar1 + 0x10) = *(ushort *)(iVar1 + 0x10) | 4; FUN_00446778(); DAT_00463060 = (undefined2)in_stack_00000004; } return; } void FUN_00446846(void) { int iVar1; short sVar2; short sVar3; void *in_stack_00000004; FUN_004468a4(); sVar2 = 0; do { sVar3 = sVar2 + 1; iVar1 = (int)sVar2; sVar2 = sVar3; } while (*(short *)((int)in_stack_00000004 + iVar1 * 2) != -1); DAT_00469e9c = PoolAlloc(sVar3 * 2); Memcpy(DAT_00469e9c,in_stack_00000004,sVar3 * 2); DAT_00469ea0 = 0; FUN_00446808(); return; } void FUN_004468a4(void) { if (DAT_00469e9c != (void *)0x0) { if (*(short *)((int)DAT_00469e9c + DAT_00469ea0 * 2) != -1) { FUN_00446c72(); } PoolFree(DAT_00469e9c); DAT_00469e9c = (void *)0x0; } return; } void FUN_004468ed(void) { short sVar1; short sVar2; undefined4 uVar3; undefined4 uVar4; if (DAT_00469e9c != 0) { uVar3 = CONCAT22(DAT_00469ea0 >> 0xf,*(undefined2 *)(DAT_00469e9c + DAT_00469ea0 * 2)); sVar2 = FUN_0044705a(); sVar1 = DAT_00469ea0; if (sVar2 == 0) { DAT_00469ea0 = DAT_00469ea0 + 1; uVar4 = CONCAT22(sVar1 >> 0xf,*(undefined2 *)(DAT_00469e9c + sVar1 * 2)); FUN_00446c72(uVar4,DAT_00469e9c,uVar3); if (*(short *)(DAT_00469e9c + DAT_00469ea0 * 2) != -1) { uVar3 = CONCAT22(DAT_00469ea0 >> 0xf,*(undefined2 *)(DAT_00469e9c + DAT_00469ea0 * 2)); FUN_00446808(uVar3,DAT_00469e9c,uVar4,uVar3); return; } FUN_004468a4(); } } return; } void FUN_00446967(void) { undefined4 uVar1; BOOL BVar2; int iVar3; int in_stack_00000004; tagMSG local_20; if (*(short *)(in_stack_00000004 + 0x16) != 0) { if (DAT_00462f48 == 0) { if (in_stack_00000004 != 0) { waveOutReset(hwo_00463064); FUN_004458d8(); waveOutUnprepareHeader(hwo_00463064,(LPWAVEHDR)(in_stack_00000004 + 0x32),0x20); FUN_004458d8(); waveOutClose(hwo_00463064); FUN_004458d8(); } do { BVar2 = PeekMessageA(&local_20,(HWND)0x0,0x3bd,0x3bd,3); } while (BVar2 != 0); } else if (DAT_00462f48 == 1) { (*_pWaveMixActivate)(); uVar1 = (*_pWaveMixFlushChannel)(); FUN_004457b0(uVar1); (*_pWaveMixActivate)(); do { BVar2 = PeekMessageA(&local_20,(HWND)0x0,0x3bd,0x3bd,3); } while (BVar2 != 0); } else if (DAT_00462f48 == 2) { iVar3 = *(short *)(in_stack_00000004 + 0x1c) * 0x10; (**(code **)(**(int **)(&DAT_00469e54 + iVar3) + 0x48))(); (**(code **)(**(int **)(&DAT_00469e54 + iVar3) + 8))(); } } return; } void FUN_00446a73(undefined4 param_1,undefined4 param_2,undefined4 param_3,int param_4) { MCIERROR MVar1; undefined4 local_8; if ((*(ushort *)(param_4 + 0x1a) & 0x2000) == 0) { local_8 = param_3; MVar1 = mciSendCommandA((uint)*(ushort *)(param_4 + 0x2c),0x808,2,(DWORD_PTR)&local_8); FUN_00445924((short)MVar1); MVar1 = mciSendCommandA((uint)*(ushort *)(param_4 + 0x2c),0x804,2,(DWORD_PTR)&local_8); FUN_00445924((short)MVar1); } return; } void FUN_00446ac0(void) { int in_stack_00000004; short in_stack_00000008; if ((in_stack_00000004 != 0) && (*(short *)(in_stack_00000004 + 0x16) != 0)) { if (in_stack_00000008 != 0) { FUN_00446967(); } (&DAT_00469e4c)[*(short *)(in_stack_00000004 + 0x1c) * 8] = 0xffff; *(undefined4 *)(&DAT_00469e50 + *(short *)(in_stack_00000004 + 0x1c) * 0x10) = 0; *(undefined2 *)(in_stack_00000004 + 0x16) = 0; } return; } void FUN_00446b08(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined2 param_4) { int iVar1; iVar1 = FUN_00445b61(CONCAT22((short)((uint)param_1 >> 0x10),param_4),1); if ((DAT_00469d8c != 0) && (iVar1 != 0)) { FUN_00446ac0(); } return; } void FUN_00446b35(void) { int in_stack_00000004; DAT_00469e4c = 0xffff; *(undefined2 *)(in_stack_00000004 + 0x16) = 0; return; } void __stdcall FUN_00446b4c(undefined2 param_1) { undefined4 in_EAX; int iVar1; undefined4 extraout_ECX; undefined4 extraout_EDX; iVar1 = FUN_00445b61(CONCAT22((short)((uint)in_EAX >> 0x10),param_1),4); if (((iVar1 != 0) && (*(short *)(iVar1 + 0x16) != 0)) && (DAT_00469d8e != 0)) { *(undefined2 *)(iVar1 + 0x16) = 2; FUN_00446a73(iVar1,extraout_EDX,extraout_ECX,iVar1); FUN_00446b35(); DAT_0046305c = 0; } return; } void FUN_00446b96(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined2 param_4) { int iVar1; iVar1 = FUN_00445b61(CONCAT22((short)((uint)param_1 >> 0x10),param_4),2); if ((DAT_00469d90 != 0) && (iVar1 != 0)) { FUN_00446ac0(); } return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_00446bc3(void) { short sVar1; for (sVar1 = 1; sVar1 < _DAT_00469d96; sVar1 = sVar1 + 1) { if ((&DAT_00469e4c)[sVar1 * 8] != -1) { FUN_00446ac0(); } } return; } void FUN_00446bfe(void) { FUN_00446b4c(DAT_0046305c); return; } void FUN_00446c0c(void) { FUN_00446b96(); return; } void FUN_00446c72(void) { int iVar1; undefined4 in_stack_00000004; iVar1 = FUN_00445b61(in_stack_00000004,2); if ((iVar1 != 0) && ((*(byte *)(iVar1 + 0x10) & 4) != 0)) { DAT_00463060 = 0; FUN_00446367((short)in_stack_00000004); } return; } void FUN_00446ca1(void) { undefined4 in_EAX; int iVar1; iVar1 = FUN_00445b61(CONCAT22((short)((uint)in_EAX >> 0x10),DAT_00463060),2); if ((iVar1 != 0) && ((*(byte *)(iVar1 + 0x10) & 4) != 0)) { FUN_00446c72(); } return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_00446ccc(void) { short sVar1; for (sVar1 = 1; sVar1 < _DAT_00469d96; sVar1 = sVar1 + 1) { if ((&DAT_00469e4c)[sVar1 * 8] != -1) { FUN_00446ac0(); } } FUN_00446bfe(); FUN_00446ca1(); return; } void FUN_00446d11(void) { undefined4 uVar1; int iVar2; int in_stack_00000004; if (DAT_00462f48 == 0) { waveOutPause(hwo_00463064); FUN_004458d8(); } else if (DAT_00462f48 == 1) { uVar1 = (*_pWaveMixActivate)(); FUN_004457b0(uVar1); } else if (DAT_00462f48 == 2) { iVar2 = *(short *)(in_stack_00000004 + 0x1c) * 0x10; uVar1 = (**(code **)(**(int **)(&DAT_00469e54 + iVar2) + 0x10))(); *(undefined4 *)(&DAT_00469e58 + iVar2) = uVar1; (**(code **)(**(int **)(&DAT_00469e54 + iVar2) + 0x48))(); } return; } void FUN_00446dac(void) { undefined4 uVar1; int iVar2; int in_stack_00000004; if (DAT_00462f48 == 0) { waveOutRestart(hwo_00463064); FUN_004458d8(); return; } if (DAT_00462f48 != 1) { if (DAT_00462f48 != 2) { return; } iVar2 = *(short *)(in_stack_00000004 + 0x1c) * 0x10; (**(code **)(**(int **)(&DAT_00469e54 + iVar2) + 0x34))(); (**(code **)(**(int **)(&DAT_00469e54 + iVar2) + 0x30))(); return; } uVar1 = (*_pWaveMixActivate)(); FUN_004457b0(uVar1); return; } void FUN_00446e32(void) { MCIERROR MVar1; int in_stack_00000004; undefined4 local_8; if ((*(ushort *)(in_stack_00000004 + 0x1a) & 0x2000) == 0) { local_8 = 0; MVar1 = mciSendCommandA((uint)*(ushort *)(in_stack_00000004 + 0x2c),0x809,2,(DWORD_PTR)&local_8) ; FUN_00445924((short)MVar1); } return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_00446e68(void) { undefined4 in_EAX; int iVar1; if (_DAT_00463058 == 0) { iVar1 = FUN_00445b61(CONCAT22((short)((uint)in_EAX >> 0x10),DAT_0046305c),4); if ((iVar1 != 0) && (*(short *)(iVar1 + 0x16) != 0)) { FUN_00446e32(); } } _DAT_00463058 = _DAT_00463058 + 1; return; } void FUN_00446e9d(void) { MCIERROR MVar1; int in_stack_00000004; HWND local_10 [3]; if ((*(ushort *)(in_stack_00000004 + 0x1a) & 0x2000) == 0) { local_10[0] = dwCallback_00469e44; MVar1 = mciSendCommandA((uint)*(ushort *)(in_stack_00000004 + 0x2c),0x806,1,(DWORD_PTR)local_10) ; FUN_00445924((short)MVar1); } return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_00446ed9(undefined4 param_1,undefined4 param_2,undefined4 param_3,short param_4) { int iVar1; _DAT_00463058 = _DAT_00463058 + -1; if ((param_4 != 0) || (_DAT_00463058 < 0)) { _DAT_00463058 = 0; } if (_DAT_00463058 == 0) { iVar1 = FUN_00445b61(CONCAT22((short)((uint)param_1 >> 0x10),DAT_0046305c),4); if ((iVar1 != 0) && (*(short *)(iVar1 + 0x16) != 0)) { FUN_00446e9d(); } } return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_00446f2c(void) { return; } undefined4 FUN_00446f5b(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined2 param_4) { int iVar1; undefined4 uVar2; iVar1 = FUN_00445b61(CONCAT22((short)((uint)param_1 >> 0x10),param_4),3); if ((iVar1 == 0) || (*(short *)(iVar1 + 0x16) == 0)) { uVar2 = 0; } else { uVar2 = 1; } return uVar2; } void FUN_00446fc9(void) { FUN_00446f5b(); return; } undefined4 FUN_0044701f(void) { short in_stack_00000004; if ((((DAT_00469d8e != 0) && (DAT_00469d98 != 0)) && (*(short *)(DAT_00469d98 + 0xc) == in_stack_00000004)) && (*(short *)(DAT_00469d98 + 0x16) != 0)) { return CONCAT22((short)((uint)DAT_00469d98 >> 0x10),1); } return 0; } void FUN_0044705a(void) { FUN_00446f5b(); return; } void FUN_004470b0(void) { short in_stack_00000004; if ((in_stack_00000004 != DAT_00469d8c) && (DAT_00469d8c = in_stack_00000004, in_stack_00000004 == 0)) { FUN_00446bc3(); } return; } void FUN_004470d1(undefined4 param_1,undefined4 param_2,undefined4 param_3,short param_4) { undefined2 uVar1; int iVar2; uVar1 = DAT_0046305c; DAT_0046305c = uVar1; if (DAT_00469d8e != param_4) { if (DAT_00469d8e == 0) { DAT_00469d8e = 1; iVar2 = FUN_00445b61(CONCAT22((short)((uint)param_1 >> 0x10),DAT_0046305c),4); if (iVar2 != 0) { FUN_004466f9(); return; } } else { FUN_00446bfe(); DAT_00469d8e = 0; DAT_0046305c = uVar1; } } return; } undefined2 FUN_0044713f(void) { return DAT_00469d8e; } undefined2 FUN_00447146(void) { return DAT_00469d8c; } undefined2 FUN_0044714d(void) { return DAT_00469d90; } void FUN_00447154(void) { short in_stack_00000004; if ((in_stack_00000004 != DAT_00469d90) && (DAT_00469d90 = in_stack_00000004, in_stack_00000004 == 0)) { FUN_00446c0c(); } return; } void FUN_00447176(void) { int iVar1; char local_204 [256]; CHAR local_104 [256]; GetWindowsDirectoryA(local_104,0x90); Strcpy(local_204,local_104); FUN_0044feec(); FUN_0044feec(); iVar1 = _lopen(local_204,0); if (iVar1 < 0) { Strcpy(local_204,local_104); FUN_0044feec(); FUN_0044feec(); iVar1 = _lopen(local_204,0); } if (iVar1 < 0) { GetCurrentDirectoryA(0x90,local_204); FUN_0044feec(); FUN_0044feec(); _lopen(local_204,0); } return; } // WARNING: Heritage AFTER dead removal. Example location: EAX : 0x0044740a // WARNING: Globals starting with '_' overlap smaller symbols at the same address // WARNING: Restarted to delay deadcode elimination for space: register uint FUN_0044727e(void) { bool bVar1; undefined4 uVar2; UINT UVar3; LONG LVar4; UINT UVar5; int iVar6; uint uVar7; int iVar8; short sVar9; short in_stack_00000004; char acStackY_8108 [32692]; tagMIDIOUTCAPSA local_13c; char local_108 [258]; short local_6; DAT_00469d88 = 0; if (in_stack_00000004 != 0) { if (in_stack_00000004 == 1) { UVar3 = waveOutGetNumDevs(); if (UVar3 != 0) { DAT_00469d88 = DAT_00469d88 | 1; DAT_00462f48 = 0; bVar1 = LoadProcsForWAVEMIX(); if ((short)CONCAT31((int3)(UVar3 >> 8),bVar1) != 0) { DAT_00462f48 = 1; } } goto LAB_00447341; } if (in_stack_00000004 != 2) goto LAB_00447341; DAT_00469d88 = 1; uVar2 = FUN_00445cd8(); if ((short)uVar2 == 0) { DAT_00462f48 = 0; } else { iVar6 = (*DAT_00469d9c)(); if (iVar6 == 0) { DAT_00462f48 = 2; } else { DAT_00462f48 = 0; } } } UVar3 = waveOutGetNumDevs(); if (UVar3 != 0) { DAT_00469d88 = DAT_00469d88 | 1; DAT_00462f48 = 0; } LAB_00447341: UVar3 = midiOutGetNumDevs(); if (((short)UVar3 != 0) && (UVar3 = midiOutGetDevCapsA(0xffffffff,&local_13c,0x34), UVar3 != 6)) { DAT_00469d88 = DAT_00469d88 | 2; UVar3 = FUN_00447176(); if ((int)UVar3 < 0) { DAT_00469d88 = DAT_00469d88 & 0xfffd; } else { _DAT_00462f42 = 1; LVar4 = _llseek(UVar3,6,0); if ((((LVar4 == 6) && (UVar5 = _lread(UVar3,&local_6,2), UVar5 == 2)) && (LVar4 = _llseek(UVar3,(local_6 + -1) * 0x36 + 0x12,0), LVar4 != 0)) && (UVar5 = _lread(UVar3,local_108,0x10), UVar5 == 0x10)) { sVar9 = 0; do { iVar6 = (int)local_108[sVar9]; uVar7 = ToUpper(iVar6); iVar8 = (int)sVar9; local_108[iVar8] = (char)uVar7; sVar9 = sVar9 + 1; } while (sVar9 < 0x10); iVar6 = FUN_00450108(uVar7,iVar8,iVar6); if (iVar6 == 0) { iVar6 = FUN_00450108(); if (iVar6 == 0) { iVar6 = FUN_00450108(); if (iVar6 == 0) { iVar6 = FUN_00450108(); if (iVar6 == 0) { iVar6 = FUN_00450108(); if (iVar6 == 0) { iVar6 = FUN_00450108(); if (iVar6 != 0) { _DAT_00462f42 = 0; } } else { _DAT_00462f42 = 0; } } else { _DAT_00462f42 = 0; } } else { _DAT_00462f42 = 0; } } else { _DAT_00462f42 = 0; } } else { _DAT_00462f42 = 0; } } UVar3 = _lclose(UVar3); } } return CONCAT22((short)(UVar3 >> 0x10),DAT_00469d88); } int FUN_004474c6(uint param_1,undefined4 param_2,uint param_3,ushort param_4) { void *pvVar1; short sVar2; pvVar1 = Resource::Load(param_4,_pINTS); sVar2 = 0; while ((*(short *)((int)pvVar1 + sVar2 * 2) != -1 && (*(short *)((int)pvVar1 + sVar2 * 2) != 0))) { FUN_00446172(); FUN_00445b61(CONCAT22(sVar2 >> 0xf,*(undefined2 *)((int)pvVar1 + sVar2 * 2)),1); sVar2 = sVar2 + 1; } return (int)pvVar1; } undefined4 FUN_0044751f(undefined4 param_1,undefined4 param_2,undefined4 param_3,int param_4) { undefined2 uVar1; undefined4 extraout_EDX; short sVar2; if (param_4 != 0) { sVar2 = 0; while ((*(short *)(param_4 + sVar2 * 2) != -1 && (*(short *)(param_4 + sVar2 * 2) != 0))) { uVar1 = *(undefined2 *)(param_4 + sVar2 * 2); param_3 = CONCAT22(sVar2 >> 0xf,uVar1); FUN_004462d4(uVar1); sVar2 = sVar2 + 1; param_2 = extraout_EDX; } FUN_0044073c((int)sVar2,param_2,param_3,param_4); } return 0; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_0044755f(void) { undefined2 in_stack_00000004; _DAT_00462f42 = in_stack_00000004; return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_00447578(undefined4 param_1,undefined4 param_2,int param_3) { int iVar1; short sVar2; if (DAT_00462f48 != 0) { if (DAT_00462f48 == 1) { if ((_DAT_00469d8a != 0) && (_DAT_0046305a == 0)) { (*_pWaveMixPump)(); } } else if (DAT_00462f48 == 2) { for (sVar2 = 1; sVar2 < _DAT_00469d96; sVar2 = sVar2 + 1) { if (((((&DAT_00469e4c)[sVar2 * 8] != -1) && (*(short *)(*(int *)(&DAT_00469e50 + sVar2 * 0x10) + 0x18) == 0)) && (iVar1 = (**(code **)(**(int **)(&DAT_00469e54 + sVar2 * 0x10) + 0x24))(), iVar1 == 0)) && (param_3 != 1)) { FUN_00446ac0(); } } } } FUN_004468ed(); return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_00447634(undefined4 param_1,undefined4 param_2,undefined4 param_3,short param_4) { undefined4 uVar1; undefined4 extraout_EDX; short sVar2; _DAT_0046305a = _DAT_0046305a + -1; if (param_4 != 0) { _DAT_0046305a = 0; } if (_DAT_0046305a == 0) { for (sVar2 = 1; sVar2 < _DAT_00469d96; sVar2 = sVar2 + 1) { uVar1 = param_3; if ((&DAT_00469e4c)[sVar2 * 8] != -1) { uVar1 = *(undefined4 *)(&DAT_00469e50 + sVar2 * 0x10); FUN_00446dac(sVar2 * 0x10,param_2,param_3); param_2 = extraout_EDX; } param_3 = uVar1; } FUN_00446ed9(); } if (_DAT_0046305a < 0) { _DAT_0046305a = 0; } return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_004476a9(void) { short sVar1; if (_DAT_0046305a == 0) { for (sVar1 = 1; sVar1 < _DAT_00469d96; sVar1 = sVar1 + 1) { if ((&DAT_00469e4c)[sVar1 * 8] != -1) { FUN_00446d11(); } } FUN_00446e68(); } _DAT_0046305a = _DAT_0046305a + 1; return; } uint FUN_004476f4(void) { int in_stack_00000004; if (in_stack_00000004 == 0) { return 0; } return *(uint *)(in_stack_00000004 + 0x24) / 0x16; } void FUN_00447710(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined2 param_4) { FUN_00445b61(CONCAT22((short)((uint)param_1 >> 0x10),param_4),2); FUN_004476f4(); return; } void FUN_0044772b(undefined4 param_1,undefined4 param_2,undefined4 param_3,undefined2 param_4) { FUN_00445b61(CONCAT22((short)((uint)param_1 >> 0x10),param_4),1); FUN_004476f4(); return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_00447746(void) { FUN_00446ccc(); _DAT_00463058 = 0; _DAT_0046305a = 0; DAT_0046305c = 0xffff; return; } void FUN_00447763(void) { int iVar1; char *in_stack_00000004; iVar1 = FUN_0044ffac(); if ((short)iVar1 < 0x100) { Strcpy(s_MIDI__00462f4c,in_stack_00000004); if (in_stack_00000004[(short)iVar1 + -1] != '\\') { FUN_0044feec(); } } return; } void FUN_004477a9(void) { undefined2 uVar1; short sVar2; undefined4 extraout_EDX; undefined4 in_stack_00000004; undefined4 uVar3; uVar3 = in_stack_00000004; uVar1 = FUN_004461ff(); FUN_00446778(uVar1,extraout_EDX,uVar3); while( true ) { sVar2 = FUN_0044705a(); if (sVar2 == 0) break; FUN_0042681e(); } FUN_00446367((short)in_stack_00000004); return; } void FUN_004477db(void) { short sVar1; undefined4 extraout_EDX; undefined4 in_stack_00000004; undefined4 uVar2; FUN_00446808(); while( true ) { uVar2 = in_stack_00000004; sVar1 = FUN_0044705a(); if (sVar1 == 0) break; FUN_0042681e(); } FUN_00446c72(0,extraout_EDX,uVar2,in_stack_00000004); return; } void FUN_00447806(void) { return; } void FUN_0044780b(void) { short sVar1; while( true ) { sVar1 = FUN_00446fc9(); if (sVar1 == 0) break; FUN_0042681e(); } return; } void FUN_00447828(void) { undefined4 uVar1; while( true ) { uVar1 = FUN_0044701f(); if ((short)uVar1 == 0) break; FUN_0042681e(); } return; } void FUN_00447845(void) { short sVar1; while( true ) { sVar1 = FUN_0044705a(); if (sVar1 == 0) break; FUN_0042681e(); } return; } void FUN_00447868(void) { DlistNode *node; DlistNode *pDVar1; short in_stack_00000004; FUN_00446ca1(); pDVar1 = DlistHead(DAT_00469d84); while (node = pDVar1, node != (DlistNode *)0x0) { pDVar1 = DlistNext(node); if (in_stack_00000004 <= *(short *)((int)&node[10].next + 2)) { if (*(short *)((int)&node[1].prev + 2) == 4) { FUN_004462e8(CONCAT22((short)((uint)pDVar1 >> 0x10),*(undefined2 *)&node[1].prev)); } else { FUN_00446225(*(undefined2 *)&node[1].prev,*(ushort *)((int)&node[1].prev + 2)); } } } DAT_00469e9c = 0; return; } void FUN_004478cf(void) { DlistNode *node; char *pcVar1; DlistNode *pDVar2; undefined4 uVar3; pcVar1 = GetWinapiStringAlloc(0x4e9f); ShowAlertMessage(pcVar1); TurboFree_(pcVar1); pDVar2 = (DlistNode *)DlistTail(DAT_00469d84); while (node = pDVar2, node != (DlistNode *)0x0) { pDVar2 = (DlistNode *)DlistPrev(node); if (((uint)node[1].prev & 0x30000) != 0) { DAT_00462f48 = 1; FUN_00446225(*(undefined2 *)&node[1].prev,*(ushort *)((int)&node[1].prev + 2)); DAT_00462f48 = 0; FUN_0044600b(); } } DAT_00462f48 = 1; uVar3 = (*_pWaveMixCloseChannel)(); FUN_004457b0(uVar3); (*_pWaveMixCloseSession)(); FreeLibraryForWAVEMIX(); DAT_00462f48 = 0; FUN_0044b858(); return; } // WARNING: Heritage AFTER dead removal. Example location: EAX : 0x00447b2f // WARNING: Globals starting with '_' overlap smaller symbols at the same address // WARNING: Restarted to delay deadcode elimination for space: register void Puzzles::SetParametersForSimpleMachine_(void) { uint uVar1; undefined4 uVar2; int iVar3; uint extraout_ECX; undefined4 extraout_EDX; undefined4 extraout_EDX_00; undefined4 extraout_EDX_01; short sVar4; int iVar5; undefined2 *puVar6; undefined1 *puVar7; _DAT_0046a28c = 0; _DAT_0046a28a = 0; DAT_00469742 = 0x1f74; DAT_00469744 = 0x1f5c; DAT_00469746 = 0x1f5b; DAT_00469748 = 0x4a75; DAT_0046974a = 0x1fa7; DAT_0046974c = 0x1f79; DAT_0046974e = 0x1f77; DAT_00469750 = 0x1f78; DAT_00469752 = 0x4a5e; DAT_00469754 = 0x1f75; DAT_00469756 = 0x1f7d; DAT_00469758 = 0x1f7e; DAT_0046975a = 0x1f73; DAT_0046975c = 0x4a77; DAT_0046975e = 0xffff; puVar6 = &DAT_00469742; uVar1 = FUN_0043ff91(&DAT_00469742); FUN_00440113(uVar1,extraout_EDX,(uint)puVar6); puVar7 = &LAB_0044afcd; uVar1 = FUN_0044c950(); FUN_00431024(uVar1,extraout_EDX_00,(uint)puVar7,16000); DAT_0046a2d4 = FUN_00412ac4(16000); uVar1 = FUN_00413cf4(); FUN_00412d0c(uVar1,extraout_EDX_01,extraout_ECX,DAT_0046a2d4); DAT_0046a300 = FUN_00412ac4(0x3ec2); FUN_0041029e(); SetParametersForSimpleMachine(currentPuzzle); FUN_0044a970(); FUN_0044a9f7(); FUN_00448097(); FUN_0043fef9(DAT_0046333e); DAT_0046a304 = FUN_00412ac4(0x3aa1); FUN_0041395c(DAT_0046a304,0x18e,0x143,10); DAT_0046a308 = FUN_00412ac4(0x3a9d); FUN_0041395c(DAT_0046a308,0x10,0x19,10); DAT_0046a30c = FUN_00412ac4(0x3aa2); FUN_0041395c(DAT_0046a30c,0x10,0x120,10); iVar5 = 0; do { iVar3 = iVar5 + 0x3eca; uVar2 = FUN_00412ac4((ushort)iVar3); sVar4 = (short)iVar5; (&DAT_0046a310)[sVar4] = uVar2; iVar3 = FUN_0043b58e(uVar2,(int)sVar4,iVar3); (&DAT_0046a334)[sVar4] = iVar3; *(undefined2 *)((&DAT_0046a334)[sVar4] + 0x12) = 0; iVar5 = iVar5 + 1; } while ((short)iVar5 < 9); iVar5 = 0; do { iVar3 = iVar5 + 0x3ec2; uVar2 = FUN_00412ac4((ushort)iVar3); sVar4 = (short)iVar5; (&DAT_0046a290)[sVar4] = uVar2; iVar3 = FUN_0043b58e(uVar2,(int)sVar4,iVar3); (&DAT_0046a2b0)[sVar4] = iVar3; iVar5 = iVar5 + 1; } while ((short)iVar5 < 8); FUN_0044b0dc(); DAT_00469544 = &LAB_0044b1de; FUN_0043139c(); return; } // WARNING: Heritage AFTER dead removal. Example location: EAX : 0x00447bf6 // WARNING: Restarted to delay deadcode elimination for space: register void FUN_00447bab(uint param_1,undefined4 param_2,uint param_3) { undefined4 uVar1; uint uVar2; uint extraout_ECX; undefined4 extraout_EDX; undefined4 extraout_EDX_00; undefined4 extraout_EDX_01; undefined4 extraout_EDX_02; undefined4 extraout_EDX_03; short sVar3; undefined2 *puVar4; if (DAT_0046976c != 0) { param_3 = CONCAT22((short)(param_1 >> 0x10),DAT_0046976c); FUN_00446367(DAT_0046976c); DAT_0046976c = 0; param_2 = extraout_EDX; } sVar3 = 0; do { uVar2 = (&DAT_0046a290)[sVar3]; uVar1 = FUN_00412d0c((int)sVar3,param_2,param_3,uVar2); (&DAT_0046a290)[sVar3] = uVar1; param_3 = (&DAT_0046a2b0)[sVar3]; FUN_0043b69e((int)sVar3,(int)sVar3,uVar2); sVar3 = sVar3 + 1; param_2 = extraout_EDX_00; } while (sVar3 < 8); sVar3 = 0; uVar1 = extraout_EDX_00; do { uVar2 = (&DAT_0046a310)[sVar3]; uVar1 = FUN_00412d0c((int)sVar3,uVar1,param_3,uVar2); (&DAT_0046a310)[sVar3] = uVar1; param_3 = (&DAT_0046a334)[sVar3]; FUN_0043b69e((int)sVar3,(int)sVar3,uVar2); sVar3 = sVar3 + 1; uVar1 = extraout_EDX_01; } while (sVar3 < 9); DAT_00469544 = 0; FUN_0043b9d2(); puVar4 = &DAT_00469742; uVar2 = FUN_0043ffba(); FUN_004400eb(uVar2,extraout_EDX_02,(uint)puVar4); DAT_0046976a = DAT_0046333e; FUN_0044c950(); uVar2 = FUN_00416f98(); FUN_0044868d(uVar2,extraout_EDX_03,extraout_ECX); FUN_004102d7(); FUN_00440695(DAT_0046977e,&_TEXT37); PoolFree(DAT_00469ea4); FUN_00431348(); return; } void FUN_00448097(void) { int iVar1; short sVar2; FUN_00416f98(); PickapuzzleHitTest_(0x10,0x19,0x3a,0x1c,5,FUN_004484a5); PickapuzzleHitTest_(0x18e,0x144,100,0x32,5,(ClickHandler *)&LAB_00448061); PickapuzzleHitTest_(0x10,0x120,0x3a,0x19,5,(ClickHandler *)&LAB_00448450); PickapuzzleHitTest_(0,0,0x200,0x180,0,(ClickHandler *)&LAB_00448497); DAT_00469eb0 = PickapuzzleHitTest_(0x6c,0x1f,0x182,0x108,1,FUN_00448280); *(undefined4 *)(DAT_00469eb0 + 0x1e) = 0x66; DAT_00469eac = PickapuzzleHitTest_(6,0x5d,0x4d,0xbd,1,FUN_00448280); *(undefined4 *)(DAT_00469eac + 0x1e) = 0x65; sVar2 = 0; do { if ('\0' < (char)(&DAT_00469fbe)[sVar2]) { iVar1 = PickapuzzleHitTest_((&DAT_004632dc)[sVar2 * 4],(&DAT_004632de)[sVar2 * 4], (&DAT_004632e0)[sVar2 * 4],(&DAT_004632e2)[sVar2 * 4],10, FUN_00448280); (&DAT_00469eb4)[sVar2] = iVar1; *(int *)((&DAT_00469eb4)[sVar2] + 0x1e) = (int)sVar2; } sVar2 = sVar2 + 1; } while (sVar2 < 8); sVar2 = 0; do { if ((&DAT_00469ed4)[sVar2 * 0xb] != 9) { iVar1 = PickapuzzleHitTest_((&DAT_00469ed6)[sVar2 * 0xb],(&DAT_00469ed8)[sVar2 * 0xb], (&DAT_00469eda)[sVar2 * 0xb],(&DAT_00469edc)[sVar2 * 0xb],5, FUN_00448280); *(int *)((int)&DAT_00469ee6 + sVar2 * 0x16) = iVar1; *(int *)(*(int *)((int)&DAT_00469ee6 + sVar2 * 0x16) + 0x1e) = sVar2 + 1000; } sVar2 = sVar2 + 1; } while (sVar2 < 10); if (DAT_0046333e != 0) { PickapuzzleHitTest_(10,0x140,0x14e,0x3c,0x19,(ClickHandler *)&LAB_0044826d); } return; } int FUN_00448280(void) { char cVar1; int iVar2; undefined4 extraout_ECX; uint extraout_ECX_00; undefined4 extraout_EDX; undefined4 extraout_EDX_00; undefined4 extraout_EDX_01; int in_stack_00000004; uint uVar3; if (DAT_00463340 == 1) { uVar3 = *(uint *)(in_stack_00000004 + 0x1e); if (uVar3 < 8) { FUN_004465a5(0x1f73,5,0); DAT_00469fb8 = *(short *)(in_stack_00000004 + 0x1e); FUN_0044b1c8(); DAT_00463340 = 4; DAT_0046a2d0 = (&DAT_0046a2b0)[DAT_00469fb8]; FUN_0043b4e2((int)DAT_00469fb8,extraout_EDX,extraout_ECX,(&DAT_0046a2b0)[DAT_00469fb8]); iVar2 = (int)DAT_00469fb8; (&DAT_00469fbe)[iVar2] = (&DAT_00469fbe)[iVar2] + -1; if ((&DAT_00469fbe)[iVar2] == '\0') { BigThing6Eh::processNodes_((&DAT_0046a2e0)[DAT_00469fb8]); } FUN_0044a970(); FUN_0044a9f7(); iVar2 = FUN_00448097(); return iVar2; } iVar2 = uVar3 - 0x3f2; if (uVar3 - 1000 < 10) { FUN_004465a5(0x1f73,5,0); DAT_00469fb8 = *(short *)(&DAT_004648e4 + *(int *)(in_stack_00000004 + 0x1e) * 0x16); FUN_0044b1c8(); DAT_00463340 = 4; uVar3 = *(uint *)(&DAT_004648f2 + *(int *)(in_stack_00000004 + 0x1e) * 0x16); FUN_00412d0c(*(int *)(in_stack_00000004 + 0x1e) * 0xb,extraout_EDX_00,extraout_ECX_00,uVar3); *(undefined2 *)(&DAT_004648e4 + *(int *)(in_stack_00000004 + 0x1e) * 0x16) = 9; DAT_0046a2d0 = (&DAT_0046a2b0)[DAT_00469fb8]; FUN_0043b4e2((int)DAT_00469fb8,extraout_EDX_01,uVar3,(&DAT_0046a2b0)[DAT_00469fb8]); iVar2 = FUN_00448097(); return iVar2; } } else { iVar2 = DAT_00463340 + -4; if (iVar2 == 0) { uVar3 = *(uint *)(in_stack_00000004 + 0x1e); if ((uVar3 < 8) || (uVar3 == 0x65)) { FUN_0044b1c8(); DAT_00463340 = 1; cVar1 = (&DAT_00469fbe)[DAT_00469fb8]; (&DAT_00469fbe)[DAT_00469fb8] = (&DAT_00469fbe)[DAT_00469fb8] + '\x01'; if (cVar1 == '\0') { FUN_00412e70(); } FUN_00448097(); FUN_0044a970(); FUN_0044a9f7(); iVar2 = FUN_0044b1d5(); return iVar2; } if ((uVar3 == 0x66) || (iVar2 = uVar3 - 0x3f2, uVar3 - 1000 < 10)) { iVar2 = FUN_0044aa9c(); return iVar2; } } } return iVar2; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_004484a5(void) { void *pvVar1; short sVar2; void *apvStackY_20400 [32762]; void *local_400 [5]; undefined1 local_3ec [1000]; FUN_00412dc8(DAT_0046a308); FUN_00412784(); BigThing6Eh::processNodes_(DAT_0046a308); FUN_00412784(); FUN_004465a5(0x1f5c,5,0); Memset(local_3ec,0,1000); local_400[0] = Resource::Load(DAT_004697a8,&_TEXT34); FUN_0044ffac(); FUN_0045008c(); for (sVar2 = 1; sVar2 < _DAT_0046977c; sVar2 = sVar2 + 1) { pvVar1 = Resource::Load((&DAT_004697a8)[sVar2],&_TEXT35); local_400[sVar2] = pvVar1; FUN_0044ffac(); FUN_0044ffc8(); } FUN_0043f27a(); for (sVar2 = 0; sVar2 < _DAT_0046977c; sVar2 = sVar2 + 1) { FUN_00440695((&DAT_004697a8)[sVar2],&_TEXT36); } return; } undefined4 FUN_004485f4(void) { undefined2 extraout_var; undefined2 extraout_var_00; short sVar1; sVar1 = 0; do { if ((&DAT_0046a00a)[sVar1 * 0x23] != 8) { return 0; } sVar1 = sVar1 + 1; } while (sVar1 < 10); sVar1 = 0; do { if ((&DAT_00469ed4)[sVar1 * 0xb] != 9) { BigThing6Eh::processNodes_(*(undefined4 *)((int)&DAT_00469ee2 + sVar1 * 0x16)); } sVar1 = sVar1 + 1; } while (sVar1 < 10); BigThing6Eh::processNodes_(DAT_0046a2d8); FUN_00412e70(); FUN_0041395c(DAT_0046a2dc,CONCAT22(extraout_var,DAT_00469fc6),CONCAT22(extraout_var,DAT_00469fc8), 0x14); FUN_004465a5(0x1f5b,5,0); return CONCAT22(extraout_var_00,1); } void FUN_0044868d(uint param_1,undefined4 param_2,uint param_3) { uint uVar1; uint uVar2; uint uVar3; undefined4 extraout_EDX; undefined4 extraout_EDX_00; undefined4 extraout_EDX_01; undefined4 extraout_EDX_02; undefined4 extraout_EDX_03; undefined4 extraout_EDX_04; undefined4 uVar4; undefined4 extraout_EDX_05; undefined4 extraout_EDX_06; short sVar5; uVar3 = DAT_0046a300; uVar1 = FUN_00412d0c(param_1,param_2,param_3,DAT_0046a300); uVar2 = DAT_0046a2d8; uVar1 = FUN_00412d0c(uVar1,extraout_EDX,uVar3,DAT_0046a2d8); uVar3 = DAT_0046a2dc; FUN_00412d0c(uVar1,extraout_EDX_00,uVar2,DAT_0046a2dc); sVar5 = 0; uVar4 = extraout_EDX_01; do { uVar2 = (&DAT_0046a2e0)[sVar5]; FUN_00412d0c((int)sVar5,uVar4,uVar3,(&DAT_0046a2e0)[sVar5]); uVar3 = uVar2; sVar5 = sVar5 + 1; uVar4 = extraout_EDX_02; } while (sVar5 < 8); sVar5 = 0; do { if (*(int *)((int)&DAT_0046a00c + sVar5 * 0x46) != 0) { uVar2 = *(uint *)((int)&DAT_0046a00c + sVar5 * 0x46); FUN_00412d0c(sVar5 * 0x23,uVar4,uVar3,uVar2); uVar3 = uVar2; uVar4 = extraout_EDX_03; } uVar2 = sVar5 * 0xb; if ((&DAT_00469ed4)[sVar5 * 0xb] != 9) { uVar1 = *(uint *)((int)&DAT_00469ee2 + sVar5 * 0x16); uVar2 = FUN_00412d0c(sVar5 * 0xb,uVar4,uVar3,uVar1); uVar3 = uVar1; uVar4 = extraout_EDX_04; } sVar5 = sVar5 + 1; } while (sVar5 < 10); uVar1 = DAT_0046a30c; uVar2 = FUN_00412d0c(uVar2,uVar4,uVar3,DAT_0046a30c); uVar3 = DAT_0046a308; uVar2 = FUN_00412d0c(uVar2,extraout_EDX_05,uVar1,DAT_0046a308); FUN_00412d0c(uVar2,extraout_EDX_06,uVar3,DAT_0046a304); return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void __cdecl Puzzles::SetParametersForSimpleMachine(PuzzleNumberOneBased puzzle) { short sVar1; undefined4 uVar2; undefined2 extraout_var; short sVar3; DAT_00469fc6 = 0xa0; DAT_00469fc8 = 0x28; DAT_0046331c = 0xffff; DAT_0046333e = 0; DAT_00469fb8 = 9; sVar3 = 0; do { (&DAT_00469ed4)[sVar3 * 0xb] = 9; sVar1 = 0; do { *(undefined4 *)((int)&DAT_0046a00c + sVar3 * 0x46) = 0; (&DAT_00469fd6)[sVar3 * 0x23 + sVar1 * 5] = 0; (&DAT_0046a00a)[sVar3 * 0x23] = 8; sVar1 = sVar1 + 1; } while (sVar1 < 6); sVar3 = sVar3 + 1; } while (sVar3 < 10); sVar3 = 0; do { uVar2 = FUN_00412ac4(sVar3 + 0x3ec2); (&DAT_0046a2e0)[sVar3] = uVar2; (&DAT_00469fbe)[sVar3] = 0; sVar3 = sVar3 + 1; } while (sVar3 < 8); DAT_00463340 = 1; if (20 < puzzle) { puzzle = 1; } switch(puzzle) { case 1: _DAT_0046977a = 4; _DAT_0046977c = 2; DAT_004697a8 = 0x3e88; DAT_004697aa = 0x3e89; DAT_0046978a = 0x3e8e; DAT_0046978c = 0x3e8f; DAT_0046978e = 0x3e90; DAT_00469790 = 0x3e91; DAT_00469792 = 0xffff; DAT_00469fc6 = 0x104; DAT_00469fc8 = 0x28; DAT_00469fca = 0x10; DAT_00469fcc = 0xc2; DAT_0046a00c = FUN_00412ac4(0x3e84); DAT_0046a00a = 2; DAT_00469fd6 = 1; DAT_00469fce = 0x10; DAT_00469fd0 = 0xc2; DAT_00469fd2 = 0x28; DAT_00469fd4 = 0x28; DAT_00469fc0 = 1; DAT_0046a2d8 = FUN_00412ac4(0x2b37); DAT_0046a2dc = FUN_00412ac4(0x2b38); break; case 2: _DAT_0046977a = 5; _DAT_0046977c = 3; DAT_004697a8 = 0x3e88; DAT_004697aa = 0x3e8b; _DAT_004697ac = 16000; DAT_0046978a = 0x3e8e; DAT_0046978c = 0x3e8f; DAT_0046978e = 0x3e87; DAT_00469790 = 0x3e88; DAT_00469792 = 0x3e81; DAT_00469794 = 0xffff; DAT_00469fc6 = 0xb4; DAT_00469fc8 = 0x50; DAT_00469fca = 0; DAT_00469fcc = 0; DAT_0046a00c = FUN_00412ac4(0x3e85); DAT_0046a00a = 5; DAT_00469fd6 = 1; DAT_00469fce = 0; DAT_00469fd0 = 0x6c; DAT_00469fd2 = 0x34; DAT_00469fd4 = 0x2b; DAT_00469fe0 = 1; DAT_00469fd8 = 0x33; DAT_00469fda = 0x5d; DAT_00469fdc = 0x24; DAT_00469fde = 0x26; DAT_00469fea = 1; DAT_00469fe2 = 0x56; DAT_00469fe4 = 0x49; DAT_00469fe6 = 0x31; DAT_00469fe8 = 0x2a; DAT_00469ff4 = 1; DAT_00469fec = 0x86; DAT_00469fee = 0x3a; DAT_00469ff0 = 0x20; DAT_00469ff2 = 0x22; DAT_00469ffe = 1; DAT_00469ff6 = 0xa5; DAT_00469ff8 = 0x26; DAT_00469ffa = 0x2e; DAT_00469ffc = 0x29; DAT_0046a008 = 1; DAT_0046a000 = 0xd2; DAT_0046a002 = 0x13; DAT_0046a004 = 0x3b; DAT_0046a006 = 0x28; DAT_00469fc3 = 1; DAT_0046a2d8 = FUN_00412ac4(0x2b4e); DAT_0046a2dc = FUN_00412ac4(0x2b4f); break; case 3: _DAT_0046977a = 5; _DAT_0046977c = 3; DAT_004697a8 = 0x3e88; DAT_004697aa = 0x3e8b; DAT_0046978a = 0x3e8e; DAT_0046978c = 0x3e8f; DAT_0046978e = 0x3e87; DAT_00469790 = 0x3e88; _DAT_004697ac = 16000; DAT_00469792 = 0x3e81; DAT_00469794 = 0xffff; DAT_00469fc6 = 0xa0; DAT_00469fc8 = 0x50; DAT_00469fca = 0x3f; DAT_00469fcc = 0x35; DAT_0046a00c = FUN_00412ac4(0x3e86); DAT_0046a00a = 5; DAT_00469fd6 = 1; DAT_00469fce = 0x41; DAT_00469fd0 = 0x37; DAT_00469fd2 = 0xa2; DAT_00469fd4 = 0x1e; DAT_00469fc3 = 1; DAT_0046a2d8 = FUN_00412ac4(0x2b43); DAT_0046a2dc = FUN_00412ac4(0x2b44); break; case 4: _DAT_0046977a = 3; _DAT_0046977c = 2; DAT_004697a8 = 0x3e8b; DAT_0046978a = 0x3e87; DAT_0046978c = 0x3e88; DAT_004697aa = 0x3e87; DAT_0046978e = 0x3e84; DAT_00469790 = 0xffff; DAT_00469fc6 = 0xdd; DAT_00469fc8 = 0x3c; DAT_00469fca = 0x27; DAT_00469fcc = 0x3a; DAT_0046a00c = FUN_00412ac4(0x3e87); DAT_0046a00a = 7; DAT_00469fd6 = 1; DAT_00469fce = 0x2f; DAT_00469fd0 = 0x70; DAT_00469fd2 = 0x44; DAT_00469fd4 = 0x60; DAT_00469fe0 = 1; DAT_00469fd8 = 0x6c; DAT_00469fda = 0x29; DAT_00469fdc = 0x3a; DAT_00469fde = 0x55; DAT_00469fc5 = 1; DAT_0046a2d8 = FUN_00412ac4(0x2b01); DAT_0046a2dc = FUN_00412ac4(0x2b02); break; case 5: _DAT_0046977a = 2; _DAT_0046977c = 1; DAT_004697a8 = 0x3e82; DAT_0046978a = 0x3e89; DAT_0046978c = 0x3e8a; DAT_0046978e = 0xffff; DAT_00469fc6 = 0xcf; DAT_00469fc8 = 0x3a; DAT_00469fca = 0x14; DAT_00469fcc = 0; DAT_0046a00c = FUN_00412ac4(0x3e88); DAT_0046a00a = 4; DAT_00469fd6 = 1; DAT_00469fce = 0x14; DAT_00469fd0 = 0; DAT_00469fd2 = 0x1e; DAT_00469fd4 = 0x1e; DAT_0046a010 = 0x14; DAT_0046a012 = 0x49; DAT_0046a052 = FUN_00412ac4(0x3e89); DAT_0046a050 = 4; DAT_0046a01c = 1; DAT_0046a014 = 0x14; DAT_0046a016 = 0x49; DAT_0046a018 = 0x1e; DAT_0046a01a = 0x1e; DAT_00469fc2 = 2; DAT_0046a2d8 = FUN_00412ac4(0x2b3d); DAT_0046a2dc = FUN_00412ac4(0x2b3e); break; case 6: _DAT_0046977a = 2; _DAT_0046977c = 1; DAT_004697a8 = 0x3e81; DAT_0046978a = 0x3e85; DAT_0046978c = 0x3e86; DAT_0046978e = 0xffff; DAT_00469fc6 = 0xb8; DAT_00469fc8 = 0x41; DAT_00469fca = 0x52; DAT_00469fcc = 0x18; DAT_0046a00c = FUN_00412ac4(0x3e8a); DAT_0046a00a = 1; DAT_00469fd6 = 1; DAT_00469fce = 0x50; DAT_00469fd0 = 0x1d; DAT_00469fd2 = 0x4d; DAT_00469fd4 = 0x34; DAT_00469fe0 = 1; DAT_00469fd8 = 0x62; DAT_00469fda = 0x4f; DAT_00469fdc = 0x5e; DAT_00469fde = 0x32; DAT_00469fea = 1; DAT_00469fe2 = 0x82; DAT_00469fe4 = 0x81; DAT_00469fe6 = 0xaa; DAT_00469fe8 = 0x47; DAT_0046a010 = 0; DAT_0046a012 = 0x29; DAT_0046a052 = FUN_00412ac4(0x3e8b); DAT_0046a050 = 1; DAT_0046a01c = 1; DAT_0046a014 = 4; DAT_0046a016 = 0x5e; DAT_0046a018 = 0x23; DAT_0046a01a = 0x23; DAT_0046a026 = 1; DAT_0046a01e = 0x1a; DAT_0046a020 = 0x35; DAT_0046a022 = 0x24; DAT_0046a024 = 0x2a; DAT_00469fbf = 2; DAT_0046a2d8 = FUN_00412ac4(0x2b5c); DAT_0046a2dc = FUN_00412ac4(0x2b5d); break; case 7: _DAT_0046977a = 2; _DAT_0046977c = 1; DAT_004697a8 = 0x3e82; DAT_0046978a = 0x3e89; DAT_0046978c = 0x3e8a; DAT_0046978e = 0xffff; DAT_00469fc6 = 0x96; DAT_00469fc8 = 0x50; DAT_00469fca = 2; DAT_00469fcc = 0x4f; DAT_0046a00c = FUN_00412ac4(0x3e8c); DAT_0046a00a = 4; DAT_00469fd6 = 1; DAT_00469fce = 3; DAT_00469fd0 = 0x4f; DAT_00469fd2 = FUN_00413774(DAT_0046a00c,0); DAT_00469fd4 = FUN_00413794(DAT_0046a00c,0); DAT_0046a010 = 0x111; DAT_0046a012 = 0x4f; DAT_0046a052 = FUN_00412ac4(0x3e8d); DAT_0046a050 = 4; DAT_0046a01c = 1; DAT_0046a014 = 0x111; DAT_0046a016 = 0x4f; DAT_0046a018 = FUN_00413774(DAT_0046a052,0); DAT_0046a01a = FUN_00413794(DAT_0046a052,0); DAT_00469fc2 = 2; DAT_0046a2d8 = FUN_00412ac4(0x2b19); DAT_0046a2dc = FUN_00412ac4(0x2b1a); break; case 8: _DAT_0046977a = 2; _DAT_0046977c = 1; DAT_004697a8 = 0x3e89; DAT_0046978a = 0x3e90; DAT_0046978c = 0x3e91; DAT_0046978e = 0xffff; DAT_00469fc6 = 200; DAT_00469fc8 = 0x28; DAT_00469fca = 0x6b; DAT_00469fcc = 0x54; DAT_0046a00c = FUN_00412ac4(0x3e8e); DAT_0046a00a = 2; DAT_00469fd6 = 1; DAT_00469fce = 0x69; DAT_00469fd0 = 0x50; DAT_00469fd2 = 0x19; DAT_00469fd4 = 0x19; DAT_0046a010 = 0x5c; DAT_0046a012 = 0x93; DAT_0046a052 = FUN_00412ac4(0x3e8f); DAT_0046a050 = 2; DAT_0046a01c = 1; DAT_0046a014 = 0x5a; DAT_0046a016 = 0x8c; DAT_0046a018 = 0x19; DAT_0046a01a = 0x19; DAT_00469fc0 = 2; DAT_0046a2d8 = FUN_00412ac4(0x2b32); DAT_0046a2dc = FUN_00412ac4(0x2b33); break; case 9: _DAT_0046977a = 2; _DAT_0046977c = 1; DAT_004697a8 = 0x3e89; DAT_0046978a = 0x3e90; DAT_0046978c = 0x3e91; DAT_0046978e = 0xffff; DAT_00469fc6 = 0xa0; DAT_00469fc8 = 0x32; DAT_00469fca = 0x68; DAT_00469fcc = 0x32; DAT_0046a00c = FUN_00412ac4(0x3e91); DAT_0046a00a = 2; DAT_00469fd6 = 1; DAT_00469fce = 0x54; DAT_00469fd0 = 0x32; DAT_00469fd2 = 0x4a; DAT_00469fd4 = 0x3b; DAT_0046a010 = 0x13; DAT_0046a012 = 0x68; DAT_0046a052 = FUN_00412ac4(0x3e92); DAT_0046a050 = 2; DAT_0046a01c = 1; DAT_0046a014 = 0x13; DAT_0046a016 = 0x68; DAT_0046a018 = 0x35; DAT_0046a01a = 0x3a; DAT_0046a056 = 0x5e; DAT_0046a058 = 0xa0; DAT_0046a098 = FUN_00412ac4(0x3e93); DAT_0046a096 = 2; DAT_0046a062 = 1; DAT_0046a05a = 0x5e; DAT_0046a05c = 0xa0; DAT_0046a05e = 0x3f; DAT_0046a060 = 0x31; DAT_00469fc0 = 3; DAT_0046a2d8 = FUN_00412ac4(0x3e90); DAT_0046a2dc = FUN_00412ac4(0x3e94); break; case 10: _DAT_0046977a = 6; _DAT_0046977c = 3; DAT_004697a8 = 0x3e85; DAT_0046978a = 0x3e8b; DAT_0046978c = 0x3e8c; DAT_0046978e = 0x3e8d; DAT_004697aa = 0x3e8b; DAT_00469790 = 0x3e87; DAT_00469792 = 0x3e88; _DAT_004697ac = 0x3e84; DAT_00469794 = 0x3e82; _DAT_00469796 = 0xffff; DAT_00469fc6 = 0xa0; DAT_00469fc8 = 0x50; DAT_00469fca = 0x30; DAT_00469fcc = 0x66; DAT_0046a00c = FUN_00412ac4(0x3e96); DAT_0046a00a = 3; DAT_00469fd6 = 1; DAT_00469fce = 0x30; DAT_00469fd0 = 0x66; DAT_00469fd2 = 0x1e; DAT_00469fd4 = 0x1e; DAT_0046a010 = 0; DAT_0046a012 = 0; DAT_0046a052 = FUN_00412ac4(0x3e97); DAT_0046a050 = 6; DAT_0046a01c = 1; DAT_0046a014 = 0; DAT_0046a016 = 0x46; DAT_0046a018 = 0x54; DAT_0046a01a = 0x57; DAT_0046a026 = 1; DAT_0046a01e = 0x53; DAT_0046a020 = 100; DAT_0046a022 = 0xca; DAT_0046a024 = 0x1b; DAT_00469fc4 = 1; DAT_00469fc1 = 1; DAT_0046a2d8 = FUN_00412ac4(0x3e95); DAT_0046a2dc = FUN_00412ac4(0x3e98); break; case 0xb: _DAT_0046977a = 5; _DAT_0046977c = 3; DAT_004697a8 = 0x3e8b; DAT_0046978a = 0x3e87; DAT_0046978c = 0x3e88; DAT_004697aa = 0x3e84; DAT_0046978e = 0x3e82; _DAT_004697ac = 0x3e8a; DAT_00469790 = 0x3e92; DAT_00469792 = 0x3e93; DAT_00469794 = 0xffff; DAT_00469fc6 = 0x74; DAT_00469fc8 = 0x40; DAT_00469fca = 0; DAT_00469fcc = 0; DAT_0046a00c = FUN_00412ac4(0x3e9a); DAT_0046a00a = 6; DAT_00469fd6 = 1; DAT_00469fce = 0; DAT_00469fd0 = 0; DAT_00469fd2 = 0x7f; DAT_00469fd4 = 0x32; DAT_00469fe0 = 1; DAT_00469fd8 = 0x40; DAT_00469fda = 0x32; DAT_00469fdc = 0x72; DAT_00469fde = 0x3f; DAT_00469fea = 1; DAT_00469fe2 = 0xb1; DAT_00469fe4 = 0x5f; DAT_00469fe6 = 0x73; DAT_00469fe8 = 0x32; DAT_00469ff4 = 1; DAT_00469fec = 0x122; DAT_00469fee = 0x72; DAT_00469ff0 = 0x49; DAT_00469ff2 = 0x30; DAT_0046a010 = 0xfa; DAT_0046a012 = 0x5b; DAT_0046a052 = FUN_00412ac4(0x3e9b); DAT_0046a050 = 0; DAT_0046a01c = 1; DAT_0046a014 = 0xfa; DAT_0046a016 = 0x5b; DAT_0046a018 = 0x5b; DAT_0046a01a = 0x70; DAT_00469fc4 = 1; DAT_00469fbe = 1; DAT_0046a2d8 = FUN_00412ac4(0x3e99); DAT_0046a2dc = FUN_00412ac4(0x3e9c); break; case 0xc: _DAT_0046977a = 5; _DAT_0046977c = 2; DAT_004697a8 = 0x3e85; DAT_0046978a = 0x3e8b; DAT_0046978c = 0x3e8c; DAT_0046978e = 0x3e8d; DAT_004697aa = 0x3e8a; DAT_00469790 = 0x3e92; DAT_00469792 = 0x3e93; DAT_00469794 = 0xffff; DAT_00469fc6 = 0xbc; DAT_00469fc8 = 0x32; DAT_00469fca = 0x62; DAT_00469fcc = 0x4b; DAT_0046a00c = FUN_00412ac4(0x3e9d); DAT_0046a00a = 3; DAT_00469fd6 = 1; DAT_00469fce = 0x62; DAT_00469fd0 = 0x4b; DAT_00469fd2 = 0x32; DAT_00469fd4 = 0x32; DAT_0046a010 = 0x3b; DAT_0046a012 = 0; DAT_0046a052 = FUN_00412ac4(0x3e9f); DAT_0046a050 = 0; DAT_0046a01c = 1; DAT_0046a014 = 0x3b; DAT_0046a016 = 0; DAT_0046a018 = 0x3c; DAT_0046a01a = 0x32; DAT_00469fbe = 1; DAT_00469fc1 = 1; DAT_0046a2d8 = FUN_00412ac4(0x2b1e); DAT_0046a2dc = FUN_00412ac4(0x2b1f); break; case 0xd: _DAT_0046977a = 5; _DAT_0046977c = 3; DAT_004697a8 = 0x3e8b; DAT_0046978a = 0x3e87; DAT_0046978c = 0x3e88; DAT_004697aa = 0x3e87; DAT_0046978e = 0x3e84; _DAT_004697ac = 0x3e82; DAT_00469790 = 0x3e89; DAT_00469792 = 0x3e8a; DAT_00469794 = 0xffff; DAT_00469fc6 = 0x90; DAT_00469fc8 = 0x50; DAT_00469fca = 0; DAT_00469fcc = 0; DAT_0046a00c = FUN_00412ac4(0x3ea0); DAT_0046a00a = 7; DAT_00469fd6 = 1; DAT_00469fce = 0; DAT_00469fd0 = 0; DAT_00469fd2 = 100; DAT_00469fd4 = 0x1b; DAT_00469fe0 = 1; DAT_00469fd8 = 0x62; DAT_00469fda = 0x16; DAT_00469fdc = 0x32; DAT_00469fde = 0x28; DAT_00469fea = 1; DAT_00469fe2 = 0x93; DAT_00469fe4 = 0x37; DAT_00469fe6 = 0x44; DAT_00469fe8 = 0x30; DAT_00469ff4 = 1; DAT_00469fec = 0xcc; DAT_00469fee = 0x5f; DAT_00469ff0 = 0x24; DAT_00469ff2 = 0x29; DAT_00469ffe = 1; DAT_00469ff6 = 0xf0; DAT_00469ff8 = 0x71; DAT_00469ffa = 0x50; DAT_00469ffc = 0x3d; DAT_0046a010 = 0xed; DAT_0046a012 = 0x90; DAT_0046a052 = FUN_00412ac4(0x3ea1); DAT_0046a050 = 4; DAT_0046a01c = 1; DAT_0046a014 = 0xec; DAT_0046a016 = 0x8f; DAT_0046a018 = 0x1d; DAT_0046a01a = 0x1a; DAT_00469fc2 = 1; DAT_00469fc5 = 1; DAT_0046a2d8 = FUN_00412ac4(0x2b25); DAT_0046a2dc = FUN_00412ac4(0x2b26); break; case 0xe: _DAT_0046977a = 2; _DAT_0046977c = 1; DAT_004697a8 = 0x3e89; DAT_0046978a = 0x3e90; DAT_0046978c = 0x3e91; DAT_0046978e = 0xffff; DAT_00469fc6 = 0x7c; DAT_00469fc8 = 0x39; DAT_00469fca = 0; DAT_00469fcc = 0; DAT_0046a00c = FUN_00412ac4(0x3ea3); DAT_0046a00a = 2; DAT_00469fd6 = 1; DAT_00469fce = 0; DAT_00469fd0 = 0; DAT_00469fd2 = 0x61; DAT_00469fd4 = 0x5a; DAT_0046a010 = 2; DAT_0046a012 = 0x7c; DAT_0046a052 = FUN_00412ac4(0x3ed3); DAT_0046a050 = 2; DAT_0046a01c = 1; DAT_0046a014 = 0; DAT_0046a016 = 0x7c; DAT_0046a018 = 99; DAT_0046a01a = 0x5a; DAT_00469fc0 = 2; DAT_0046a2d8 = FUN_00412ac4(0x3ea2); DAT_0046a2dc = FUN_00412ac4(0x3ed4); break; case 0xf: _DAT_0046977a = 5; _DAT_0046977c = 3; DAT_004697a8 = 0x3e8b; DAT_0046978a = 0x3e87; DAT_0046978c = 0x3e88; DAT_004697aa = 16000; DAT_0046978e = 0x3e81; _DAT_004697ac = 0x3e8a; DAT_00469790 = 0x3e92; DAT_00469792 = 0x3e93; DAT_00469794 = 0xffff; DAT_00469fc6 = 0x96; DAT_00469fc8 = 0x3c; DAT_00469fca = 0xb; DAT_00469fcc = 0x49; DAT_0046a00c = FUN_00412ac4(0x3ea4); DAT_0046a00a = 5; DAT_00469fd6 = 1; DAT_00469fce = 0xc; DAT_00469fd0 = 0x4a; DAT_00469fd2 = 0x90; DAT_00469fd4 = 0x50; DAT_00469fe0 = 1; DAT_00469fd8 = 0x9b; DAT_00469fda = 0x6f; DAT_00469fdc = 0xaa; DAT_00469fde = 0x44; DAT_0046a010 = 0; DAT_0046a012 = 0x5b; DAT_0046a052 = FUN_00412ac4(0x3ea5); DAT_0046a050 = 0; DAT_0046a01c = 1; DAT_0046a014 = 0; DAT_0046a016 = 0x5b; DAT_0046a018 = 0x5a; DAT_0046a01a = 0x34; DAT_0046a056 = 0xce; DAT_0046a058 = 0xa0; DAT_0046a098 = FUN_00412ac4(0x3ea6); DAT_0046a096 = 0; DAT_0046a062 = 1; DAT_0046a05a = 0xce; DAT_0046a05c = 0xa0; DAT_0046a05e = 0x58; DAT_0046a060 = 0x2d; DAT_00469fc3 = 1; DAT_00469fbe = 2; DAT_0046a2d8 = FUN_00412ac4(0x2b55); DAT_0046a2dc = FUN_00412ac4(0x2b56); break; case 0x10: _DAT_0046977a = 6; _DAT_0046977c = 4; DAT_004697a8 = 0x3e89; DAT_0046978a = 0x3e90; DAT_0046978c = 0x3e91; DAT_004697aa = 0x3e8b; DAT_0046978e = 0x3e87; DAT_00469790 = 0x3e88; _DAT_004697ac = 16000; DAT_00469792 = 0x3e81; _DAT_004697ae = 0x3e87; DAT_00469794 = 0x3e84; _DAT_00469796 = 0xffff; DAT_00469fc6 = 200; DAT_00469fc8 = 0x32; DAT_00469fca = 0; DAT_00469fcc = 0x7b; DAT_0046a00c = FUN_00412ac4(0x3ea7); DAT_0046a00a = 7; DAT_00469fd6 = 1; DAT_00469fce = 0; DAT_00469fd0 = 0x7b; DAT_00469fd2 = 0x7c; DAT_00469fd4 = 0x1f; DAT_00469fe0 = 1; DAT_00469fd8 = 0x18; DAT_00469fda = 0x99; DAT_00469fdc = 0x78; DAT_00469fde = 10; DAT_00469fea = 1; DAT_00469fe2 = 0x31; DAT_00469fe4 = 0xa2; DAT_00469fe6 = 0x9d; DAT_00469fe8 = 0xc; DAT_00469ff4 = 1; DAT_00469fec = 0x52; DAT_00469fee = 0xad; DAT_00469ff0 = 0x27; DAT_00469ff2 = 0x11; DAT_00469ffe = 1; DAT_00469ff6 = 0x24; DAT_00469ff8 = 0xbd; DAT_00469ffa = 0x2b; DAT_00469ffc = 0xd; DAT_0046a010 = 0; DAT_0046a012 = 0x96; DAT_0046a052 = FUN_00412ac4(0x3ea8); DAT_0046a050 = 7; DAT_0046a01c = 1; DAT_0046a014 = 0; DAT_0046a016 = 0x99; DAT_0046a018 = 0x19; DAT_0046a01a = 0xf; DAT_0046a026 = 1; DAT_0046a01e = 0x18; DAT_0046a020 = 0xa2; DAT_0046a022 = 0x34; DAT_0046a024 = 0x22; DAT_0046a030 = 1; DAT_0046a028 = 0x4c; DAT_0046a02a = 0xb7; DAT_0046a02c = 0x58; DAT_0046a02e = 0x3b; DAT_0046a03a = 1; DAT_0046a032 = 0xa2; DAT_0046a034 = 200; DAT_0046a036 = 0x33; DAT_0046a038 = 0x28; DAT_0046a056 = 0xb2; DAT_0046a058 = 0xb4; DAT_0046a098 = FUN_00412ac4(0x3ea9); DAT_0046a096 = 2; DAT_0046a062 = 1; DAT_0046a05a = 0xb6; DAT_0046a05c = 0xb5; DAT_0046a05e = 0x27; DAT_0046a060 = 0x16; DAT_0046a09c = 0xb7; DAT_0046a09e = 0xca; DAT_0046a0de = FUN_00412ac4(0x3eaa); DAT_0046a0dc = 2; DAT_0046a0a8 = 1; DAT_0046a0a0 = 0xba; DAT_0046a0a2 = 0xcf; DAT_0046a0a4 = 0x24; DAT_0046a0a6 = 0x1f; DAT_0046a0e2 = 0x3d; DAT_0046a0e4 = 0; DAT_0046a124 = FUN_00412ac4(0x3eab); DAT_0046a122 = 5; DAT_0046a0ee = 1; DAT_0046a0e6 = 0x3e; DAT_0046a0e8 = 0; DAT_0046a0ea = 0x2c; DAT_0046a0ec = 0x51; DAT_0046a0f8 = 1; DAT_0046a0f0 = 0x67; DAT_0046a0f2 = 0x28; DAT_0046a0f4 = 0x21; DAT_0046a0f6 = 100; DAT_0046a102 = 1; DAT_0046a0fa = 0x86; DAT_0046a0fc = 0x5c; DAT_0046a0fe = 0x1d; DAT_0046a100 = 0x58; DAT_0046a10c = 1; DAT_0046a104 = 0xa2; DAT_0046a106 = 0x87; DAT_0046a108 = 0x26; DAT_0046a10a = 0x2d; DAT_00469fc3 = 1; DAT_00469fc5 = 2; DAT_00469fc0 = 2; DAT_0046a2d8 = FUN_00412ac4(0x2b12); DAT_0046a2dc = FUN_00412ac4(0x2b13); break; case 0x11: _DAT_0046977a = 6; _DAT_0046977c = 3; DAT_004697a8 = 0x3e85; DAT_0046978a = 0x3e8b; DAT_0046978c = 0x3e8c; DAT_0046978e = 0x3e8d; DAT_004697aa = 0x3e8b; DAT_00469790 = 0x3e87; DAT_00469792 = 0x3e88; _DAT_004697ac = 16000; DAT_00469794 = 0x3e81; _DAT_00469796 = 0xffff; DAT_00469fc6 = 0xaa; DAT_00469fc8 = 0x50; DAT_00469fca = 7; DAT_00469fcc = 0x21; DAT_0046a00c = FUN_00412ac4(0x3eac); DAT_0046a00a = 5; DAT_00469fd6 = 1; DAT_00469fce = 8; DAT_00469fd0 = 0x2e; DAT_00469fd2 = 0x34; DAT_00469fd4 = 0x18; DAT_00469fe0 = 1; DAT_00469fd8 = 0x3c; DAT_00469fda = 0x28; DAT_00469fdc = 0x29; DAT_00469fde = 0x37; DAT_00469fea = 1; DAT_00469fe2 = 100; DAT_00469fe4 = 0x45; DAT_00469fe6 = 0x33; DAT_00469fe8 = 0x3d; DAT_00469ff4 = 1; DAT_00469fec = 0x96; DAT_00469fee = 0x69; DAT_00469ff0 = 0x32; DAT_00469ff2 = 0x38; DAT_00469ffe = 1; DAT_00469ff6 = 0xc6; DAT_00469ff8 = 0x85; DAT_00469ffa = 0x24; DAT_00469ffc = 0x29; DAT_0046a008 = 1; DAT_0046a000 = 0xea; DAT_0046a002 = 0x96; DAT_0046a004 = 0x2b; DAT_0046a006 = 0x22; DAT_0046a010 = 0; DAT_0046a012 = 0; DAT_0046a052 = FUN_00412ac4(0x3ead); DAT_0046a050 = 5; DAT_0046a01c = 1; DAT_0046a014 = 0; DAT_0046a016 = 0; DAT_0046a018 = 0x48; DAT_0046a01a = 0x18; DAT_0046a026 = 1; DAT_0046a01e = 0x3c; DAT_0046a020 = 6; DAT_0046a022 = 0x2b; DAT_0046a024 = 0x2c; DAT_0046a030 = 1; DAT_0046a028 = 0x67; DAT_0046a02a = 0x12; DAT_0046a02c = 0x2c; DAT_0046a02e = 0x21; DAT_0046a03a = 1; DAT_0046a032 = 0x91; DAT_0046a034 = 0x1c; DAT_0046a036 = 0x73; DAT_0046a038 = 0x15; DAT_0046a056 = 0x102; DAT_0046a058 = 0x19; DAT_0046a098 = FUN_00412ac4(0x3eae); DAT_0046a096 = 3; DAT_0046a062 = 1; DAT_0046a05a = 0xfa; DAT_0046a05c = 0x14; DAT_0046a05e = 0x28; DAT_0046a060 = 0x28; DAT_00469fc1 = 1; DAT_00469fc3 = 2; DAT_0046a2d8 = FUN_00412ac4(0x2b61); DAT_0046a2dc = FUN_00412ac4(0x2b62); break; case 0x12: _DAT_0046977a = 8; _DAT_0046977c = 4; DAT_004697a8 = 0x3e89; DAT_004697aa = 0x3e8b; _DAT_004697ac = 16000; _DAT_004697ae = 0x3e85; DAT_0046978a = 0x3e90; DAT_0046978c = 0x3e91; DAT_0046978e = 0x3e87; DAT_00469790 = 0x3e88; DAT_00469792 = 0x3e81; DAT_00469794 = 0x3e8b; _DAT_00469796 = 0x3e8c; _DAT_00469798 = 0x3e8d; _DAT_0046979a = 0xffff; DAT_00469fc6 = 0xa0; DAT_00469fc8 = 0x46; DAT_00469fca = 0; DAT_00469fcc = 0; DAT_0046a00c = FUN_00412ac4(0x3eaf); DAT_0046a00a = 5; DAT_00469fd6 = 1; DAT_00469fce = 5; DAT_00469fd0 = 5; DAT_00469fd2 = 0x37; DAT_00469fd4 = 0x32; DAT_00469fe0 = 1; DAT_00469fd8 = 0x3c; DAT_00469fda = 0x2a; DAT_00469fdc = 0x37; DAT_00469fde = 0x1e; DAT_00469fea = 1; DAT_00469fe2 = 0x6f; DAT_00469fe4 = 0x38; DAT_00469fe6 = 0x47; DAT_00469fe8 = 0x26; DAT_00469ff4 = 1; DAT_00469fec = 0xb5; DAT_00469fee = 0x4c; DAT_00469ff0 = 100; DAT_00469ff2 = 0x1d; DAT_0046a010 = 0; DAT_0046a012 = 0x30; DAT_0046a052 = FUN_00412ac4(0x3eb1); DAT_0046a050 = 5; DAT_0046a01c = 1; DAT_0046a014 = 5; DAT_0046a016 = 100; DAT_0046a018 = 0x37; DAT_0046a01a = 0x32; DAT_0046a026 = 1; DAT_0046a01e = 0x39; DAT_0046a020 = 0x59; DAT_0046a022 = 0x38; DAT_0046a024 = 0x17; DAT_0046a030 = 1; DAT_0046a028 = 0x6f; DAT_0046a02a = 0x38; DAT_0046a02c = 0x47; DAT_0046a02e = 0x26; DAT_0046a03a = 1; DAT_0046a032 = 0xb6; DAT_0046a034 = 0x30; DAT_0046a036 = 100; DAT_0046a038 = 0x1d; DAT_0046a056 = 0xaf; DAT_0046a058 = 0x34; DAT_0046a098 = FUN_00412ac4(0x3eb2); DAT_0046a096 = 2; DAT_0046a062 = 1; DAT_0046a05a = 0xb6; DAT_0046a05c = 0x30; DAT_0046a05e = 100; DAT_0046a060 = 0x1d; DAT_0046a09c = 0x9f; DAT_0046a09e = 0x47; DAT_0046a0de = FUN_00412ac4(0x3eb0); DAT_0046a0dc = 2; DAT_0046a0a8 = 1; DAT_0046a0a0 = 0xb5; DAT_0046a0a2 = 0x4c; DAT_0046a0a4 = 100; DAT_0046a0a6 = 0x1d; DAT_0046a0e2 = 0x8c; DAT_0046a0e4 = 0x49; DAT_0046a124 = FUN_00412ac4(0x3eb3); DAT_0046a122 = 3; DAT_0046a0ee = 1; DAT_0046a0e6 = 0x8c; DAT_0046a0e8 = 0x49; DAT_0046a0ea = 0x14; DAT_0046a0ec = 0x14; DAT_00469fc3 = 2; DAT_00469fc1 = 1; DAT_00469fc0 = 2; DAT_0046a2d8 = FUN_00412ac4(0x2b48); DAT_0046a2dc = FUN_00412ac4(0x2b49); break; case 0x13: _DAT_0046977a = 2; _DAT_0046977c = 1; DAT_004697a8 = 0x3e81; DAT_0046978a = 0x3e85; DAT_0046978c = 0x3e86; DAT_0046978e = 0xffff; DAT_00469fc6 = 0x96; DAT_00469fc8 = 0x46; DAT_00469fca = 0x4b; DAT_00469fcc = 0x72; DAT_0046a00c = FUN_00412ac4(0x3eb4); DAT_0046a00a = 1; DAT_00469fd6 = 1; DAT_00469fce = 0x4b; DAT_00469fd0 = 0x72; DAT_00469fd2 = 0x14; DAT_00469fd4 = 0x14; DAT_0046a010 = 0x59; DAT_0046a012 = 0x76; DAT_0046a052 = FUN_00412ac4(0x3eb5); DAT_0046a050 = 1; DAT_0046a01c = 1; DAT_0046a014 = 0x59; DAT_0046a016 = 0x76; DAT_0046a018 = 0x14; DAT_0046a01a = 0x14; DAT_0046a056 = 0x69; DAT_0046a058 = 0x76; DAT_0046a098 = FUN_00412ac4(0x3eb6); DAT_0046a096 = 1; DAT_0046a062 = 1; DAT_0046a05a = 0x69; DAT_0046a05c = 0x76; DAT_0046a05e = 0x14; DAT_0046a060 = 0x14; DAT_0046a09c = 0x79; DAT_0046a09e = 0x7a; DAT_0046a0de = FUN_00412ac4(0x3eb7); DAT_0046a0dc = 1; DAT_0046a0a8 = 1; DAT_0046a0a0 = 0x79; DAT_0046a0a2 = 0x7a; DAT_0046a0a4 = 0x14; DAT_0046a0a6 = 0x14; DAT_0046a0e2 = 0x98; DAT_0046a0e4 = 0x78; DAT_0046a124 = FUN_00412ac4(0x3eb8); DAT_0046a122 = 1; DAT_0046a0ee = 1; DAT_0046a0e6 = 0x98; DAT_0046a0e8 = 0x78; DAT_0046a0ea = 0x14; DAT_0046a0ec = 0x14; DAT_0046a128 = 0xa2; DAT_0046a12a = 0x7a; DAT_0046a16a = FUN_00412ac4(0x3eb9); DAT_0046a168 = 1; DAT_0046a134 = 1; DAT_0046a12c = 0xa2; DAT_0046a12e = 0x7a; DAT_0046a130 = 0x14; DAT_0046a132 = 0x14; DAT_0046a16e = 0xb2; DAT_0046a170 = 0x74; DAT_0046a1b0 = FUN_00412ac4(0x3eba); DAT_0046a1ae = 1; DAT_0046a17a = 1; DAT_0046a172 = 0xb2; DAT_0046a174 = 0x74; DAT_0046a176 = 0x14; DAT_0046a178 = 0x14; DAT_0046a1b4 = 0xc1; DAT_0046a1b6 = 0x77; DAT_0046a1f6 = FUN_00412ac4(0x3ebb); DAT_0046a1f4 = 1; DAT_0046a1c0 = 1; DAT_0046a1b8 = 0xc1; DAT_0046a1ba = 0x77; DAT_0046a1bc = 0x14; DAT_0046a1be = 0x14; DAT_0046a1fa = 0xd8; DAT_0046a1fc = 0x76; DAT_0046a23c = FUN_00412ac4(0x3ebc); DAT_0046a23a = 1; DAT_0046a206 = 1; DAT_0046a1fe = 0xd8; DAT_0046a200 = 0x76; DAT_0046a202 = 0x14; DAT_0046a204 = 0x14; DAT_00469fbf = 9; DAT_0046a2d8 = FUN_00412ac4(0x2b2c); DAT_0046a2dc = FUN_00412ac4(0x2b2d); break; case 0x14: _DAT_0046977a = 6; _DAT_0046977c = 4; DAT_004697a8 = 0x3e8b; DAT_0046978a = 0x3e87; DAT_0046978c = 0x3e88; DAT_004697aa = 16000; DAT_0046978e = 0x3e81; _DAT_004697ac = 0x3e87; DAT_00469790 = 0x3e84; _DAT_004697ae = 0x3e8a; DAT_00469792 = 0x3e92; DAT_00469794 = 0x3e93; _DAT_00469796 = 0xffff; DAT_00469fc6 = 0xa0; DAT_00469fc8 = 0x50; DAT_00469fca = 0x66; DAT_00469fcc = 0x15; DAT_0046a00c = FUN_00412ac4(0x3ebd); DAT_0046a00a = 7; DAT_00469fd6 = 1; DAT_00469fce = 0x67; DAT_00469fd0 = 0x35; DAT_00469fd2 = 0x22; DAT_00469fd4 = 0x46; DAT_00469fe0 = 1; DAT_00469fd8 = 0x73; DAT_00469fda = 0x15; DAT_00469fdc = 0x3d; DAT_00469fde = 0x21; DAT_00469fea = 1; DAT_00469fe2 = 0xae; DAT_00469fe4 = 0x15; DAT_00469fe6 = 0x4a; DAT_00469fe8 = 0x12; DAT_0046a010 = 0x99; DAT_0046a012 = 0; DAT_0046a052 = FUN_00412ac4(0x3ebe); DAT_0046a050 = 5; DAT_0046a01c = 1; DAT_0046a014 = 0x9a; DAT_0046a016 = 0xe; DAT_0046a018 = 0x28; DAT_0046a01a = 7; DAT_0046a026 = 1; DAT_0046a01e = 0xb9; DAT_0046a020 = 5; DAT_0046a022 = 0x3c; DAT_0046a024 = 10; DAT_0046a030 = 1; DAT_0046a028 = 0xe9; DAT_0046a02a = 0; DAT_0046a02c = 0x1f; DAT_0046a02e = 0x48; DAT_0046a03a = 1; DAT_0046a032 = 0xf3; DAT_0046a034 = 0x47; DAT_0046a036 = 0x19; DAT_0046a038 = 0x4d; DAT_0046a056 = 0xe8; DAT_0046a058 = 0x21; DAT_0046a098 = FUN_00412ac4(0x3ebf); DAT_0046a096 = 5; DAT_0046a062 = 1; DAT_0046a05a = 0x106; DAT_0046a05c = 0x1f; DAT_0046a05e = 0x10; DAT_0046a060 = 0x78; DAT_0046a06c = 1; DAT_0046a064 = 0xe8; DAT_0046a066 = 0x96; DAT_0046a068 = 0x41; DAT_0046a06a = 0x34; DAT_0046a09c = 8; DAT_0046a09e = 0x8a; DAT_0046a0de = FUN_00412ac4(0x3ec0); DAT_0046a0dc = 0; DAT_0046a0a8 = 1; DAT_0046a0a0 = 8; DAT_0046a0a2 = 0x8a; DAT_0046a0a4 = 0x1e; DAT_0046a0a6 = 0x1e; DAT_0046a0e2 = 0x49; DAT_0046a0e4 = 0x8a; DAT_0046a124 = FUN_00412ac4(0x3ec1); DAT_0046a122 = 0; DAT_0046a0ee = 1; DAT_0046a0e6 = 0x49; DAT_0046a0e8 = 0x8a; DAT_0046a0ea = 0x1e; DAT_0046a0ec = 0x1e; DAT_00469fbe = 2; DAT_00469fc3 = 2; DAT_00469fc5 = 1; DAT_0046a2d8 = FUN_00412ac4(0x2b0c); DAT_0046a2dc = FUN_00412ac4(0x2b0d); } FUN_00412e70(); FUN_0041395c(DAT_0046a2d8,CONCAT22(extraout_var,DAT_00469fc6),CONCAT22(extraout_var,DAT_00469fc8), 1); DAT_0046977e = 0x3e86; DAT_00469780 = 16000; DAT_00469770 = Resource::Load(0x3e86,&_TEXT38); return; } void FUN_0044a970(void) { short sVar1; undefined4 unaff_ESI; undefined4 unaff_EDI; FUN_00430de8(6,0x5d,0x4d,0xbd); sVar1 = 0; do { if ('\0' < (char)(&DAT_00469fbe)[sVar1]) { unaff_ESI = CONCAT22((short)((uint)unaff_ESI >> 0x10), *(undefined2 *)((int)&DAT_00463264 + sVar1 * 0xf)); unaff_EDI = CONCAT22((short)((uint)unaff_EDI >> 0x10), *(undefined2 *)((int)&DAT_00463266 + sVar1 * 0xf)); BigThing6Eh::processNodes_((&DAT_0046a2e0)[sVar1]); FUN_00412e70(); FUN_0041395c((&DAT_0046a2e0)[sVar1],unaff_ESI,unaff_EDI,5); } sVar1 = sVar1 + 1; } while (sVar1 < 8); return; } void FUN_0044a9f7(void) { short x; short y; short sVar1; char local_10 [12]; Nfnt::LoadWithCache(15000); sVar1 = 0; do { if ('\0' < (char)(&DAT_00469fbe)[sVar1]) { x = *(short *)((int)&DAT_00463269 + sVar1 * 0xf); y = *(short *)((int)&DAT_0046326b + sVar1 * 0xf); Sprintf_(local_10,&DAT_00463367,(int)(char)(&DAT_00469fbe)[sVar1]); Draw::String(15000,local_10,x,y,0); } sVar1 = sVar1 + 1; } while (sVar1 < 8); FUN_00430abc(6,0x5d,0x4d,0xbd); Nfnt::Unload(15000); return; } void FUN_0044aa9c(void) { short sVar1; short sVar2; ushort uVar3; ushort uVar4; undefined4 uVar5; int iVar6; short sVar7; short in_stack_00000004; short in_stack_00000008; sVar7 = 0; do { if ((&DAT_00469ed4)[sVar7 * 0xb] == 9) break; sVar7 = sVar7 + 1; } while (sVar7 < 10); sVar1 = *(short *)(&DAT_004631b4 + DAT_00469fb8 * 4); sVar2 = *(short *)(&DAT_004631b6 + DAT_00469fb8 * 4); uVar3 = FUN_00413774(*(undefined4 *)(DAT_0046a2d0 + 0x1e),0); uVar4 = FUN_00413794(*(undefined4 *)(DAT_0046a2d0 + 0x1e),0); if ((((0x6b < in_stack_00000004) && (0x1e < in_stack_00000008)) && ((int)in_stack_00000004 + (int)(short)uVar3 < 0x1ef)) && ((int)in_stack_00000008 + (int)(short)uVar4 < 0x128)) { (&DAT_00469ed4)[sVar7 * 0xb] = DAT_00469fb8; (&DAT_00469ed6)[sVar7 * 0xb] = in_stack_00000004; (&DAT_00469ed8)[sVar7 * 0xb] = in_stack_00000008; (&DAT_00469eda)[sVar7 * 0xb] = uVar3; (&DAT_00469edc)[sVar7 * 0xb] = uVar4; *(short *)(&DAT_00469ede + sVar7 * 0x16) = sVar1 + in_stack_00000004; *(short *)(&DAT_00469ee0 + sVar7 * 0x16) = sVar2 + in_stack_00000008; uVar5 = FUN_00412ac4(DAT_00469fb8 + 0x3ec2); *(undefined4 *)((int)&DAT_00469ee2 + sVar7 * 0x16) = uVar5; iVar6 = PickapuzzleHitTest_((&DAT_00469ed6)[sVar7 * 0xb],(&DAT_00469ed8)[sVar7 * 0xb], (&DAT_00469eda)[sVar7 * 0xb],(&DAT_00469edc)[sVar7 * 0xb],5, FUN_00448280); *(int *)((int)&DAT_00469ee6 + sVar7 * 0x16) = iVar6; *(int *)(*(int *)((int)&DAT_00469ee6 + sVar7 * 0x16) + 0x1e) = sVar7 + 1000; FUN_00412e70(); FUN_0041395c(*(undefined4 *)((int)&DAT_00469ee2 + sVar7 * 0x16), CONCAT22((short)((uint)(sVar7 * 0xb) >> 0x10),(&DAT_00469ed6)[sVar7 * 0xb]), CONCAT22((short)((uint)(sVar7 * 0xb) >> 0x10),(&DAT_00469ed8)[sVar7 * 0xb]),5); FUN_004465a5(0x1f74,5,0); DAT_00463340 = 1; DAT_00469fb8 = 9; FUN_0044b1d5(); } return; } void FUN_0044aca2(void) { short sVar1; int iVar2; short sVar3; FUN_004465a5(0x1f5c,5,0); sVar3 = 0; do { if ((&DAT_00469ed4)[sVar3 * 0xb] != 9) { iVar2 = FUN_0044ad2f(); sVar1 = (short)iVar2; if ((sVar1 == -1) || ((&DAT_0046a00a)[sVar1 * 0x23] == 8)) { FUN_0044ae6b(); FUN_0044a970(); FUN_0044a9f7(); } else { DAT_00463340 = 1; (&DAT_00469ed4)[sVar3 * 0xb] = 9; (&DAT_0046a00a)[sVar1 * 0x23] = 8; FUN_0044b1d5(); } } sVar3 = sVar3 + 1; } while (sVar3 < 10); return; } int FUN_0044ad2f(void) { undefined4 uVar1; short sVar2; int iVar3; short in_stack_00000004; iVar3 = 0; do { if ((&DAT_0046a00a)[(short)iVar3 * 0x23] == (&DAT_00469ed4)[in_stack_00000004 * 0xb]) { sVar2 = 0; do { if (((&DAT_00469fd6)[(short)iVar3 * 0x23 + sVar2 * 5] != 0) && (uVar1 = FUN_0044ae24(), (short)uVar1 != 0)) { return iVar3; } sVar2 = sVar2 + 1; } while (sVar2 < 6); } iVar3 = iVar3 + 1; if (9 < (short)iVar3) { return -1; } } while( true ); } undefined4 FUN_0044ae24(void) { short in_stack_00000004; short in_stack_00000008; short in_stack_0000000c; short in_stack_00000010; short in_stack_00000014; short in_stack_00000018; if ((((in_stack_0000000c <= in_stack_00000004) && ((int)in_stack_00000004 < (int)in_stack_0000000c + (int)in_stack_00000014)) && (in_stack_00000010 <= in_stack_00000008)) && ((int)in_stack_00000008 < (int)in_stack_00000010 + (int)in_stack_00000018)) { return CONCAT22((short)((uint)((int)in_stack_00000010 + (int)in_stack_00000018) >> 0x10),1); } return 0; } void FUN_0044ae6b(void) { char cVar1; short sVar2; short sVar3; short sVar4; short sVar5; short sVar6; uint extraout_ECX; undefined4 extraout_EDX; undefined4 unaff_ESI; undefined4 uVar7; undefined4 unaff_EDI; undefined4 uVar8; short in_stack_00000004; uint uVar9; short local_6; sVar2 = (&DAT_00469ed4)[in_stack_00000004 * 0xb]; uVar8 = CONCAT22((short)((uint)unaff_EDI >> 0x10),(&DAT_00469ed6)[in_stack_00000004 * 0xb]); uVar7 = CONCAT22((short)((uint)unaff_ESI >> 0x10),(&DAT_00469ed8)[in_stack_00000004 * 0xb]); sVar3 = (&DAT_00469ed6)[in_stack_00000004 * 0xb]; sVar4 = *(short *)((int)&DAT_00463264 + sVar2 * 0xf); sVar5 = (&DAT_00469ed8)[in_stack_00000004 * 0xb]; sVar6 = *(short *)((int)&DAT_00463266 + sVar2 * 0xf); (&DAT_00469ed4)[in_stack_00000004 * 0xb] = 9; FUN_004465a5(0x4a75,5,0); local_6 = 0; do { BigThing6Eh::processNodes_(*(undefined4 *)((int)&DAT_00469ee2 + in_stack_00000004 * 0x16)); FUN_00412e70(); FUN_0041395c(*(undefined4 *)((int)&DAT_00469ee2 + in_stack_00000004 * 0x16),uVar8,uVar7,5); FUN_00412784(); local_6 = local_6 + 1; uVar8 = CONCAT22((short)((uint)uVar8 >> 0x10), (short)uVar8 - (short)(((int)sVar3 - (int)sVar4) / 5)); uVar7 = CONCAT22((short)((uint)uVar7 >> 0x10), (short)uVar7 - (short)(((int)sVar5 - (int)sVar6) / 5)); } while (local_6 < 5); uVar9 = *(uint *)((int)&DAT_00469ee2 + in_stack_00000004 * 0x16); FUN_00412d0c(in_stack_00000004 * 0xb,extraout_EDX,extraout_ECX,uVar9); cVar1 = (&DAT_00469fbe)[sVar2]; (&DAT_00469fbe)[sVar2] = (&DAT_00469fbe)[sVar2] + '\x01'; if (cVar1 == '\0') { FUN_00412e70((int)sVar2,0,uVar9,(&DAT_0046a2e0)[sVar2]); } FUN_00448097(); FUN_0044a970(); FUN_0044a9f7(); return; } void FUN_0044b030(void) { FUN_0044a970(); FUN_0043fef9(DAT_0046333e); FUN_0044a9f7(); return; } void FUN_0044b048(void) { short in_stack_00000004; short in_stack_00000008; char local_a4 [80]; char local_54 [80]; Nfnt::LoadWithCache(15000); FUN_00430de8(10,0x14a,0xfa,0x28); GetWinapiString(local_a4,0x4ea0); Sprintf_(local_54,local_a4,(int)in_stack_00000004,(int)in_stack_00000008); Draw::String(15000,local_54,10,0x16d,0); FUN_00430abc(10,0x14a,0x96,0x28); Nfnt::Unload(15000); return; } void FUN_0044b0dc(void) { undefined2 *puVar1; short sVar2; undefined2 *puVar3; undefined2 *puVar4; short in_stack_00000004; if (in_stack_00000004 == 0) { PoolFree(DAT_00469ea4); } DAT_00469ea8 = 0; sVar2 = 0; do { if ((&DAT_00469fbe)[sVar2] != '\0') { DAT_00469ea8 = DAT_00469ea8 + 1; } sVar2 = sVar2 + 1; } while (sVar2 < 8); puVar3 = PoolAlloc((DAT_00469ea8 + 1) * 0x10); sVar2 = 0; puVar1 = &DAT_004631d4; DAT_00469ea4 = puVar3; do { puVar4 = puVar1; if ((&DAT_00469fbe)[sVar2] != '\0') { *puVar3 = *puVar4; puVar3[1] = puVar4[1]; puVar3[3] = puVar4[3]; puVar3[2] = puVar4[2]; *(undefined4 *)(puVar3 + 6) = (&DAT_0046a334)[sVar2]; puVar3[5] = 0; puVar3 = puVar3 + 8; } sVar2 = sVar2 + 1; puVar1 = puVar4 + 8; } while (sVar2 < 8); *puVar3 = puVar4[8]; puVar3[1] = puVar4[9]; puVar3[3] = puVar4[0xb]; puVar3[2] = puVar4[10]; *(undefined4 *)(puVar3 + 6) = DAT_0046a354; puVar3[5] = 0; FUN_0043b9d2(); return; } void FUN_0044b1c8(void) { FUN_0043b9d2(); return; } void FUN_0044b1d5(void) { FUN_0044b0dc(); return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_0044b24d(void) { if (_DAT_0046a358 == 0) { if (*(int *)(DAT_0046a35c + DAT_0046336c * 4) == 0) { if (DAT_00463374 != (code *)0x0) { (*DAT_00463374)(); } if ((_DAT_0046336e == 0) && (*(int *)(*(int *)(DAT_0046a360 + DAT_0046336c * 4) + 8) != 0)) { (**(code **)(*(int *)(DAT_0046a360 + DAT_0046336c * 4) + 8))(); return; } } else if (_DAT_0046336e == 0) { _DAT_0046336e = 1; FUN_00413a24(); if ((*(int *)(DAT_0046a360 + DAT_0046336c * 4) != 0) && (*(int *)(*(int *)(DAT_0046a360 + DAT_0046336c * 4) + 4) != 0)) { (**(code **)(*(int *)(DAT_0046a360 + DAT_0046336c * 4) + 4))(); } *(undefined4 *)(DAT_0046a364 + DAT_0046336c * 4) = *(undefined4 *)(DAT_0046a360 + DAT_0046336c * 4); *(undefined4 *)(DAT_0046a360 + DAT_0046336c * 4) = *(undefined4 *)(DAT_0046a35c + DAT_0046336c * 4); *(undefined4 *)(DAT_0046a35c + DAT_0046336c * 4) = 0; (*(code *)**(undefined4 **)(DAT_0046a360 + DAT_0046336c * 4))(); FUN_00413a2c(); _DAT_0046336e = 0; return; } } else { _DAT_0046a358 = 1; } return; } void FUN_0044b3c6(void) { undefined4 in_stack_00000004; DAT_0046336c = DAT_0046336c + 1; *(undefined4 *)(DAT_0046a35c + DAT_0046336c * 4) = in_stack_00000004; return; } void FUN_0044b3e5(void) { short sVar1; sVar1 = DAT_0046336c; DAT_0046336c = DAT_0046336c + -1; if ((*(int *)(DAT_0046a360 + sVar1 * 4) != 0) && (*(int *)(*(int *)(DAT_0046a360 + sVar1 * 4) + 4) != 0)) { (**(code **)(*(int *)(DAT_0046a360 + sVar1 * 4) + 4))(); } *(undefined4 *)(DAT_0046a360 + sVar1 * 4) = 0; return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void __stdcall FUN_0044b434(undefined4 param_1,undefined4 param_2) { short sVar1; if (_DAT_00463370 == 0) { DAT_0046a35c = PoolAlloc((int)(short)param_1 << 2); DAT_0046a360 = PoolAlloc((int)(short)param_1 << 2); DAT_0046a364 = PoolAlloc((int)(short)param_1 << 2); sVar1 = 0; if (0 < (short)param_1) { do { *(undefined4 *)((int)DAT_0046a360 + sVar1 * 4) = 0; DAT_0046a35c[sVar1] = 0; sVar1 = sVar1 + 1; } while (sVar1 < (short)param_1); } *DAT_0046a35c = param_2; _DAT_00463370 = 1; } return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_0044b4ba(void) { undefined2 in_stack_00000004; _DAT_0046a358 = in_stack_00000004; return; } undefined4 __cdecl Game::DialogProc(HWND window,short param_2,ushort param_3) { uint uVar1; int iVar2; int iVar3; tagRECT local_14; if (param_2 == 0x47) { return 0; } if (param_2 == 0x110) { GetWindowRect(window,&local_14); uVar1 = (_DesktopRect.right - _DesktopRect.left) - (int)(short)(((short)local_14.right - (short)local_14.left) + 1); iVar2 = (int)uVar1 >> 1; if (iVar2 < 0) { iVar2 = iVar2 + (uint)((uVar1 & 1) != 0); } uVar1 = (_DesktopRect.bottom - _DesktopRect.top) - (int)(short)(((short)local_14.bottom - (short)local_14.top) + 1); iVar3 = (int)uVar1 >> 1; if (iVar3 < 0) { iVar3 = iVar3 + (uint)((uVar1 & 1) != 0); } SetWindowPos(window,(HWND)0x0,(int)(short)((short)iVar2 + (short)_DesktopRect.left), (int)(short)((short)iVar3 + (short)_DesktopRect.top + DAT_00464858),0,0,5); return 1; } if (param_2 == 0x111) { if (param_3 < 0x3ea) { if ((param_3 == 0x3e9) || (param_3 == 1)) { EndDialog(window,1); return 1; } if (param_3 == 2) { LAB_0044b5f1: EndDialog(window,0); return 1; } } else { if (param_3 == 0x3ea) goto LAB_0044b5f1; if (param_3 == 0x641) { return 1; } } } return 0; } void __cdecl FUN_0044b60a(ushort param_1) { DialogBoxParamA(_Module,(LPCSTR)(uint)param_1,Game::window,Game::DialogProc,0); return; } // WARNING: Heritage AFTER dead removal. Example location: EAX : 0x0044b832 // WARNING: Globals starting with '_' overlap smaller symbols at the same address // WARNING: Restarted to delay deadcode elimination for space: register undefined4 FUN_0044b62f(void) { undefined4 uVar1; uint uVar2; int iVar3; UINT UVar4; char *pcVar5; undefined4 extraout_EDX; undefined4 extraout_EDX_00; CHAR *pCVar6; LPSTR *ppCVar7; CHAR local_214 [260]; CHAR local_110 [268]; FUN_00452654(); FUN_0044feec(); FUN_0044feec(); GetVersion(); GetWinapiString((char *)&lpAppName_0046a370,0x4e28); GetPrivateProfileIntA((LPCSTR)&lpAppName_0046a370,lpKeyName_00463384,3,local_110); FUN_00430810(); uVar1 = Is16Color(); if ((short)uVar1 == 0) { GetPrivateProfileIntA((LPCSTR)&lpAppName_0046a370,s_Sound_004633bc,0,local_110); uVar2 = FUN_0044727e(); if ((uVar2 & 1) == 0) { FUN_0044b60a(0xbe0); uVar1 = 0; } else { GetPrivateProfileStringA ((LPCSTR)&lpAppName_0046a370,lpKeyName_0046337c,lpDefault_0046338c, (LPSTR)&lpReturnedString_00462b30,0x50,local_110); GetPrivateProfileStringA ((LPCSTR)&lpAppName_0046a370,lpKeyName_00463380,&DAT_004633c2,local_214,0x50, local_110); pCVar6 = local_214; iVar3 = FUN_0044ffac(); if (iVar3 == 0) { Strcpy(local_214,(char *)&lpReturnedString_00462b30); FUN_0044feec(); FUN_00447763(); } else { FUN_00447763(local_214,extraout_EDX,pCVar6); } UVar4 = GetPrivateProfileIntA((LPCSTR)&lpAppName_0046a370,s_MIDIType_004633c9,-1,local_110); if ((short)UVar4 != -1) { FUN_0044755f(); } if ((uVar2 & 2) == 0) { FUN_0044b60a(0xbe1); uVar1 = 0; } else { UVar4 = GetPrivateProfileIntA((LPCSTR)&lpAppName_0046a370,s_CheatKeys_004633d2,0,local_110); _DAT_00461a9c = (undefined2)UVar4; UVar4 = GetDriveTypeA((LPCSTR)0x0); if (UVar4 == 5) { GetWindowsDirectoryA((LPSTR)&lpBuffer_0046a770,0x104); ppCVar7 = &lpBuffer_0046a770; pcVar5 = (char *)FUN_0044ffac(); if (pcVar5[0x46a770] != '\\') { pcVar5 = FUN_0044feec(pcVar5,extraout_EDX_00,ppCVar7); } } else { pcVar5 = FUN_0044feec(); } uVar1 = CONCAT22((short)((uint)pcVar5 >> 0x10),1); } } } else { FUN_0044b60a(0xbdb); uVar1 = 0; } return uVar1; } void FUN_0044b858(void) { short in_stack_00000004; CHAR local_114 [260]; char local_10 [12]; FUN_00452654(); FUN_0044feec(); FUN_0044feec(); Sprintf_(local_10,&DAT_004633ee,(int)in_stack_00000004); WritePrivateProfileStringA((LPCSTR)&lpAppName_0046a370,s_wavemix_004633f1,local_10,local_114); return; } // WARNING: Heritage AFTER dead removal. Example location: EAX : 0x0044bb40 // WARNING: Globals starting with '_' overlap smaller symbols at the same address // WARNING: Restarted to delay deadcode elimination for space: register void FUN_0044b9e3(void) { ushort uVar1; uint uVar2; void *pvVar3; undefined4 uVar4; int iVar5; uint extraout_ECX; uint extraout_ECX_00; undefined4 extraout_EDX; undefined4 extraout_EDX_00; undefined4 extraout_EDX_01; short sVar6; undefined2 *puVar7; short sVar8; int iVar9; uint uVar10; short local_6; if (1 < _DAT_004634b0) { FUN_0043c32a(); } _DAT_004634b0 = _DAT_004634b0 + 1; FUN_0043c324(); uVar10 = 0; FUN_00411599(); _DAT_00463490 = 0; _DAT_00461aae = 0; _DAT_00461ab0 = 0; _DAT_004633fc = 0; FUN_00431024(0,extraout_EDX,uVar10,0x641); uVar10 = FUN_00412ac4(0x640); uVar2 = FUN_00413cf4(); FUN_00412d0c(uVar2,extraout_EDX_00,extraout_ECX,uVar10); DAT_0046a874 = FUN_00412ac4(0x641); DAT_0046a878 = FUN_00412ac4(0x642); FUN_0041395c(DAT_0046a874,0xffff8000,0xffff8000,5); FUN_00412dc8(DAT_0046a874); FUN_0041395c(DAT_0046a878,0xffff8000,0xffff8000,5); FUN_00412dc8(DAT_0046a878); pvVar3 = Resource::Load(0x640,&_INTS4); Resource::Load(0x641,&_INTS5); sVar8 = 0; do { sVar6 = sVar8 * 5; local_6 = 0; while( true ) { if (_GameState->buildingCompletedLevels[sVar8] < local_6) break; uVar1 = (short)(char)_GameState->field46_0x175e[sVar6 + 2] + (&DAT_00463492)[sVar6]; uVar4 = CONCAT22((char)_GameState->field46_0x175e[sVar6 + 2] >> 7,uVar1); uVar10 = FUN_00412ac4(uVar1); uVar2 = FUN_00413b88(CONCAT22(sVar6 >> 0xf,*(undefined2 *)((int)pvVar3 + sVar6 * 2)),pvVar3, uVar4); FUN_00412d0c(uVar2,extraout_EDX_01,extraout_ECX_00,uVar10); sVar6 = sVar6 + 1; local_6 = local_6 + 1; } sVar8 = sVar8 + 1; } while (sVar8 < 3); FUN_0044073c(); FUN_0044073c(); iVar9 = 0; do { iVar5 = iVar9 + 0x69b; uVar4 = FUN_00412ac4((ushort)iVar5); sVar8 = (short)iVar9; (&DAT_0046a87c)[sVar8] = uVar4; iVar5 = FUN_0043b58e(uVar4,(int)sVar8,iVar5); (&DAT_0046a88c)[sVar8] = iVar5; *(undefined2 *)((&DAT_0046a88c)[sVar8] + 0x12) = 0; iVar9 = iVar9 + 1; } while ((short)iVar9 < 4); puVar7 = &DAT_004633fe; sVar8 = 0; do { PickapuzzleHitTest_(*puVar7,puVar7[1],puVar7[2],puVar7[3],5, (ClickHandler *)(&PTR_LAB_00463480)[(short)puVar7[4]]); *(undefined4 *)(puVar7 + 6) = (&DAT_0046a88c)[(short)puVar7[4]]; puVar7[5] = 0; puVar7 = puVar7 + 8; sVar8 = sVar8 + 1; } while (sVar8 < 8); FUN_0043b9d2(); _DAT_004633fc = (ushort)(*(short *)_GameState->field46_0x175e == 0xf); FUN_0041029e(); FUN_00446186(0x1784); FUN_004466f9(); FUN_0043139c(); FUN_0042f4e7(); return; } void FUN_0044bc7c(void) { undefined4 uVar1; uint uVar2; int iVar3; undefined4 extraout_EDX; short sVar4; uint uVar5; uint uVar6; FUN_004462e8(0x1784); FUN_0043b9d2(); FUN_00416f98(); sVar4 = 0; do { uVar2 = (&DAT_0046a88c)[sVar4]; uVar1 = FUN_0043b69e(); (&DAT_0046a88c)[sVar4] = uVar1; uVar5 = (&DAT_0046a87c)[sVar4]; uVar2 = FUN_00412d0c((int)sVar4,(int)sVar4,uVar2,uVar5); iVar3 = (int)sVar4; (&DAT_0046a87c)[iVar3] = uVar2; sVar4 = sVar4 + 1; } while (sVar4 < 4); uVar6 = DAT_0046a874; DAT_0046a874 = FUN_00412d0c(uVar2,iVar3,uVar5,DAT_0046a874); DAT_0046a878 = FUN_00412d0c(DAT_0046a874,extraout_EDX,uVar6,DAT_0046a878); FUN_00431348(); return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_0044bd20(void) { short sVar1; short sVar2; int iVar3; short sVar4; uint uVar5; int in_stack_00000004; short in_stack_00000008; short in_stack_0000000c; short in_stack_00000010; byte in_stack_00000014; undefined2 local_c; undefined2 local_a; undefined2 local_8; undefined2 local_6; sVar1 = 0; if ((in_stack_00000014 & 1) != 0) { sVar1 = 0x15; } if ((in_stack_00000014 & 2) != 0) { sVar1 = sVar1 + 0x15; } if ((in_stack_00000014 & 4) != 0) { sVar1 = sVar1 + 0x32; } sVar2 = sVar1 + in_stack_00000010 + 0x14; FUN_00431dc9(); if ((short)in_stack_00000004 < 0) { uVar5 = (int)local_8 - (int)(short)(in_stack_0000000c + 0x14); in_stack_00000004 = (int)uVar5 >> 1; if (in_stack_00000004 < 0) { in_stack_00000004 = in_stack_00000004 + (uint)((uVar5 & 1) != 0); } } else { in_stack_00000004 = in_stack_00000004 + -8; } if (in_stack_00000008 < 0) { iVar3 = (int)local_a - (int)sVar2 >> 1; if (iVar3 < 0) { iVar3 = iVar3 + (uint)(((int)local_a - (int)sVar2 & 1U) != 0); } local_c = (short)iVar3; } else { local_c = in_stack_00000008 + -8; } FUN_00431b20(); _DAT_0046a89e = local_c; uVar5 = in_stack_00000004 + 4; sVar4 = local_c + 4; local_8 = in_stack_0000000c + 8; local_a = sVar1 + in_stack_00000010 + 8; sVar1 = 0; _DAT_0046a89c = (short)in_stack_00000004; _DAT_0046a8a0 = in_stack_0000000c + 0x14; _DAT_0046a8a2 = sVar2; do { local_6 = (short)uVar5; sVar4 = sVar4 + 1; FUN_00431b60(); uVar5 = (uint)(ushort)(local_6 + 1U); local_8 = local_8 + -2; local_a = local_a + -2; sVar1 = sVar1 + 1; } while (sVar1 < 4); DAT_0046a8a4 = local_6 + 1U; DAT_0046a8a6 = sVar4; DAT_0046a8a8 = local_8; _DAT_0046a8aa = local_a; FUN_00431b20(); FUN_00431b20(); uVar5 = (uint)_DAT_0046a8ac; if ((in_stack_00000014 & 1) != 0) { FUN_00431ab0(); FUN_00431ab0(); DAT_0046a8a6 = DAT_0046a8a6 + 0x16; _DAT_0046a8aa = _DAT_0046a8aa + -0x16; uVar5 = in_stack_00000004 + 8; DAT_0046a8ae = local_c + 8; DAT_0046a8b0 = DAT_0046a8a8; _DAT_0046a8b2 = 0x15; } _DAT_0046a8ac = (ushort)uVar5; if ((in_stack_00000014 & 2) != 0) { _DAT_0046a8aa = _DAT_0046a8aa + -0x15; FUN_00431ab0(); FUN_00431ab0(); DAT_0046a8b4 = (short)in_stack_00000004 + 8; DAT_0046a8b6 = local_c + sVar2 + -0x20; DAT_0046a8b8 = DAT_0046a8a8; DAT_0046a8ba = 0x14; } if ((in_stack_00000014 & 4) != 0) { _DAT_0046a8aa = _DAT_0046a8aa + -0x32; } return; } int FUN_0044c09d(void) { char cVar1; int iVar2; char *in_stack_00000004; iVar2 = 0; if (in_stack_00000004 != (char *)0x0) { iVar2 = 1; while (*in_stack_00000004 != '\0') { cVar1 = *in_stack_00000004; in_stack_00000004 = in_stack_00000004 + 1; if (cVar1 == '\n') { iVar2 = iVar2 + 1; } } } return iVar2; } void FUN_0044c276(void) { short sVar1; undefined4 uVar2; undefined4 extraout_EDX; uVar2 = CONCAT22((short)((uint)DAT_0046a90c >> 0x10),*(undefined2 *)(DAT_0046a90c + 0x30)); sVar1 = FUN_0044705a(); if (sVar1 != 0) { FUN_00446b96(*(undefined2 *)(DAT_0046a90c + 0x30),extraout_EDX,uVar2, *(undefined2 *)(DAT_0046a90c + 0x30)); } if (*(short *)(DAT_0046a90c + 0x30) != 0) { FUN_00446367(*(undefined2 *)(DAT_0046a90c + 0x30)); *(undefined2 *)(DAT_0046a90c + 0x30) = 0; } DAT_0046a912 = 3; return; } void FUN_0044c2df(void) { undefined2 *puVar1; puVar1 = PoolAlloc(0x3e); *puVar1 = 0xffff; puVar1[1] = 0xffff; puVar1[4] = 2; puVar1[7] = 0x3eb; puVar1[8] = 0x3ec; puVar1[5] = 2; puVar1[6] = 3; *(undefined4 *)(puVar1 + 0x13) = 0; *(undefined4 *)(puVar1 + 0xf) = 0; *(undefined4 *)(puVar1 + 0x11) = 0; *(undefined4 *)(puVar1 + 0xd) = 0; puVar1[0x17] = 0; *(undefined4 *)(puVar1 + 0x1b) = 0; *(undefined4 *)(puVar1 + 0x19) = 0; return; } void FUN_0044c32f(void) { undefined2 *puVar1; puVar1 = PoolAlloc(0x3e); *puVar1 = 0xffff; puVar1[1] = 0xffff; puVar1[4] = 0; puVar1[7] = 0; puVar1[8] = 0; *(undefined4 *)(puVar1 + 0x13) = 0; *(undefined4 *)(puVar1 + 0xf) = 0; *(undefined4 *)(puVar1 + 0x11) = 0; *(undefined4 *)(puVar1 + 0xd) = 0; puVar1[0x17] = 0; *(undefined4 *)(puVar1 + 0x1b) = 0; *(undefined4 *)(puVar1 + 0x19) = 0; return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address undefined4 __cdecl FUN_0044c371(int param_1) { short sVar1; uint uVar2; ushort uVar3; short sVar4; int iVar5; undefined2 uVar8; BOOL BVar6; uint uVar7; undefined2 extraout_var; int iVar9; int iVar10; uint extraout_ECX; tagMSG local_30; ushort local_12; ushort local_c; short local_a; short local_8; short local_6; local_6 = 0; _DAT_004634c8 = 1; if (DAT_00469544 != (code *)0x0) { (*DAT_00469544)(); } FUN_00413838(); FUN_00416f4d(); _DAT_0046a918 = FUN_0044ca04(); FUN_0044ca7e(); FUN_0043be66(); FUN_004102ee(); FUN_00446bc3(); FUN_00446e68(); DAT_0046a91c = SetCurrentColor(0); FUN_0041029e(); DAT_0046a90c = param_1; DAT_004634d0 = 0xffff; FUN_0043b9f5(); FUN_00412784(); FUN_0044d73f(); local_12 = (ushort)(*(int *)(DAT_0046a90c + 0x1a) != 0); if (*(int *)(DAT_0046a90c + 0x1e) != 0) { local_12 = local_12 | 2; } if (*(short *)(DAT_0046a90c + 8) != 0) { local_12 = local_12 | 4; } FUN_0044bd20(); FUN_00410408(); for (sVar4 = 0; sVar4 < *(short *)(DAT_0046a90c + 8); sVar4 = sVar4 + 1) { if (*(short *)(DAT_0046a90c + 10 + sVar4 * 2) != 0) { iVar5 = FUN_00412ac4(*(ushort *)(DAT_0046a90c + 0xe + sVar4 * 2)); *(int *)(DAT_0046a90c + 0x12 + sVar4 * 4) = iVar5; *(undefined2 *)(iVar5 + 0x4e) = 1; local_c = FUN_00413794(iVar5,0); uVar3 = FUN_00413774(iVar5,0); iVar9 = (int)(0x32U - (int)(short)local_c) >> 1; if (iVar9 < 0) { iVar9 = iVar9 + (uint)((0x32U - (int)(short)local_c & 1) != 0); } local_a = (short)iVar9 + DAT_0046a8a6 + _DAT_0046a8aa; sVar1 = *(short *)(DAT_0046a90c + 10 + sVar4 * 2); if (sVar1 == 1) { iVar9 = (int)DAT_0046a8a8 - (int)(short)uVar3 >> 1; if (iVar9 < 0) { iVar9 = iVar9 + (uint)(((int)DAT_0046a8a8 - (int)(short)uVar3 & 1U) != 0); } local_8 = (short)iVar9 + DAT_0046a8a4; } else if (sVar1 == 2) { iVar9 = (int)DAT_0046a8a8; if (iVar9 < 0) { iVar9 = iVar9 + 3; } iVar10 = (int)(short)uVar3 >> 1; if (iVar10 < 0) { iVar10 = iVar10 + (uint)(((int)(short)uVar3 & 1U) != 0); } local_8 = ((short)(iVar9 >> 2) + DAT_0046a8a4) - (short)iVar10; } else if (sVar1 == 3) { iVar9 = (int)DAT_0046a8a8; if (iVar9 < 0) { iVar9 = iVar9 + 3; } iVar10 = (int)(short)uVar3 >> 1; if (iVar10 < 0) { iVar10 = iVar10 + (uint)(((int)(short)uVar3 & 1U) != 0); } local_8 = ((DAT_0046a8a4 + DAT_0046a8a8) - (short)(iVar9 >> 2)) - (short)iVar10; } iVar9 = PickapuzzleHitTest_(local_8,local_a,uVar3,local_c,5, (ClickHandler *)(&PTR_LAB_004634d4)[sVar4]); uVar8 = (undefined2)((uint)iVar9 >> 0x10); FUN_0041395c(iVar5,CONCAT22(uVar8,local_8),CONCAT22(uVar8,local_a),0xcd); FUN_004129d4(iVar5,(ushort)(sVar4 == *(short *)(DAT_0046a90c + 0x2e))); FUN_00412dc8(iVar5); } } if ((local_12 & 2) != 0) { FUN_0044ced4(); PickapuzzleHitTest_(DAT_0046a8b4,DAT_0046a8b6,DAT_0046a8b8,DAT_0046a8ba,5, (ClickHandler *)&LAB_0044c2cc); } if ((local_12 & 1) != 0) { FUN_0044ced4(); } if (*(short *)(DAT_0046a90c + 8) != 0) { _DAT_0046a914 = _DAT_0046a914 - (local_c + 5); } *(undefined2 *)(DAT_0046a90c + 0x30) = 0; if (*(int *)(DAT_0046a90c + 0x26) == 0) { DAT_0046a912 = 3; } else { FUN_0041704f(); *(undefined4 *)(DAT_0046a90c + 0x2a) = *(undefined4 *)(DAT_0046a90c + 0x26); DAT_0046a912 = 1; } _DAT_004634d2 = 1; while (local_6 == 0) { FUN_00412784(); BVar6 = PeekMessageA(&local_30,(HWND)0x0,0,0,1); if (BVar6 != 0) { TranslateMessage(&local_30); DispatchMessageA(&local_30); } switch(DAT_0046a912) { case 1: if (**(short **)(DAT_0046a90c + 0x2a) == -1) { DAT_0046a912 = 3; } else { *(undefined2 *)(DAT_0046a90c + 0x30) = **(undefined2 **)(DAT_0046a90c + 0x2a); *(int *)(DAT_0046a90c + 0x2a) = *(int *)(DAT_0046a90c + 0x2a) + 2; FUN_004461ff(); FUN_00446778(); DAT_0046a912 = 2; } break; case 2: sVar4 = FUN_0044705a(); if (sVar4 == 0) { iVar5 = FUN_0044ca04(); do { uVar7 = FUN_0044ca04(); } while (uVar7 < iVar5 + 0x19U); FUN_00446367(*(undefined2 *)(DAT_0046a90c + 0x30)); *(undefined2 *)(DAT_0046a90c + 0x30) = 0; DAT_0046a912 = 1; } break; case 4: sVar4 = FUN_00413ed0(*(undefined4 *)(DAT_0046a90c + 0x12)); if ((sVar4 == 0x10) && (sVar4 = FUN_00413ed0(*(undefined4 *)(DAT_0046a90c + 0x16)), sVar4 == 0x10)) { local_6 = 1; } break; case 5: local_6 = 1; } } FUN_0044c276(); uVar7 = extraout_ECX; for (sVar4 = 0; sVar4 < *(short *)(DAT_0046a90c + 8); sVar4 = sVar4 + 1) { uVar2 = *(uint *)(DAT_0046a90c + 0x12 + sVar4 * 4); FUN_00412d0c((int)sVar4,DAT_0046a90c,uVar7,uVar2); uVar7 = uVar2; } FUN_0041408d(); FUN_0043ba1d(); SetCurrentColor(DAT_0046a91c); FUN_0041030c(); FUN_00413868(); FUN_00416ffd(); FUN_0044ca89(); FUN_0043bfee(0xff,0xffff,0); FUN_00446ed9(); DAT_0046a90c = 0; FUN_0044c95d(); _DAT_004634c8 = 0; return CONCAT22(extraout_var,DAT_004634d0); } void FUN_0044c8c2(uint param_1,undefined4 param_2,uint param_3,ushort param_4) { void *pvVar1; undefined2 in_stack_00000008; pvVar1 = Resource::Load(param_4,_pTEXT); FUN_0044c8f3(pvVar1,in_stack_00000008); FUN_0044073c(); return; } void __cdecl FUN_0044c8f3(undefined4 param_1,undefined2 param_2) { void *object; char local_54 [80]; object = (void *)FUN_0044c32f(); *(undefined4 *)((int)object + 0x22) = param_1; GetWinapiString(local_54,0x4e5d); Sprintf_(&DAT_0046a8bc,local_54,&DAT_004634dc); *(undefined **)((int)object + 0x1e) = &DAT_0046a8bc; *(undefined2 *)((int)object + 2) = param_2; FUN_0044c371(object); PoolFree(object); return; } void FUN_0044c950(void) { undefined4 in_stack_00000004; DAT_004634cc = in_stack_00000004; return; } void FUN_0044c95d(void) { if (DAT_004634cc != (code *)0x0) { (*DAT_004634cc)(); } return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_0044c970(void) { MMRESULT MVar1; char *pcVar2; short in_stack_00000004; timecaps_tag local_c; if (_DAT_004634e0 == 0) { MVar1 = timeGetDevCaps(&local_c,8); if (MVar1 == 0x61) { pcVar2 = GetWinapiStringAlloc(0x4ea1); ShowAlertMessage(pcVar2); TurboFree_(pcVar2); } timeBeginPeriod(1); DAT_0046a926 = in_stack_00000004; _DAT_0046a928 = (undefined2)(1000 / (longlong)(int)in_stack_00000004); _DAT_004634e0 = 1; _DAT_0046a92c = 0; } return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_0044c9e9(void) { if (_DAT_004634e0 != 0) { timeEndPeriod(1); _DAT_004634e0 = 0; } return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address int FUN_0044ca04(void) { DWORD DVar1; DVar1 = timeGetTime(); return DVar1 - _DAT_004634e4; } void FUN_0044ca10(void) { return; } undefined2 FUN_0044ca15(void) { return DAT_0046a926; } int FUN_0044ca1c(void) { short in_stack_00000004; return (int)DAT_0046a926 * (int)in_stack_00000004; } uint FUN_0044ca2e(void) { short in_stack_00000004; return (uint)(int)DAT_0046a926 / (uint)(int)in_stack_00000004; } int FUN_0044ca44(void) { int iVar1; int in_stack_00000004; iVar1 = FUN_0044ca04(); return iVar1 + in_stack_00000004; } bool FUN_0044ca51(void) { uint uVar1; uint in_stack_00000004; uVar1 = FUN_0044ca04(); return in_stack_00000004 <= uVar1; } void FUN_0044ca64(void) { uint uVar1; uint in_stack_00000004; while( true ) { uVar1 = FUN_0044ca04(); if (in_stack_00000004 <= uVar1) break; FUN_00426842(); } return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_0044ca7e(void) { _DAT_0046a930 = FUN_0044ca04(); return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_0044ca89(void) { int iVar1; iVar1 = FUN_0044ca04(); _DAT_004634e4 = _DAT_004634e4 + (iVar1 - _DAT_0046a930); return; } void FUN_0044ca9b(void) { int iVar1; uint uVar2; int in_stack_00000004; iVar1 = FUN_0044ca04(); while( true ) { uVar2 = FUN_0044ca04(); if ((uint)(iVar1 + in_stack_00000004) <= uVar2) break; FUN_00426842(); } return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_0044cabc(void) { int iVar1; int in_stack_00000004; iVar1 = FUN_0044ca04(); _DAT_0046a934 = iVar1 + in_stack_00000004; return; } void __stdcall Nfnt::Unload(undefined2 param_1) { Nfnt *node; node = GetFromCache(param_1); if (node != (Nfnt *)0x0) { DlistRemove(cache,&node->node); FUN_0044073c(); PoolFree(node); } return; } uint FUN_0044cb57(void) { ushort uVar1; uint uVar2; undefined2 extraout_var; undefined4 in_stack_00000004; if ((short)in_stack_00000004 == -1) { uVar2 = CONCAT22((short)((uint)in_stack_00000004 >> 0x10),_CurrentColorClamped); } else { uVar1 = ClampColorIndex_((short)in_stack_00000004); uVar2 = CONCAT22(extraout_var,uVar1); } return uVar2; } uint FUN_0044cb74(void) { Nfnt *pNVar1; uint uVar2; undefined2 in_stack_00000004; pNVar1 = Nfnt::GetFromCache(in_stack_00000004); if (pNVar1 == (Nfnt *)0x0) { uVar2 = 0; } else { uVar2 = CONCAT22((short)((uint)pNVar1->inner >> 0x10),*(undefined2 *)(pNVar1->inner + 0x12)); } return uVar2; } short __stdcall GetFontBaselineY_(undefined2 param_1) { Nfnt *pNVar1; short sVar2; pNVar1 = Nfnt::GetFromCache(param_1); if (pNVar1 == (Nfnt *)0x0) { sVar2 = 0; } else { sVar2 = *(short *)(pNVar1->inner + 0x12) - *(short *)(pNVar1->inner + 0x14); } return sVar2; } Nfnt * __stdcall Nfnt::LoadWithCache(ushort resourceId) { Nfnt *result; astruct_1 *inner; Nfnt *node; void *pvVar1; int iVar2; char acStack_54 [80]; result = GetFromCache(resourceId); if (result == (Nfnt *)0x0) { inner = Resource::Load(resourceId,&_NFNT); if (inner == (astruct_1 *)0x0) { // 20136 = "Font resource not available." GetWinapiString(acStack_54,20136); ShowAlertMessage(acStack_54); DoSomethingThenExit_(1); } node = PoolAlloc(0x2e); node->inner = inner; // TODO continue here pvVar1 = FUN_0044cc56(inner); *(void **)(node->field2_0xc + 4) = pvVar1; iVar2 = FUN_0044cc6c(inner); *(int *)node->field2_0xc = iVar2; result = (Nfnt *)FUN_0044cca4(inner,node->field2_0xc + 8); node->resourceId = resourceId; DlistInsert(cache,&node->node,-1); } return result; } void * __stdcall FUN_0044cc56(astruct_1 *param_1) { return ¶m_1->field16_0x10 + param_1->field16_0x10; } int __stdcall FUN_0044cc6c(int param_1) { return (param_1 + 0x10 + *(short *)(param_1 + 0x10) * 2) - (int)(short)(((*(short *)(param_1 + 4) - *(short *)(param_1 + 2)) + 3) * 2); } int FUN_0044cc99(void) { int in_stack_00000004; return in_stack_00000004 + 0x1a; } void __stdcall FUN_0044cca4(int param_1,int *param_2) { int iVar1; undefined4 *puVar2; undefined4 *puVar3; byte bVar4; undefined4 local_14; undefined4 local_10; int local_c; int local_8; bVar4 = 0; iVar1 = FUN_0044cc99(); *param_2 = iVar1; *(short *)(param_2 + 1) = *(short *)(param_1 + 0x18) * 2; local_14 = 0; local_10 = 0; local_c = (int)(short)param_2[1] << 3; local_8 = (int)*(short *)(param_1 + 0xe); puVar2 = &local_14; puVar3 = (undefined4 *)((int)param_2 + 6); for (iVar1 = 4; iVar1 != 0; iVar1 = iVar1 + -1) { *puVar3 = *puVar2; puVar2 = puVar2 + (uint)bVar4 * -2 + 1; puVar3 = puVar3 + (uint)bVar4 * -2 + 1; } return; } short FUN_0044ccf5(void) { byte bVar1; Nfnt *pNVar2; byte bVar3; short sVar4; short in_stack_00000004; byte *in_stack_00000008; sVar4 = 0; pNVar2 = Nfnt::GetFromCache(in_stack_00000004); if (pNVar2 != (Nfnt *)0x0) { while (*in_stack_00000008 != 0) { bVar1 = *in_stack_00000008; in_stack_00000008 = in_stack_00000008 + 1; bVar3 = bVar1; if (*(short *)(*(int *)(pNVar2->field2_0xc + 4) + (uint)bVar1 * 2) == -1) { bVar3 = *(char *)(pNVar2->inner + 4) - 1; } if ((in_stack_00000004 == -1) && (bVar1 == 0x8c)) { sVar4 = sVar4 + 0x10; } else if ((in_stack_00000004 == -1) && (bVar1 == 0x9c)) { sVar4 = sVar4 + 0xf; } else if (((in_stack_00000004 == -1) && (0xbf < bVar1)) && (bVar1 < 0xc6)) { sVar4 = sVar4 + 10; } else if ((in_stack_00000004 == -1) && (bVar1 == 0xc6)) { sVar4 = sVar4 + 0xe; } else if ((in_stack_00000004 == -1) && (bVar1 == 199)) { sVar4 = sVar4 + 10; } else if (((in_stack_00000004 == -1) && (199 < bVar1)) && (bVar1 < 0xcc)) { sVar4 = sVar4 + 8; } else if (((in_stack_00000004 == -1) && (0xcb < bVar1)) && (bVar1 < 0xd0)) { sVar4 = sVar4 + 7; } else if ((in_stack_00000004 == -1) && (bVar1 == 0xd1)) { sVar4 = sVar4 + 0xc; } else if ((in_stack_00000004 == -1) && ((0xd1 < bVar1 && (bVar1 < 0xd7)))) { sVar4 = sVar4 + 0xd; } else if ((in_stack_00000004 == -1) && ((0xd8 < bVar1 && (bVar1 < 0xdd)))) { sVar4 = sVar4 + 0xb; } else if ((in_stack_00000004 == -1) && (bVar1 == 0xdd)) { sVar4 = sVar4 + 10; } else if (((in_stack_00000004 == -1) && (0xdf < bVar1)) && (bVar1 < 0xe6)) { sVar4 = sVar4 + 9; } else if ((in_stack_00000004 == -1) && (bVar1 == 0xe6)) { sVar4 = sVar4 + 0xf; } else if ((in_stack_00000004 == -1) && (bVar1 == 0xe7)) { sVar4 = sVar4 + 7; } else if (((in_stack_00000004 == -1) && (0xe7 < bVar1)) && (bVar1 < 0xec)) { sVar4 = sVar4 + 9; } else if (((in_stack_00000004 == -1) && (0xeb < bVar1)) && (bVar1 < 0xf0)) { sVar4 = sVar4 + 4; } else if (((in_stack_00000004 == -1) && (0xef < bVar1)) && (bVar1 < 0xfd)) { sVar4 = sVar4 + 9; } else if (bVar1 == 10) { sVar4 = sVar4 + 1000; } else { sVar4 = sVar4 + (ushort)*(byte *)(*(int *)(pNVar2->field2_0xc + 4) + 1 + (uint)bVar3 * 2); } } } return sVar4; } void FUN_0044ced4(void) { short sVar1; Nfnt *pNVar2; int iVar3; undefined4 extraout_EDX; undefined4 in_stack_00000004; char *in_stack_00000008; short in_stack_0000000c; short in_stack_00000010; undefined2 in_stack_00000014; undefined4 uVar4; uVar4 = in_stack_00000004; pNVar2 = Nfnt::GetFromCache((short)in_stack_00000004); if (pNVar2 != (Nfnt *)0x0) { sVar1 = FUN_0044ccf5(pNVar2,extraout_EDX,uVar4,in_stack_00000004,in_stack_00000008); iVar3 = (int)sVar1 >> 1; if (iVar3 < 0) { iVar3 = iVar3 + (uint)(((int)sVar1 & 1U) != 0); } sVar1 = GetFontBaselineY_(Nfnt::currentFont); Draw::String((short)in_stack_00000004,in_stack_00000008,in_stack_0000000c - (short)iVar3, sVar1 + in_stack_00000010,in_stack_00000014); } return; } void __stdcall Draw::String(short font,char *text,short x,short y,undefined2 color) { char local_70 [52]; char local_3c [50]; short local_a; Nfnt *local_8; local_a = x; local_8 = Nfnt::GetFromCache(font); if (local_8 == (Nfnt *)0x0) { GetWinapiString(local_70,0x4ea2); Sprintf_(local_3c,local_70,(int)font); ShowAlertMessage(local_3c); } else { FUN_0044d120(); while (*text != '\0') { if (*text == '\n') { text = text + 1; } else { text = text + 1; FUN_0044cfcb(); } } } return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address uint FUN_0044cfcb(void) { short sVar1; short sVar2; int iVar3; Nfnt *pNVar4; undefined2 extraout_var; undefined2 uVar5; byte bVar6; undefined2 in_stack_00000004; uint in_stack_00000008; undefined2 in_stack_0000000c; short in_stack_00000010; ushort local_6; local_6 = 0; pNVar4 = Nfnt::GetFromCache(in_stack_00000004); uVar5 = 0; if (pNVar4 != (Nfnt *)0x0) { iVar3 = pNVar4->inner; sVar1 = *(short *)(iVar3 + 0x12); sVar2 = *(short *)(iVar3 + 0x14); bVar6 = *(byte *)(DAT_00460070 + (in_stack_00000008 & 0xff)); if (*(short *)(*(int *)(pNVar4->field2_0xc + 4) + (uint)bVar6 * 2) == -1) { bVar6 = *(char *)(iVar3 + 4) - 1; } local_6 = (ushort)*(byte *)(*(int *)(pNVar4->field2_0xc + 4) + 1 + (uint)bVar6 * 2); if (*(short *)(*(int *)pNVar4->field2_0xc + 2 + (uint)bVar6 * 2) != *(short *)(*(int *)pNVar4->field2_0xc + (uint)bVar6 * 2)) { FUN_0044d121(); if (_DAT_004634ea != 0) { FUN_0044cb57(); FUN_00431ab0(); } } FUN_00430abc(in_stack_0000000c,in_stack_00000010 - *(short *)(iVar3 + 0x12),local_6, sVar1 + sVar2); uVar5 = extraout_var; } return CONCAT22(uVar5,local_6); } undefined1 FUN_0044d0fb(void) { Nfnt *pNVar1; undefined2 in_stack_00000004; byte in_stack_00000008; pNVar1 = Nfnt::GetFromCache(in_stack_00000004); if (pNVar1 != (Nfnt *)0x0) { return *(undefined1 *)(*(int *)(pNVar1->field2_0xc + 4) + 1 + (uint)in_stack_00000008 * 2); } return 0; } void FUN_0044d120(void) { return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_0044d121(void) { char cVar1; ushort uVar2; uint uVar3; char *pcVar4; char *pcVar5; char *pcVar6; short sVar10; byte *pbVar7; byte *pbVar8; byte *pbVar9; byte bVar11; short sVar12; short sVar13; int iVar14; uint uVar15; byte *pbVar16; char *extraout_EDX; undefined3 uVar17; undefined3 uVar18; byte bVar19; int in_stack_00000004; ushort in_stack_00000008; short in_stack_0000000c; short in_stack_00000010; short in_stack_00000014; short in_stack_00000018; short in_stack_0000001c; short in_stack_00000020; undefined2 in_stack_00000024; char local_29; short local_24; short local_22; short local_20; short local_1e; byte *local_c; char *local_8; iVar14 = (int)in_stack_00000010; if (iVar14 < 0) { iVar14 = iVar14 + 7; } sVar12 = (short)(iVar14 >> 3); uVar15 = (int)in_stack_00000010 & 0x80000007; if ((int)uVar15 < 0) { uVar15 = (uVar15 - 1 | 0xfffffff8) + 1; } local_8 = (char *)(*(int *)(in_stack_00000004 + 0x14) + (int)sVar12); local_24 = in_stack_00000014; in_stack_00000010 = in_stack_00000014 + -1 + in_stack_00000010; iVar14 = (int)in_stack_00000010; if (iVar14 < 0) { iVar14 = iVar14 + 7; } sVar13 = (short)(iVar14 >> 3); uVar3 = (int)in_stack_00000010 & 0x80000007; if ((int)uVar3 < 0) { uVar3 = (uVar3 - 1 | 0xfffffff8) + 1; } uVar2 = (ushort)uVar3; if ((sVar13 != sVar12) || (7 < in_stack_00000014)) { local_24 = 8 - (short)uVar15; } pbVar16 = (byte *)CONCAT22((short)(uVar3 >> 0x10),in_stack_00000024); uVar3 = FUN_0044cb57(); cVar1 = (char)uVar3; sVar10 = (short)(uVar3 >> 0x10); if (_DAT_0046a93c == 0) { local_22 = in_stack_0000000c - in_stack_00000020; local_20 = 0; pcVar4 = extraout_EDX; if (0 < in_stack_00000018) { do { if ((-1 < local_22) && (local_22 < DAT_00467db8)) { pbVar7 = (byte *)FUN_00431a1c(CONCAT22(sVar10,local_22),pcVar4,pbVar16,0,local_22); iVar14 = (int)DAT_00467db6 >> 1; if (iVar14 < 0) { iVar14 = iVar14 + (uint)(((int)DAT_00467db6 & 1U) != 0); } pbVar8 = pbVar7 + iVar14 + -1; iVar14 = (int)(short)in_stack_00000008 >> 1; if (iVar14 < 0) { iVar14 = iVar14 + (uint)(((int)(short)in_stack_00000008 & 1U) != 0); } pbVar9 = pbVar7 + in_stack_0000001c + iVar14; iVar14 = (in_stack_00000008 & 1) - 1; if (iVar14 == 0) { pcVar4 = (char *)0xf0; local_29 = cVar1; } else { pcVar4 = (char *)CONCAT31((int3)((uint)iVar14 >> 8),0xf); local_29 = cVar1 << 4; } bVar19 = *local_8 << ((byte)uVar15 & 0x1f); sVar10 = 0; if (0 < local_24) { do { if ((((bVar19 & 0x80) != 0) && (pbVar7 <= pbVar9)) && (pbVar9 <= pbVar8)) { *pbVar9 = (*pbVar9 & (byte)pcVar4) + local_29; } uVar17 = (undefined3)((uint)pcVar4 >> 8); if ((byte)pcVar4 == 0xf0) { pbVar9 = pbVar9 + 1; pcVar4 = (char *)CONCAT31(uVar17,0xf); local_29 = cVar1 << 4; } else { pcVar4 = (char *)CONCAT31(uVar17,0xf0); local_29 = cVar1; } bVar19 = bVar19 * '\x02'; sVar10 = sVar10 + 1; } while (sVar10 < local_24); } local_c = (byte *)(local_8 + 1); iVar14 = ((int)sVar13 - (int)sVar12) + -1; if (iVar14 != 0 && 0 < (int)sVar13 - (int)sVar12) { for (local_1e = 0; iVar14 = ((int)sVar13 - (int)sVar12) + -1, local_1e < iVar14; local_1e = local_1e + 1) { bVar19 = *local_c; sVar10 = 0; do { if ((((bVar19 & 0x80) != 0) && (pbVar7 <= pbVar9)) && (pbVar9 <= pbVar8)) { *pbVar9 = (*pbVar9 & (byte)pcVar4) + local_29; } uVar17 = (undefined3)((uint)pcVar4 >> 8); if ((byte)pcVar4 == 0xf0) { pbVar9 = pbVar9 + 1; pcVar4 = (char *)CONCAT31(uVar17,0xf); local_29 = cVar1 << 4; } else { pcVar4 = (char *)CONCAT31(uVar17,0xf0); local_29 = cVar1; } bVar19 = bVar19 * '\x02'; sVar10 = sVar10 + 1; } while (sVar10 < 8); local_c = local_c + 1; } } pbVar16 = (byte *)CONCAT22((short)((uint)iVar14 >> 0x10),sVar13); if (sVar13 != sVar12) { bVar19 = *local_c; sVar10 = 0; pbVar16 = local_c; if (uVar2 < 0x8000) { do { if ((((bVar19 & 0x80) != 0) && (pbVar7 <= pbVar9)) && (pbVar9 <= pbVar8)) { bVar11 = (*pbVar9 & (byte)pcVar4) + local_29; pbVar16 = (byte *)CONCAT31((int3)((uint)pbVar16 >> 8),bVar11); *pbVar9 = bVar11; } uVar18 = (undefined3)((uint)pcVar4 >> 8); uVar17 = (undefined3)((uint)pbVar16 >> 8); if ((byte)pcVar4 == 0xf0) { pbVar9 = pbVar9 + 1; pcVar4 = (char *)CONCAT31(uVar18,0xf); pbVar16 = (byte *)(CONCAT31(uVar17,cVar1) << 4); local_29 = (char)pbVar16; } else { pcVar4 = (char *)CONCAT31(uVar18,0xf0); pbVar16 = (byte *)CONCAT31(uVar17,cVar1); local_29 = cVar1; } bVar19 = bVar19 * '\x02'; sVar10 = sVar10 + 1; } while (sVar10 <= (short)uVar2); } } } local_8 = local_8 + *(short *)(in_stack_00000004 + 0x18); local_22 = local_22 + 1; local_20 = local_20 + 1; sVar10 = *(short *)(in_stack_00000004 + 0x18) >> 0xf; } while (local_20 < in_stack_00000018); } } else { local_22 = in_stack_0000000c - in_stack_00000020; local_20 = 0; pcVar4 = extraout_EDX; if (0 < in_stack_00000018) { do { if ((-1 < local_22) && (local_22 < DAT_00467db8)) { pcVar4 = (char *)FUN_00431a1c(CONCAT22(sVar10,local_22),pcVar4,pbVar16,0,local_22); pcVar5 = pcVar4 + DAT_00467db6 + -1; pcVar6 = pcVar4 + (int)in_stack_0000001c + (int)(short)in_stack_00000008; bVar19 = *local_8 << ((byte)uVar15 & 0x1f); sVar10 = 0; if (0 < local_24) { do { if ((((bVar19 & 0x80) != 0) && (pcVar4 <= pcVar6)) && (pcVar6 <= pcVar5)) { *pcVar6 = cVar1; } bVar19 = bVar19 * '\x02'; pcVar6 = pcVar6 + 1; sVar10 = sVar10 + 1; } while (sVar10 < local_24); } local_c = (byte *)(local_8 + 1); iVar14 = ((int)sVar13 - (int)sVar12) + -1; if (iVar14 != 0 && 0 < (int)sVar13 - (int)sVar12) { for (local_1e = 0; iVar14 = ((int)sVar13 - (int)sVar12) + -1, local_1e < iVar14; local_1e = local_1e + 1) { bVar19 = *local_c; sVar10 = 0; do { if ((((bVar19 & 0x80) != 0) && (pcVar4 <= pcVar6)) && (pcVar6 <= pcVar5)) { *pcVar6 = cVar1; } bVar19 = bVar19 * '\x02'; pcVar6 = pcVar6 + 1; sVar10 = sVar10 + 1; } while (sVar10 < 8); local_c = local_c + 1; } } pbVar16 = (byte *)CONCAT22((short)((uint)iVar14 >> 0x10),sVar13); if (sVar13 != sVar12) { bVar19 = *local_c; sVar10 = 0; pbVar16 = local_c; if (uVar2 < 0x8000) { do { if ((((bVar19 & 0x80) != 0) && (pcVar4 <= pcVar6)) && (pcVar6 <= pcVar5)) { pbVar16 = (byte *)CONCAT31((int3)((uint)pbVar16 >> 8),cVar1); *pcVar6 = cVar1; } bVar19 = bVar19 * '\x02'; pcVar6 = pcVar6 + 1; sVar10 = sVar10 + 1; } while (sVar10 <= (short)uVar2); } } } local_8 = local_8 + *(short *)(in_stack_00000004 + 0x18); local_22 = local_22 + 1; local_20 = local_20 + 1; sVar10 = *(short *)(in_stack_00000004 + 0x18) >> 0xf; } while (local_20 < in_stack_00000018); } } return; } undefined2 __stdcall SetCurrentFont(undefined2 font) { undefined2 old; old = Nfnt::currentFont; Nfnt::currentFont = font; return old; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_0044d531(void) { bool bVar1; undefined3 extraout_var; if (_DAT_004634e8 == 0) { Nfnt::cache = DlistNew(); _DAT_004634e8 = 1; bVar1 = Is256Color(); _DAT_0046a93c = (undefined2)CONCAT31(extraout_var,bVar1); } return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_0044d55a(void) { DlistNode *node; DlistNode *pDVar1; if (_DAT_004634e8 != 0) { node = DlistHead(Nfnt::cache); while (node != (DlistNode *)0x0) { pDVar1 = DlistNext(node); Nfnt::Unload(*(undefined2 *)&node[5].prev); node = pDVar1; } PoolFreeIfNotNull(Nfnt::cache); _DAT_004634e8 = 0; } return; } int FUN_0044d5aa(void) { char cVar1; char cVar2; short sVar3; short sVar4; char *pcVar5; char *pcVar6; char *text; bool bVar7; undefined2 in_stack_00000004; short in_stack_00000008; short in_stack_0000000c; short in_stack_00000010; char *in_stack_00000014; int local_10; bVar7 = -1 < in_stack_00000008; local_10 = 0; sVar3 = GetFontBaselineY_(in_stack_00000004); sVar3 = sVar3 + DAT_004634ec; sVar4 = GetFontBaselineY_(in_stack_00000004); in_stack_0000000c = in_stack_0000000c + sVar4; pcVar5 = in_stack_00000014; text = in_stack_00000014; do { if (((((*pcVar5 == ' ') || (*pcVar5 == '\0')) || (*pcVar5 == '\n')) || ((*pcVar5 == '-' || (*pcVar5 == '^')))) || (*pcVar5 == '\r')) { if ((*pcVar5 == '-') || (*pcVar5 == '^')) { pcVar5 = pcVar5 + 1; } cVar1 = *pcVar5; *pcVar5 = '\0'; sVar4 = FUN_0044ccf5(); if (in_stack_00000010 < sVar4) { cVar2 = *in_stack_00000014; *in_stack_00000014 = '\0'; if (bVar7) { Draw::String(in_stack_00000004,text,in_stack_00000008,in_stack_0000000c, _CurrentColorClamped); } in_stack_0000000c = in_stack_0000000c + sVar3; local_10 = local_10 + 1; *in_stack_00000014 = cVar2; *pcVar5 = cVar1; if ((*in_stack_00000014 == '\n') || (pcVar6 = in_stack_00000014, *in_stack_00000014 == '\r') ) { pcVar6 = in_stack_00000014 + 1; } for (; in_stack_00000014 = pcVar6, text = pcVar6, *pcVar6 == ' '; pcVar6 = pcVar6 + 1) { } } else { *pcVar5 = cVar1; pcVar6 = pcVar5 + 1; in_stack_00000014 = pcVar5; } } else { pcVar6 = pcVar5 + 1; } pcVar5 = pcVar6; } while (*pcVar6 != '\0'); sVar4 = FUN_0044ccf5(); if (in_stack_00000010 < sVar4) { cVar1 = *in_stack_00000014; *in_stack_00000014 = '\0'; if (bVar7) { Draw::String(in_stack_00000004,text,in_stack_00000008,in_stack_0000000c,_CurrentColorClamped); } local_10 = local_10 + 1; in_stack_0000000c = in_stack_0000000c + sVar3; *in_stack_00000014 = cVar1; for (; text = in_stack_00000014, *in_stack_00000014 == ' '; in_stack_00000014 = in_stack_00000014 + 1) { } } if (text != (char *)0x0) { if (bVar7) { Draw::String(in_stack_00000004,text,in_stack_00000008,in_stack_0000000c,_CurrentColorClamped); } local_10 = local_10 + 1; } return sVar3 * local_10; } uint FUN_0044d73f(short *param_1) { char cVar1; bool bVar2; short sVar3; short sVar4; undefined4 unaff_EBX; uint3 uVar5; char *in_stack_00000008; short *in_stack_0000000c; short *in_stack_00000010; short local_8; short local_6; bVar2 = false; sVar3 = 0; local_8 = 0; local_6 = 0; LAB_0044d797: do { if (bVar2) { if (in_stack_00000010 != (short *)0x0) { sVar3 = GetFontBaselineY_(0xffff); sVar4 = (short)((int)sVar3 * (int)local_6) + (local_6 + -1) * DAT_004634ec; param_1 = (short *)CONCAT22((short)((uint)((int)sVar3 * (int)local_6) >> 0x10),sVar4); *in_stack_00000010 = sVar4; } if (in_stack_0000000c != (short *)0x0) { *in_stack_0000000c = local_8; param_1 = in_stack_0000000c; } return CONCAT22((short)((uint)param_1 >> 0x10),local_6); } cVar1 = *in_stack_00000008; uVar5 = (uint3)((uint)unaff_EBX >> 8); unaff_EBX = CONCAT31(uVar5,cVar1); param_1 = (short *)((uint)uVar5 << 8); if (cVar1 == '\0') { bVar2 = true; } else { param_1 = (short *)CONCAT31(uVar5,cVar1 + -10); if (((char)(cVar1 + -10) != '\0') && (param_1 = (short *)CONCAT31(uVar5,cVar1 + -0xd), (char)(cVar1 + -0xd) != '\0')) { param_1 = (short *)FUN_0044d0fb(); sVar3 = sVar3 + (short)param_1; in_stack_00000008 = in_stack_00000008 + 1; goto LAB_0044d797; } } local_6 = local_6 + 1; if (local_8 < sVar3) { local_8 = sVar3; } sVar3 = 0; in_stack_00000008 = in_stack_00000008 + 1; } while( true ); } undefined2 FUN_0044d81a(void) { return DAT_004634ec; } undefined2 FUN_0044d821(void) { undefined2 uVar1; undefined2 in_stack_00000004; uVar1 = DAT_004634ec; DAT_004634ec = in_stack_00000004; return uVar1; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_0044d837(void) { undefined2 in_stack_00000004; _DAT_004634ea = in_stack_00000004; return; } void FUN_0044d850(void) { ushort uVar1; int in_stack_00000004; uVar1 = FUN_00413774(*(undefined4 *)(in_stack_00000004 + 10),0); *(ushort *)(in_stack_00000004 + 4) = uVar1; uVar1 = FUN_00413794(*(undefined4 *)(in_stack_00000004 + 10),0); *(ushort *)(in_stack_00000004 + 6) = uVar1; return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void __cdecl FUN_0044d87c(short param_1) { ushort uVar1; int iVar2; uint uVar3; undefined2 extraout_var; undefined4 uVar4; undefined4 extraout_EDX; short roomIndex; undefined4 unaff_ESI; int iVar5; uint uVar6; undefined2 uVar7; if (param_1 != 0) { iVar2 = FUN_00414eb6(); if (*(short *)(iVar2 + 0x10) == 7) { iVar5 = CONCAT22((short)((uint)unaff_ESI >> 0x10),0xbc0); uVar3 = (uint)(ushort)_Actors[0]._26_2_; uVar1 = RoomIsObverse(_Actors[0]._26_2_); if (uVar1 == 0) { iVar5 = iVar5 + 0x66; } *(short *)(iVar2 + 0xe) = (short)iVar5; *(undefined2 *)(iVar2 + 0x10) = 9; uVar6 = CONCAT22((short)((uint)iVar5 >> 0x10),*(undefined2 *)(iVar2 + 0x12)) & 0xffff000f; roomIndex = (short)uVar6; if (_DAT_004697b2 != 0) { _Actors[0]._26_2_ = roomIndex; } *(undefined2 *)(iVar2 + 0x1e) = 4; uVar4 = CONCAT22(extraout_var,*(undefined2 *)(iVar2 + 0x12)); iVar2 = FUN_0041469e(uVar4,extraout_EDX,uVar3,uVar6,uVar4); uVar7 = 0xbc0; uVar1 = RoomIsObverse(roomIndex); if (uVar1 == 0) { uVar7 = 0xc26; } *(undefined2 *)(iVar2 + 0xe) = uVar7; *(undefined2 *)(iVar2 + 0x10) = 9; *(undefined2 *)(iVar2 + 0x1e) = 4; } } return; } void FUN_0044d926(void) { return; } void FUN_0044d92c(void) { undefined4 uVar1; short sVar2; undefined4 unaff_ESI; short in_stack_00000004; uVar1 = DAT_0046a960; sVar2 = 0; if (DAT_0046a9e4 == 0) { if (_Level_partResource->criticalSlotCount == _GameState->installedParts) { sVar2 = 0x7de; unaff_ESI = uVar1; if (_GameState->everBeenReadyToRace_ != 0) { FUN_0043c382(); } } } else if (_Level_partResource->criticalSlotCount != _GameState->installedParts) { sVar2 = 0x7de; unaff_ESI = DAT_0046a95c; } if (sVar2 != 0) { FUN_0041395c(unaff_ESI,0x1ea,0xa0,5); FUN_00412dc8(unaff_ESI); FUN_004129d4(DAT_0046a950,DAT_0046a9e4); FUN_00412dc8(DAT_0046a950); DAT_0046a9e4 = DAT_0046a9e4 ^ 1; if (in_stack_00000004 != 0) { FUN_004465a5(*(undefined2 *)(DAT_0046a97c + 0x18),3,0); if ((in_stack_00000004 != 0) && (DAT_0046a9e4 == 0)) { FUN_004465a5(*(undefined2 *)(DAT_0046a97c + 0x1a),4,0); } } } return; } void FUN_0044da2d(void) { DlistNode *node; short sVar1; undefined4 *in_stack_00000004; node = DlistHead((Dlist *)_Actors[0]._114_4_); *in_stack_00000004 = 0; sVar1 = 0; for (; node != (DlistNode *)0x0; node = DlistNext(node)) { if (((uint)node[6].prev & 0x10000) == 0) { in_stack_00000004[sVar1] = node; sVar1 = sVar1 + 1; } } return; } int FUN_0044da67(void) { int iVar1; int in_stack_00000004; if ((in_stack_00000004 != 0) && (*(short *)(in_stack_00000004 + 0x1c) != -1)) { iVar1 = FUN_0043d893(); return iVar1; } return 0; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_0044dad6(uint param_1,undefined4 param_2,uint param_3) { DAT_0046a954 = FUN_00412ac4(0x7d5); FUN_0041395c(DAT_0046a954,0xffff8000,0xffff8000,0x32); FUN_00412dc8(DAT_0046a954); _DAT_0046a974 = FUN_0044714d(); if (_DAT_0046a974 != 0) { DAT_0046a964 = FUN_00412ac4(0x7e7); } return; } void FUN_0044db32(void) { int iVar1; int in_stack_00000004; short in_stack_0000000c; iVar1 = (int)*(short *)(in_stack_00000004 + 0x1a); if (iVar1 < 0) { iVar1 = iVar1 + 3; } if ((&_Level_partResource->field_0x14)[(short)(iVar1 >> 2)] != '\0') { if (in_stack_0000000c != 0) { FUN_00412998(); return; } FUN_00412998(); } return; } void FUN_0044db81(void) { ushort *puVar1; DlistNode *node; undefined4 uVar2; short sVar3; undefined4 unaff_EDI; short in_stack_00000004; short in_stack_00000008; DlistNode *pDVar5; PartDefinition *pPVar4; DAT_0046a9ee = 0; for (node = DlistHead((Dlist *)_Actors[0]._114_4_); node != (DlistNode *)0x0; node = DlistNext(node)) { *(undefined2 *)((int)&node[0xb].prev + 2) = 0; *(undefined2 *)&node[10].next = 0; if (in_stack_00000004 != 0) { uVar2 = FUN_00412ac4(*(ushort *)((int)&node[2].next + 2)); *(undefined4 *)((int)&node[10].next + 2) = uVar2; FUN_00413af4(); } pDVar5 = node + 9; FUN_0044d850(); if (((uint)node[3].prev & 0x8000) == 0) { *(short *)((int)&node[9].next + 2) = 0x9a - *(short *)((int)&node[9].prev + 2); puVar1 = (ushort *)((int)&node[6].prev + 2); *puVar1 = *puVar1 | 1; pPVar4 = _Level_partDefinitions; uVar2 = CONCAT22((short)((uint)(*(short *)&node[3].prev * 0x31) >> 0x10), *(undefined2 *)&_Level_partDefinitions[*(short *)&node[3].prev].field_0x48); *(undefined2 *)&node[9].next = *(undefined2 *)&_Level_partDefinitions[*(short *)&node[3].prev].field_0x48; } else { sVar3 = in_stack_00000008 - (*(short *)&node[9].prev >> 1); pPVar4 = (PartDefinition *)CONCAT22((short)((uint)unaff_EDI >> 0x10),sVar3); *(short *)&node[9].next = sVar3; sVar3 = 0xdf - *(short *)((int)&node[9].prev + 2); uVar2 = CONCAT22(*(short *)&node[9].prev >> 0xf,sVar3); *(short *)((int)&node[9].next + 2) = sVar3; puVar1 = (ushort *)((int)&node[6].prev + 2); *puVar1 = *puVar1 & 0xfffe; in_stack_00000008 = in_stack_00000008 + -0xa0; DAT_0046a9ee = DAT_0046a9ee + 1; } *(ushort *)&node[9].next = *(ushort *)&node[9].next & 0xfffe; if ((in_stack_00000004 != 0) && (((uint)node[6].prev & 0x80000000) != 0)) { FUN_0044e0bb(uVar2,(int)pPVar4,(uint)pDVar5,(int)node); puVar1 = (ushort *)((int)&node[0xb].prev + 2); *puVar1 = *puVar1 | 2; } } return; } void FUN_0044dc7c(void) { DlistNode *pDVar1; undefined4 uVar2; undefined4 extraout_EDX; undefined4 extraout_EDX_00; DlistNode *pDVar3; DlistNode *node; pDVar3 = (DlistNode *)_Actors[0]._114_4_; pDVar1 = DlistHead((Dlist *)_Actors[0]._114_4_); uVar2 = extraout_EDX; while (node = pDVar1, node != (DlistNode *)0x0) { uVar2 = FUN_00412d0c((uint)node,uVar2,(uint)pDVar3,*(uint *)((int)&node[10].next + 2)); *(undefined4 *)((int)&node[10].next + 2) = uVar2; pDVar1 = DlistNext(node); uVar2 = extraout_EDX_00; pDVar3 = node; } return; } uint FUN_0044dcaa(void) { int in_stack_00000004; int in_stack_00000008; return CONCAT22((short)((uint)in_stack_00000008 >> 0x10), *(short *)(in_stack_00000008 + 10) - *(short *)(in_stack_00000004 + 10)); } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_0044dcbd(void) { uint uVar1; undefined4 extraout_EDX; uint uVar2; int in_stack_00000004; if (DAT_00460268 != 0) { DAT_00460268 = 1; } if ((_DAT_0046350e != 0) && (_DAT_0046350a == -1)) { _DAT_0046350e = 0; FUN_004171a7(); uVar2 = (uint)(ushort)(*(short *)(in_stack_00000004 + 0x1e) - 4000); DAT_0046a984 = FUN_0044e278(); *(ushort *)(DAT_0046a984 + 0x36) = *(ushort *)(DAT_0046a984 + 0x36) & 0x7fff; uVar1 = CONCAT22((short)((uint)DAT_0046a984 >> 0x10),*(undefined2 *)(DAT_0046a984 + 0x36)) & 0xffff7fff; _DAT_0046350a = (short)uVar1; FUN_0044e720(uVar1,extraout_EDX,uVar2,DAT_0046a984); _DAT_0046a9e0 = 1; FUN_004465a5(*(undefined2 *)(DAT_0046a97c + 6),1,0); } return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_0044dd69(void) { int iVar1; int iVar2; int in_stack_00000004; if (_DAT_0046350e != 0) { _DAT_0046350e = 0; iVar1 = DAT_0046a988; iVar2 = DAT_0046a98c; if (*(int *)(in_stack_00000004 + 0x1e) == 0) { iVar1 = DAT_0046a98c; iVar2 = DAT_0046a988; } if ((iVar1 != 0) && ((*(byte *)(iVar1 + 0x5e) & 2) == 0)) { FUN_004171a7(); DAT_0046a984 = iVar1; FUN_0044e720(); _DAT_0046350a = 0; BigThing6Eh::processNodes_(*(undefined4 *)(iVar1 + 0x52)); FUN_004465a5(*DAT_0046a97c,1,0); _DAT_0046a9e0 = 0; if ((iVar2 == 0) || (((int)*(short *)(iVar2 + 0x36) & 0x8000U) == 0)) { _DAT_0046a9e0 = 1; } } } return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_0044de74(void) { uint uVar1; int iVar2; undefined4 uVar3; undefined4 extraout_EDX; undefined4 unaff_EBX; uint uVar4; uint uVar5; if (_DAT_0046350a != -1) { FUN_004465a5(*(undefined2 *)(DAT_0046a97c + 4),1,0); FUN_00417255(); FUN_0043b6bf(); *(undefined2 *)(DAT_0046a984 + 0x5e) = 2; *(ushort *)(DAT_0046a984 + 0x36) = *(ushort *)(DAT_0046a984 + 0x36) | 0x4000; uVar4 = CONCAT22((short)((uint)unaff_EBX >> 0x10),*(undefined2 *)(DAT_0046a984 + 0x60)); FUN_00416378(); uVar1 = FUN_0043d87c(); iVar2 = FUN_00434e8a(); FUN_00416396(); FUN_00414c5a(); uVar5 = *(uint *)(DAT_0046a984 + 0x52); uVar3 = FUN_00412d0c(DAT_0046a984,extraout_EDX,uVar4,uVar5); uVar4 = DAT_0046a984; *(undefined4 *)(DAT_0046a984 + 0x52) = uVar3; FUN_004171a7(uVar3,uVar4,uVar5,DAT_0046a978,1); if (((short)iVar2 == 0) && ((short)uVar1 != 0)) { _GameState->missingCriticalSlots = _GameState->missingCriticalSlots + 1; } _DAT_0046350a = -1; FUN_0043c4ec(); DAT_004605b6 = DAT_004605b6 | 0x20; } return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_0044df5a(void) { undefined2 uVar1; int iVar2; DlistNode *node; uint extraout_ECX; int extraout_EDX; if (_DAT_0046350a != -1) { if (*(short *)(DAT_0046a984 + 8) == 0xb) { uVar1 = *(undefined2 *)(DAT_0046a984 + 10); for (node = DlistHead(DAT_0046aa04); node != (DlistNode *)0x0; node = DlistNext(node)) { FUN_004465a5(*(undefined2 *)(DAT_0046a97c + 0x16),1,0); FUN_0044db32(); _GameState->field46_0x175e[_GameState->level + 2] = (char)uVar1; } _GameState->field33_0x26 = uVar1; *(ushort *)(DAT_0046a984 + 0x5e) = *(ushort *)(DAT_0046a984 + 0x5e) & 0xfffc; FUN_0043b6bf(); FUN_00412dc8(*(undefined4 *)(DAT_0046a984 + 0x52)); } else { if (_DAT_0046a9e0 == 0) { return; } FUN_0043b6bf(); *(undefined2 *)(DAT_0046a984 + 0x5e) = 2; iVar2 = DAT_0046a984; *(ushort *)(DAT_0046a984 + 0x36) = *(ushort *)(DAT_0046a984 + 0x36) | 0x8000; FUN_0044e0bb(iVar2,extraout_EDX,extraout_ECX,DAT_0046a984); if (*(short *)(DAT_0046a984 + 0xe) != 0) { _GameState->installedParts = _GameState->installedParts + 1; } FUN_004465a5(*(undefined2 *)(DAT_0046a97c + 2),1,0); } DAT_004605b6 = DAT_004605b6 | 0x20; FUN_00417255(); _DAT_0046350a = -1; FUN_004171a7(); if ((_Level_partResource->criticalSlotCount == _GameState->installedParts) && (_GameState->everBeenReadyToRace_ == 0)) { _GameState->everBeenReadyToRace_ = 1; FUN_0042fc9c(); } } return; } void FUN_0044e0bb(undefined4 param_1,int param_2,uint param_3,int param_4) { short sVar1; short sVar2; undefined4 uVar3; undefined2 uVar5; int iVar4; int unaff_EBX; short sVar6; short local_6; sVar1 = *(short *)(param_4 + 0x60); sVar2 = *(short *)(param_4 + 0x18); sVar6 = 0; local_6 = 0; if (0 < sVar2) { joined_r0x0044e0f1: do { if (sVar6 < 0x1e) { if (*(short *)(DAT_0046a9e8 + 8 + sVar6 * 0x24) != 0) { sVar6 = sVar6 + 1; goto joined_r0x0044e0f1; } unaff_EBX = sVar6 * 0x24 + DAT_0046a9e8; } *(undefined2 *)(unaff_EBX + 10) = *(undefined2 *)(param_4 + 0x2e + local_6 * 2); *(undefined2 *)(unaff_EBX + 0x14) = 0; *(undefined2 *)(unaff_EBX + 8) = 1; *(undefined2 *)(unaff_EBX + 0xc) = *(undefined2 *)(param_4 + 0x1e + local_6 * 2); *(undefined2 *)(unaff_EBX + 0xe) = *(undefined2 *)(param_4 + 0x26 + local_6 * 2); uVar3 = FUN_00412ac4(*(ushort *)(param_4 + 0x14)); *(undefined4 *)(unaff_EBX + 0x16) = uVar3; uVar5 = (undefined2)((uint)uVar3 >> 0x10); *(short *)(unaff_EBX + 0x1a) = sVar1; *(int *)(unaff_EBX + 0x1c) = param_4; FUN_0041395c(*(undefined4 *)(unaff_EBX + 0x16), CONCAT22(uVar5,*(undefined2 *)(unaff_EBX + 0xc)), CONCAT22(uVar5,*(undefined2 *)(unaff_EBX + 0xe)),*(undefined2 *)(unaff_EBX + 10)) ; if (_GameState->field33_0x26 == -1) { if (sVar1 < 4) { _GameState->field46_0x175e[_GameState->level + 2] = *(undefined1 *)(param_4 + 0x38); } } else { FUN_0044db32(); _GameState->field46_0x175e[_GameState->level + 2] = *(undefined1 *)&_GameState->field33_0x26 ; } FUN_0044d850(); iVar4 = PickapuzzleHitTest_(*(undefined2 *)(unaff_EBX + 0xc),*(undefined2 *)(unaff_EBX + 0xe), *(undefined2 *)(unaff_EBX + 0x10), *(undefined2 *)(unaff_EBX + 0x12), *(short *)(unaff_EBX + 10) + 0x14,FUN_0044dcbd); *(int *)(unaff_EBX + 0x20) = iVar4; FUN_00417206(); FUN_00417216(); FUN_00412dc8(*(undefined4 *)(unaff_EBX + 0x16)); FUN_00435151(DAT_0046aa04,unaff_EBX,FUN_0044dcaa); local_6 = local_6 + 1; } while (local_6 < sVar2); } return; } DlistNode * FUN_0044e278(void) { DlistNode *pDVar1; int iVar2; uint uVar3; undefined4 uVar4; uint extraout_ECX; undefined4 extraout_EDX; DlistNode *node; short in_stack_00000004; DlistNode *local_c; short local_6; pDVar1 = DlistHead(DAT_0046aa04); iVar2 = FUN_0043d893(); if (*(short *)(iVar2 + 0xe) != 0) { _GameState->installedParts = _GameState->installedParts + -1; } local_6 = *(short *)(iVar2 + 0x18); while ((node = pDVar1, node != (DlistNode *)0x0 && (local_6 != 0))) { pDVar1 = DlistNext(node); if (*(short *)((int)&node[3].next + 2) == in_stack_00000004) { if ((_GameState->field33_0x26 != -1) && (*(short *)(iVar2 + 0x14) == *(short *)(iVar2 + 0x12)) ) { FUN_0044db32(); } *(undefined2 *)&node[1].next = 0; uVar3 = FUN_00416e35(); DlistRemove(DAT_0046aa04,node); uVar4 = FUN_00412d0c(uVar3,extraout_EDX,extraout_ECX,*(uint *)((int)&node[2].prev + 2)); *(undefined4 *)((int)&node[2].prev + 2) = uVar4; local_c = node[3].prev; local_6 = local_6 + -1; } } return local_c; } void FUN_0044e33f(void) { ushort uVar1; DlistNode *node; undefined2 uVar4; undefined4 uVar2; undefined4 uVar3; undefined2 extraout_var; undefined4 extraout_EDX; for (node = DlistHead(DAT_0046aa04); node != (DlistNode *)0x0; node = DlistNext(node)) { uVar4 = (undefined2)((uint)node >> 0x10); if (*(int *)((int)&node[2].prev + 2) == 0) { uVar1 = *(ushort *)&node[3].prev[2].prev; uVar2 = CONCAT22((short)((uint)node[3].prev >> 0x10),uVar1); uVar3 = FUN_00412ac4(uVar1); *(undefined4 *)((int)&node[2].prev + 2) = uVar3; FUN_0044d850(&node[1].prev,extraout_EDX,uVar2,&node[1].prev); uVar4 = extraout_var; } FUN_0041395c(*(undefined4 *)((int)&node[2].prev + 2), CONCAT22(uVar4,*(undefined2 *)&node[1].prev), CONCAT22(uVar4,*(undefined2 *)((int)&node[1].prev + 2)), *(undefined2 *)((int)&node[1].next + 2)); FUN_00412dc8(*(undefined4 *)((int)&node[2].prev + 2)); } return; } void FUN_0044e3aa(void) { Dlist *pDVar1; undefined4 uVar2; undefined4 extraout_EDX; undefined4 extraout_EDX_00; Dlist *pDVar3; Dlist *node; pDVar3 = DAT_0046aa04; pDVar1 = (Dlist *)DlistHead(DAT_0046aa04); uVar2 = extraout_EDX; while (node = pDVar1, node != (Dlist *)0x0) { if (*(int *)((int)&node[2].tail + 2) != 0) { uVar2 = FUN_00412d0c((uint)node,uVar2,(uint)pDVar3,*(uint *)((int)&node[2].tail + 2)); *(undefined4 *)((int)&node[2].tail + 2) = uVar2; } pDVar1 = (Dlist *)DlistNext((DlistNode *)node); uVar2 = extraout_EDX_00; pDVar3 = node; } return; } // WARNING: Heritage AFTER dead removal. Example location: EAX : 0x0044e434 // WARNING: Restarted to delay deadcode elimination for space: register void FUN_0044e3e3(void) { DlistNode *node; uint uVar1; undefined4 uVar2; undefined2 uVar3; undefined4 extraout_EDX; for (node = DlistHead((Dlist *)_Actors[0]._114_4_); node != (DlistNode *)0x0; node = DlistNext(node)) { uVar2 = *(undefined4 *)((int)&node[10].next + 2); BigThing6Eh::processNodes_(uVar2); uVar1 = (uint)*(short *)((int)&node[6].prev + 2); if ((((uVar1 & 0x8000) == 0) && (((uint)node[0xb].prev & 0x30000) == 0)) && (uVar2 = FUN_00431cb8(uVar1,extraout_EDX,uVar2), (short)uVar2 != 0)) { uVar3 = (undefined2)((uint)uVar2 >> 0x10); FUN_0041395c(*(undefined4 *)((int)&node[10].next + 2), CONCAT22(uVar3,*(undefined2 *)&node[9].next), CONCAT22(uVar3,*(undefined2 *)((int)&node[9].next + 2)),5); FUN_00412dc8(*(undefined4 *)((int)&node[10].next + 2)); } } return; } // WARNING: Heritage AFTER dead removal. Example location: EAX : 0x0044e50f // WARNING: Restarted to delay deadcode elimination for space: register undefined4 FUN_0044e473(void) { ushort uVar1; short sVar2; DlistNode *node; uint uVar3; undefined4 extraout_EDX; undefined4 extraout_EDX_00; undefined4 extraout_EDX_01; undefined4 extraout_EDX_02; undefined4 extraout_EDX_03; undefined4 extraout_EDX_04; short sVar4; undefined4 uVar5; undefined4 uVar6; uint uVar7; undefined4 uVar8; uVar6 = _Actors[0]._114_4_; node = DlistHead((Dlist *)_Actors[0]._114_4_); uVar5 = 0xffffffff; uVar1 = *(ushort *)(DAT_0046a97c + 8); uVar3 = (uint)uVar1; uVar7 = uVar3; FUN_00446fc9(uVar3,extraout_EDX,uVar6); if (uVar1 == 0) { uVar1 = *(ushort *)(DAT_0046a97c + 10); uVar3 = (uint)uVar1; FUN_00446fc9(uVar3,extraout_EDX_00,uVar7); if (uVar1 == 0) { uVar3 = (uint)*(ushort *)(DAT_0046a97c + 10); FUN_004465a5(*(ushort *)(DAT_0046a97c + 10),2,0); } } sVar2 = DAT_0046aa36; DAT_0046aa36 = DAT_0046aa36 + -6; sVar4 = 6; if (DAT_0046aa36 < 0) { DAT_0046aa36 = 0; uVar5 = 0; sVar4 = sVar2; } if (DAT_0046aa36 == 0) { uVar6 = DAT_0046a9f8; FUN_00413e84(); uVar8 = DAT_0046a9fc; FUN_00413e84(uVar3,extraout_EDX_01,uVar6); uVar6 = DAT_0046a9f0; FUN_00413e84(uVar3,extraout_EDX_02,uVar8); uVar8 = DAT_0046a9f4; FUN_00413e84(uVar3,extraout_EDX_03,uVar6); FUN_00446b08(*(undefined2 *)(DAT_0046a97c + 10),extraout_EDX_04,uVar8); FUN_004465a5(*(undefined2 *)(DAT_0046a97c + 0xc),3,0); } for (; node != (DlistNode *)0x0; node = DlistNext(node)) { *(short *)&node[9].next = *(short *)&node[9].next - sVar4; } return uVar5; } // WARNING: Heritage AFTER dead removal. Example location: EAX : 0x0044e60b // WARNING: Restarted to delay deadcode elimination for space: register bool FUN_0044e56e(void) { ushort uVar1; short sVar2; DlistNode *node; uint uVar3; undefined4 extraout_EDX; undefined4 extraout_EDX_00; undefined4 extraout_EDX_01; undefined4 extraout_EDX_02; undefined4 extraout_EDX_03; undefined4 extraout_EDX_04; short sVar4; bool bVar5; undefined4 uVar6; uint uVar7; undefined4 uVar8; uVar6 = _Actors[0]._114_4_; node = DlistHead((Dlist *)_Actors[0]._114_4_); uVar1 = *(ushort *)(DAT_0046a97c + 8); uVar3 = (uint)uVar1; uVar7 = uVar3; FUN_00446fc9(uVar3,extraout_EDX,uVar6); if (uVar1 == 0) { uVar1 = *(ushort *)(DAT_0046a97c + 10); uVar3 = (uint)uVar1; FUN_00446fc9(uVar3,extraout_EDX_00,uVar7); if (uVar1 == 0) { uVar3 = (uint)*(ushort *)(DAT_0046a97c + 10); FUN_004465a5(*(ushort *)(DAT_0046a97c + 10),2,0); } } sVar2 = DAT_0046aa36; DAT_0046aa36 = DAT_0046aa36 + -6; bVar5 = DAT_0046aa36 < 0; sVar4 = 6; if (bVar5) { DAT_0046aa36 = 0; sVar4 = sVar2; } if (DAT_0046aa36 == 0) { uVar6 = DAT_0046a9f8; FUN_00413e84(); uVar8 = DAT_0046a9fc; FUN_00413e84(uVar3,extraout_EDX_01,uVar6); uVar6 = DAT_0046a9f0; FUN_00413e84(uVar3,extraout_EDX_02,uVar8); uVar8 = DAT_0046a9f4; FUN_00413e84(uVar3,extraout_EDX_03,uVar6); FUN_00446b08(*(undefined2 *)(DAT_0046a97c + 10),extraout_EDX_04,uVar8); FUN_004465a5(*(undefined2 *)(DAT_0046a97c + 0xc),3,0); } for (; node != (DlistNode *)0x0; node = DlistNext(node)) { *(short *)&node[9].next = *(short *)&node[9].next + sVar4; } return !bVar5; } void FUN_0044e66a(void) { uint uVar1; int in_stack_00000004; if (in_stack_00000004 != 0) { FUN_00417255(); PickapuzzleHitTest_(*(undefined2 *)(in_stack_00000004 + 0x48), *(undefined2 *)(in_stack_00000004 + 0x4a), *(undefined2 *)(in_stack_00000004 + 0x4c), *(undefined2 *)(in_stack_00000004 + 0x4e),5,FUN_0044dd69); FUN_00417206(); FUN_00417216(); if (*(short *)(in_stack_00000004 + 0x1c) != -1) { uVar1 = (int)*(short *)(in_stack_00000004 + 0x1c) & 0x7fff; PickapuzzleHitTest_(*(undefined2 *)&_Level_partDefinitions[uVar1].field_0x48, *(undefined2 *)&_Level_partDefinitions[uVar1].field_0x4a, *(undefined2 *)&_Level_partDefinitions[uVar1].field_0x4c, *(undefined2 *)&_Level_partDefinitions[uVar1].field_0x4e,5,FUN_0044dd69); FUN_00417206(); FUN_00417216(); } } return; } void FUN_0044e720(void) { int iVar1; undefined4 extraout_ECX; undefined4 extraout_EDX; int in_stack_00000004; FUN_004162c9(); *(ushort *)(in_stack_00000004 + 0x5e) = *(ushort *)(in_stack_00000004 + 0x5e) | 1; iVar1 = FUN_0043b58e(); FUN_0043b4e2(iVar1,extraout_EDX,extraout_ECX,iVar1); FUN_0043b318(); PickapuzzleHitTest_(0x73,0xe1,0x120,0x5c,0x32,FUN_0044df5a); FUN_00417206(); return; } void FUN_0044e813(void) { int in_stack_00000004; if (DAT_0046a980 == 9) { DAT_0046aa0e = *(undefined2 *)(in_stack_00000004 + 0x1e); DAT_0046a980 = 0xc; } return; } // WARNING: Heritage AFTER dead removal. Example location: EAX : 0x0044e87d // WARNING: Restarted to delay deadcode elimination for space: register void FUN_0044e838(uint param_1,undefined4 param_2,uint param_3,ushort param_4) { uint uVar1; short sVar2; short sVar3; short sVar4; short sVar5; void *pvVar6; uint uVar7; int iVar8; int iVar9; undefined4 uVar10; short *psVar11; int iVar12; void *pvVar13; int extraout_EDX; int extraout_EDX_00; uint uVar14; short sVar15; pvVar6 = Resource::Load(param_4,&_BLUE); DAT_0046aa30 = pvVar6; uVar7 = FUN_0044fcec(); iVar8 = (int)(short)uVar7 << 4; iVar9 = iVar8 / 10; DAT_0046aa08 = (short)iVar9 + 0x1d; uVar7 = FUN_0044fcec(iVar9,iVar8 % 10); iVar8 = (short)uVar7 * 0xc0; iVar9 = iVar8 / 100; DAT_0046aa0a = (short)iVar9 + 0x11; uVar7 = FUN_0044fcec(iVar9,iVar8 % 100); DAT_0046aa0c = (short)uVar7; DAT_0046aa10 = (int)pvVar6 + 6; iVar8 = FUN_0044ffac(); uVar14 = (int)pvVar6 + 6 + iVar8 + 1; uVar7 = (int)DAT_0046aa0c << 2; DAT_0046aa14 = PoolAlloc(uVar7); for (sVar15 = 0; pvVar6 = DAT_0046aa14, sVar15 < DAT_0046aa0c; sVar15 = sVar15 + 1) { *(uint *)((int)DAT_0046aa14 + sVar15 * 4) = uVar14; uVar1 = uVar14; iVar8 = FUN_0044ffac((int)sVar15,pvVar6,uVar7); uVar7 = uVar1; uVar14 = uVar14 + iVar8 + 1; } DAT_0046aa18 = PoolAlloc((int)DAT_0046aa0c << 2); pvVar6 = (void *)((int)DAT_0046aa0c << 2); DAT_0046aa1c = PoolAlloc((uint)pvVar6); iVar8 = extraout_EDX; pvVar13 = DAT_0046aa1c; for (sVar15 = 0; sVar15 < DAT_0046aa0c; sVar15 = sVar15 + 1) { uVar7 = FUN_0044fcec(pvVar13,iVar8,pvVar6); uVar10 = FUN_00412ac4((ushort)uVar7); *(undefined4 *)((int)DAT_0046aa18 + sVar15 * 4) = uVar10; pvVar13 = (void *)FUN_0043b58e(); pvVar6 = DAT_0046aa1c; iVar8 = (int)sVar15; *(void **)((int)DAT_0046aa1c + iVar8 * 4) = pvVar13; uVar14 = uVar14 + 2; } uVar7 = (int)DAT_0046aa0c << 2; DAT_0046aa20 = PoolAlloc(uVar7); for (sVar15 = 0; pvVar6 = DAT_0046aa20, sVar15 < DAT_0046aa0c; sVar15 = sVar15 + 1) { *(uint *)((int)DAT_0046aa20 + sVar15 * 4) = uVar14; uVar1 = uVar14; iVar8 = FUN_0044ffac((int)sVar15,pvVar6,uVar7); uVar7 = uVar1; uVar14 = uVar14 + iVar8 + 1; } uVar7 = FUN_0044fcec(); DAT_0046aa28 = (short)uVar7; iVar8 = uVar14 + 2; psVar11 = PoolAlloc((int)DAT_0046aa28 << 4); DAT_0046aa24 = psVar11; for (sVar15 = 0; sVar15 < DAT_0046aa28; sVar15 = sVar15 + 1) { uVar7 = FUN_0044fcec(); iVar9 = (int)(short)uVar7 << 4; iVar12 = iVar9 / 10; sVar2 = (short)iVar12 + 0x1d; *psVar11 = sVar2; uVar7 = FUN_0044fcec(iVar12,iVar9 % 10); iVar9 = (short)uVar7 * 0xc0; iVar12 = iVar9 / 100; sVar3 = (short)iVar12 + 0x11; psVar11[1] = sVar3; uVar7 = FUN_0044fcec(iVar12,iVar9 % 100); iVar9 = (int)(short)uVar7 << 4; iVar12 = iVar9 / 10; sVar4 = (short)iVar12; psVar11[2] = sVar4; uVar7 = FUN_0044fcec(iVar12,iVar9 % 10); sVar5 = (short)(((short)uVar7 * 0xc0) / 100); psVar11[3] = sVar5; PickapuzzleHitTest_(sVar2,sVar3,sVar4,sVar5,5,FUN_0044e813); uVar7 = FUN_0044fcec(); FUN_00417216(); psVar11[4] = (short)uVar7; *(undefined4 *)(psVar11 + 6) = *(undefined4 *)((int)DAT_0046aa1c + (short)uVar7 * 4); psVar11[5] = (ushort)(sVar5 == 0); iVar8 = iVar8 + 0xc; psVar11 = psVar11 + 8; } pvVar6 = (void *)((int)DAT_0046aa0c << 2); DAT_0046aa2a = PoolAlloc((uint)pvVar6); iVar9 = extraout_EDX_00; pvVar13 = DAT_0046aa2a; for (sVar15 = 0; sVar15 < DAT_0046aa0c; sVar15 = sVar15 + 1) { uVar7 = FUN_0044fcec(pvVar13,iVar9,pvVar6); pvVar6 = DAT_0046aa2a; iVar9 = (int)sVar15; *(int *)((int)DAT_0046aa2a + iVar9 * 4) = iVar8; pvVar13 = (void *)((short)uVar7 + 1); iVar8 = iVar8 + (int)pvVar13 * 2; } return; } // WARNING: Heritage AFTER dead removal. Example location: EAX : 0x0044eb4f // WARNING: Restarted to delay deadcode elimination for space: register void FUN_0044eb32(void) { void *pvVar1; short sVar2; uint uVar3; pvVar1 = DAT_0046aa2a; PoolFree(DAT_0046aa2a); sVar2 = 0; while( true ) { if (DAT_0046aa0c <= sVar2) break; uVar3 = *(uint *)((int)DAT_0046aa1c + sVar2 * 4); FUN_0043b69e((int)sVar2,DAT_0046aa1c,pvVar1); pvVar1 = *(void **)((int)DAT_0046aa18 + sVar2 * 4); FUN_00412d0c((int)sVar2,DAT_0046aa18,uVar3,(uint)pvVar1); sVar2 = sVar2 + 1; } PoolFree(DAT_0046aa18); PoolFree(DAT_0046aa24); PoolFree(DAT_0046aa1c); PoolFree(DAT_0046aa20); PoolFree(DAT_0046aa14); FUN_0044073c(); return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_0044eba7(void) { FUN_00412e18(DAT_0046aa00); _DAT_00463548 = 1; if (DAT_0046a972 != 0) { _DAT_004634f8 = 0; FUN_00446367(DAT_0046a972); DAT_0046a972 = 0; DAT_0046a980 = 10; } return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_0044ebef(void) { uint uVar1; int iVar2; char cVar3; undefined *puVar4; _DAT_00463548 = 0; _DAT_00463544 = 1; FUN_00416f4d(); *(undefined2 *)&_GameState->field_0x1a = 1; SetCurrentColor(0xfff); GetWinapiString(&DAT_0046aa3a,0x4e3d); puVar4 = &DAT_0046aa3a; iVar2 = FUN_0044ffac(); uVar1 = (uint)_GameState >> 8; cVar3 = (char)_GameState->levelInBuilding + '1'; (&DAT_0046aa3a)[iVar2] = cVar3; (&DAT_0046aa3b)[iVar2] = 0; FUN_0044e838(CONCAT22(_GameState->level >> 0xf,*(ushort *)(&DAT_0046356a + _GameState->level * 2)) ,CONCAT31((int3)uVar1,cVar3),(uint)puVar4, *(ushort *)(&DAT_0046356a + _GameState->level * 2)); DAT_0046aa00 = FUN_00412ac4(0x7d7); *(undefined2 *)(DAT_0046aa00 + 0x4e) = 1; FUN_0041395c(DAT_0046aa00,0x18d,0x110,0x3c); FUN_00412dc8(DAT_0046aa00); FUN_00417375(); FUN_00446e68(); return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_0044ecc8(void) { uint uVar1; uint extraout_ECX; undefined4 extraout_EDX; undefined4 extraout_EDX_00; undefined4 extraout_EDX_01; uint uVar2; FUN_0043b9d2(); uVar1 = FUN_0043ba1d(); uVar2 = DAT_0046a958; DAT_0046a958 = FUN_00412d0c(uVar1,extraout_EDX,extraout_ECX,DAT_0046a958); uVar1 = DAT_0046a954; DAT_0046a954 = FUN_00412d0c(DAT_0046a958,extraout_EDX_00,uVar2,DAT_0046a954); DAT_0046aa00 = FUN_00412d0c(DAT_0046a954,extraout_EDX_01,uVar1,DAT_0046aa00); FUN_00416ffd(); _DAT_00463544 = 0; FUN_0044eb32(); FUN_00413868(); FUN_00446ed9(); return; } void FUN_0044ed2d(void) { DAT_0046aa04 = DlistNew(); return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_0044ed39(void) { if ((((_DAT_0046350e != 0) && (_DAT_0046aa34 == 0)) && (_DAT_0046350a == -1)) && (DAT_0046350c != 0)) { _DAT_0046350e = 0; FUN_004465a5(*(undefined2 *)(DAT_0046a97c + 8),3,0); DAT_0046aa36 = 0xa0; _DAT_0046aa34 = -1; DAT_0046350c = DAT_0046350c + -1; DAT_0046a98c = *(undefined4 *)(&DAT_0046a990 + DAT_0046350c * 4); DAT_0046a988 = FUN_0044da67(); FUN_004129d4(DAT_0046a9f8,0); FUN_004129d4(DAT_0046a9fc,0); FUN_00412e18(DAT_0046a9f8); FUN_00412e18(DAT_0046a9fc); FUN_00412e18(DAT_0046a9f0); FUN_00412e18(DAT_0046a9f4); DAT_0046a980 = 6; } return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_0044ee27(void) { if ((((_DAT_0046350e != 0) && (_DAT_0046aa34 == 0)) && (_DAT_0046350a == -1)) && (DAT_0046350c < _DAT_0046a9e2)) { _DAT_0046350e = 0; FUN_004465a5(*(undefined2 *)(DAT_0046a97c + 8),3,0); DAT_0046aa36 = 0xa0; _DAT_0046aa34 = 1; DAT_0046350c = DAT_0046350c + 1; DAT_0046a98c = *(undefined4 *)(&DAT_0046a990 + DAT_0046350c * 4); DAT_0046a988 = FUN_0044da67(); FUN_004129d4(DAT_0046a9f8,1); FUN_004129d4(DAT_0046a9fc,1); FUN_00412e18(DAT_0046a9f8); FUN_00412e18(DAT_0046a9fc); FUN_00412e18(DAT_0046a9f0); FUN_00412e18(DAT_0046a9f4); DAT_0046a980 = 5; } return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_0044ef41(void) { if ((_DAT_0046350e != 0) && (_DAT_0046350a == -1)) { _Actors[0]._54_2_ = 0xffff; (*(code *)_Actors[0]._136_4_)(); _GameState->field34_0x28 = 1; DAT_0046a980 = 3; _DAT_0046350e = 0; } return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_0044efb6(void) { uint uVar1; uint uVar2; int iVar3; uint extraout_ECX; undefined4 extraout_EDX; undefined4 extraout_EDX_00; short sVar4; short sVar5; FUN_00411599(); _DAT_0046350e = 0; _DAT_00463546 = 1; FUN_004102ee(); FUN_0041029e(); FUN_00413828(); _DAT_00461ab0 = 0; _DAT_00461aae = 1; FUN_00413acc(0x94,0xffff,0x16b,0xffff); DAT_00469544 = &LAB_0044e799; DAT_0046a9e4 = 0; DlistInit(DAT_0046aa04); DAT_0046a9e8 = PoolAlloc(0x438); sVar5 = 0; do { *(undefined2 *)((int)DAT_0046a9e8 + sVar5 * 0x24 + 8) = 0; sVar5 = sVar5 + 1; } while (sVar5 < 0x1e); sVar5 = 0; do { for (sVar4 = 0; sVar4 <= _GameState->buildingCompletedLevels[sVar5]; sVar4 = sVar4 + 1) { uVar1 = FUN_00412ac4(sVar4 + 0x7d8); uVar2 = FUN_00413cf4(); FUN_00412d0c(uVar2,extraout_EDX,extraout_ECX,uVar1); } sVar5 = sVar5 + 1; } while (sVar5 < 3); DAT_0046a948 = FUN_00412ac4(_GameState->building + 0x7df); FUN_0041395c(DAT_0046a948,8,0x38,5); FUN_00412dc8(DAT_0046a948); DAT_0046a94c = FUN_00412ac4(_GameState->field29_0x1e + 0x7e1); FUN_0041395c(DAT_0046a94c,0xa6,0x36,5); uVar1 = DAT_0046a94c; uVar2 = FUN_00412dc8(DAT_0046a94c); DAT_0046350c = 0; DAT_00461aa8 = FUN_004474c6(uVar2,extraout_EDX_00,uVar1,2000); DAT_0046a97c = DAT_00461aa8; FUN_00446186(0x1792); FUN_004466f9(); FUN_0044db81(); DAT_004605b6 = 0x20; FUN_004165c3(); FUN_0044e3e3(); FUN_0044e33f(); DAT_0046a9f0 = FUN_00412ac4(0x7d3); FUN_00412e70(); FUN_00413b88(); DAT_0046a9f4 = FUN_00412ac4(0x7d4); FUN_00413b88(); FUN_00412e70(); DAT_0046a9f8 = FUN_00412ac4(0x7d1); FUN_00412e70(); DAT_0046a9fc = FUN_00412ac4(0x7d2); FUN_00412e70(); _DAT_0046a944 = 0; DAT_0046a950 = FUN_00412ac4(0x7de); DAT_0046a95c = FUN_00412ac4(0x7e5); DAT_0046a960 = FUN_00412ac4(0x7e6); FUN_0044d92c(); DAT_004634f4 = FUN_00412ac4(0x7dd); FUN_004129d4(DAT_004634f4,1); FUN_00412e18(DAT_004634f4); DAT_0046a978 = PickapuzzleHitTest_(0x93,0x56,0xda,0x89,7,(ClickHandler *)&LAB_0044e799); PickapuzzleHitTest_(0xb5,0x49,0x36,0x1b,7,FUN_0044ed39); PickapuzzleHitTest_(0x115,0x49,0x36,0x1b,7,FUN_0044ee27); PickapuzzleHitTest_(0x4d,0xc0,0x48,0x4f,5,FUN_0044de74); PickapuzzleHitTest_(0x17b,0x4b,0x4a,0x3a,5,(ClickHandler *)&LAB_0044ef1a); PickapuzzleHitTest_(0x1da,0xd3,0x26,0x6c,5,(ClickHandler *)&LAB_0044de1e); PickapuzzleHitTest_(0x15,0x41,0x30,0xfa,5,FUN_0044ef41); DAT_0046a980 = 0; _DAT_0046350a = 0xffff; _DAT_0046aa34 = 0; DAT_0046a98c = DlistHead((Dlist *)_Actors[0]._114_4_); DAT_0046a988 = FUN_0044da67(); FUN_004171a7(); FUN_0044e66a(); FUN_0044da2d(); FUN_0044ca1c(); FUN_0043c382(); iVar3 = FUN_004352c9(); if ((short)iVar3 != 0) { FUN_0043c382(); } _DAT_0046a9e2 = DAT_0046a9ee + -1; FUN_0043139c(); return; } void FUN_0044fb70(void) { int *in_stack_00000004; short in_stack_00000008; short in_stack_0000000c; *in_stack_00000004 = *in_stack_00000004 + (int)in_stack_00000008; in_stack_00000004[1] = in_stack_00000004[1] + (int)in_stack_0000000c; in_stack_00000004[2] = in_stack_00000004[2] - (int)in_stack_00000008; in_stack_00000004[3] = in_stack_00000004[3] - (int)in_stack_0000000c; return; } void FUN_0044fb97(void) { int *in_stack_00000004; short in_stack_00000008; short in_stack_0000000c; *in_stack_00000004 = *in_stack_00000004 + (int)in_stack_00000008; in_stack_00000004[1] = in_stack_00000004[1] + (int)in_stack_0000000c; in_stack_00000004[2] = in_stack_00000004[2] + (int)in_stack_00000008; in_stack_00000004[3] = in_stack_00000004[3] + (int)in_stack_0000000c; return; } bool FUN_0044fbbe(void) { bool bVar1; short *in_stack_00000004; int *in_stack_00000008; if (((((int)*in_stack_00000004 < *in_stack_00000008) || (in_stack_00000008[2] < (int)*in_stack_00000004)) || ((int)in_stack_00000004[1] < in_stack_00000008[1])) || (in_stack_00000008[3] < (int)in_stack_00000004[1])) { bVar1 = true; } else { bVar1 = false; } return !bVar1; } void FUN_0044fbfd(void) { short *in_stack_00000004; tagPOINT local_c; GetCursorPos(&local_c); ScreenToClient(Game::window,&local_c); *in_stack_00000004 = (short)local_c.x - (short)Game::mouseInputRect.left; in_stack_00000004[1] = (short)local_c.y - (short)Game::mouseInputRect.top; return; } uint FUN_0044fc4d(void) { ushort uVar1; uint uVar2; uint in_stack_00000004; uVar2 = 0; if ((in_stack_00000004 & 1) != 0) { uVar1 = GetAsyncKeyState(1); if ((uVar1 & 0x8000) != 0) { uVar2 = 1; } } if ((in_stack_00000004 & 2) != 0) { uVar1 = GetAsyncKeyState(2); if ((uVar1 & 0x8000) != 0) { uVar2 = uVar2 | 2; } } return uVar2; } void FUN_0044fc8b(void) { FUN_00431b20(); return; } uint FUN_0044fcbb(undefined4 param_1,uint param_2,undefined4 param_3,short *param_4) { return CONCAT22((short)(param_2 >> 0x10),param_4[4] - *param_4); } uint FUN_0044fccc(undefined4 param_1,uint param_2,undefined4 param_3,int param_4) { return CONCAT22((short)(param_2 >> 0x10),*(short *)(param_4 + 0xc) - *(short *)(param_4 + 4)); } uint FUN_0044fcec(void) { undefined2 *in_stack_00000004; return CONCAT22((short)((uint)in_stack_00000004 >> 0x10),*in_stack_00000004); } uint FUN_0044fcf7(void) { undefined2 uVar1; undefined2 *puVar2; int *in_stack_00000004; puVar2 = (undefined2 *)*in_stack_00000004; uVar1 = *puVar2; *in_stack_00000004 = *in_stack_00000004 + 2; return CONCAT22((short)((uint)puVar2 >> 0x10),uVar1); } uint FUN_0044fd09(void) { undefined2 *in_stack_00000004; return CONCAT22((short)((uint)in_stack_00000004 >> 0x10),*in_stack_00000004); } short FUN_0044fd14(void) { byte *in_stack_00000004; return (ushort)in_stack_00000004[1] * 0x100 + (ushort)*in_stack_00000004; } void FUN_0044fd2c(void) { undefined1 uVar1; short sVar2; undefined1 *in_stack_00000004; short in_stack_00000008; sVar2 = 0; if (0 < in_stack_00000008) { do { uVar1 = *in_stack_00000004; *in_stack_00000004 = in_stack_00000004[1]; in_stack_00000004[1] = uVar1; in_stack_00000004 = in_stack_00000004 + 2; sVar2 = sVar2 + 1; } while (sVar2 < in_stack_00000008); } return; } void __stdcall ezFUN_0044fd55(undefined1 *param_1,undefined4 param_2) { undefined1 uVar1; short sVar2; sVar2 = 0; if (0 < (short)param_2) { do { uVar1 = *param_1; *param_1 = param_1[1]; param_1[1] = uVar1; param_1 = param_1 + 2; sVar2 = sVar2 + 1; } while (sVar2 < (short)param_2); } return; } void FUN_0044fd7e(void) { undefined1 uVar1; short sVar2; undefined1 *in_stack_00000004; short in_stack_00000008; sVar2 = 0; if (0 < in_stack_00000008) { do { uVar1 = *in_stack_00000004; *in_stack_00000004 = in_stack_00000004[3]; in_stack_00000004[3] = uVar1; uVar1 = in_stack_00000004[1]; in_stack_00000004[1] = in_stack_00000004[2]; in_stack_00000004[2] = uVar1; in_stack_00000004 = in_stack_00000004 + 4; sVar2 = sVar2 + 1; } while (sVar2 < in_stack_00000008); } return; } void __stdcall ezFUN_0044fdb3(undefined1 *param_1,undefined4 param_2) { undefined1 uVar1; short sVar2; sVar2 = 0; if (0 < (short)param_2) { do { uVar1 = *param_1; *param_1 = param_1[3]; param_1[3] = uVar1; uVar1 = param_1[1]; param_1[1] = param_1[2]; param_1[2] = uVar1; param_1 = param_1 + 4; sVar2 = sVar2 + 1; } while (sVar2 < (short)param_2); } return; } void FUN_0044fde8(void) { undefined1 uVar1; undefined1 *in_stack_00000004; uVar1 = *in_stack_00000004; *in_stack_00000004 = in_stack_00000004[1]; in_stack_00000004[1] = uVar1; return; } void __stdcall ezFUN_0044fdfa(undefined1 *param_1) { undefined1 uVar1; uVar1 = *param_1; *param_1 = param_1[1]; param_1[1] = uVar1; return; } void FUN_0044fe0c(void) { undefined1 uVar1; undefined1 *in_stack_00000004; uVar1 = *in_stack_00000004; *in_stack_00000004 = in_stack_00000004[3]; in_stack_00000004[3] = uVar1; uVar1 = in_stack_00000004[1]; in_stack_00000004[1] = in_stack_00000004[2]; in_stack_00000004[2] = uVar1; return; } char * FUN_0044fe2c(void) { char *pcVar1; undefined1 in_ZF; char *in_stack_00000004; char in_stack_00000008; int in_stack_0000000c; if (in_stack_0000000c != 0) { do { pcVar1 = in_stack_00000004; if (in_stack_0000000c == 0) break; in_stack_0000000c = in_stack_0000000c + -1; pcVar1 = in_stack_00000004 + 1; in_ZF = in_stack_00000008 == *in_stack_00000004; in_stack_00000004 = pcVar1; } while (!(bool)in_ZF); if ((bool)in_ZF) { return pcVar1 + -1; } } return (char *)0x0; } undefined4 * FUN_0044fe70(void) { uint uVar1; undefined1 *puVar2; undefined4 *puVar3; undefined1 *puVar4; undefined4 *puVar5; undefined4 *in_stack_00000004; undefined4 *in_stack_00000008; uint in_stack_0000000c; if (in_stack_00000004 < in_stack_00000008) { puVar3 = in_stack_00000004; for (uVar1 = in_stack_0000000c >> 2; uVar1 != 0; uVar1 = uVar1 - 1) { *puVar3 = *in_stack_00000008; in_stack_00000008 = in_stack_00000008 + 1; puVar3 = puVar3 + 1; } for (in_stack_0000000c = in_stack_0000000c & 3; in_stack_0000000c != 0; in_stack_0000000c = in_stack_0000000c - 1) { *(undefined1 *)puVar3 = *(undefined1 *)in_stack_00000008; in_stack_00000008 = (undefined4 *)((int)in_stack_00000008 + 1); puVar3 = (undefined4 *)((int)puVar3 + 1); } } else if (in_stack_00000004 != in_stack_00000008) { puVar2 = (undefined1 *)((int)in_stack_00000008 + (in_stack_0000000c - 1)); puVar4 = (undefined1 *)((int)in_stack_00000004 + (in_stack_0000000c - 1)); for (uVar1 = in_stack_0000000c & 3; uVar1 != 0; uVar1 = uVar1 - 1) { *puVar4 = *puVar2; puVar2 = puVar2 + -1; puVar4 = puVar4 + -1; } puVar3 = (undefined4 *)(puVar2 + -3); puVar5 = (undefined4 *)(puVar4 + -3); for (in_stack_0000000c = in_stack_0000000c >> 2; in_stack_0000000c != 0; in_stack_0000000c = in_stack_0000000c - 1) { *puVar5 = *puVar3; puVar3 = puVar3 + -1; puVar5 = puVar5 + -1; } } return in_stack_00000004; } char * FUN_0044feec(void) { char cVar1; int iVar2; uint uVar3; uint uVar4; char *pcVar5; char *pcVar6; char *in_stack_00000004; char *in_stack_00000008; iVar2 = -1; pcVar5 = in_stack_00000004; do { pcVar6 = pcVar5; if (iVar2 == 0) break; iVar2 = iVar2 + -1; pcVar6 = pcVar5 + 1; cVar1 = *pcVar5; pcVar5 = pcVar6; } while (cVar1 != '\0'); uVar3 = 0xffffffff; do { pcVar5 = in_stack_00000008; if (uVar3 == 0) break; uVar3 = uVar3 - 1; pcVar5 = in_stack_00000008 + 1; cVar1 = *in_stack_00000008; in_stack_00000008 = pcVar5; } while (cVar1 != '\0'); uVar3 = ~uVar3; pcVar5 = pcVar5 + -uVar3; pcVar6 = pcVar6 + -1; for (uVar4 = uVar3 >> 2; uVar4 != 0; uVar4 = uVar4 - 1) { *(undefined4 *)pcVar6 = *(undefined4 *)pcVar5; pcVar5 = pcVar5 + 4; pcVar6 = pcVar6 + 4; } for (uVar3 = uVar3 & 3; uVar3 != 0; uVar3 = uVar3 - 1) { *pcVar6 = *pcVar5; pcVar5 = pcVar5 + 1; pcVar6 = pcVar6 + 1; } return in_stack_00000004; } char * FUN_0044ff28(void) { char *pcVar1; uint uVar2; bool bVar3; char *in_stack_00000004; char in_stack_00000008; uVar2 = 0xffffffff; bVar3 = true; pcVar1 = in_stack_00000004; do { if (uVar2 == 0) break; uVar2 = uVar2 - 1; bVar3 = *pcVar1 == '\0'; pcVar1 = pcVar1 + 1; } while (!bVar3); uVar2 = ~uVar2; do { pcVar1 = in_stack_00000004; if (uVar2 == 0) break; uVar2 = uVar2 - 1; pcVar1 = in_stack_00000004 + 1; bVar3 = in_stack_00000008 == *in_stack_00000004; in_stack_00000004 = pcVar1; } while (!bVar3); if (bVar3) { pcVar1 = pcVar1 + -1; } else { pcVar1 = (char *)0x0; } return pcVar1; } int FUN_0044ff50(void) { char cVar1; char cVar2; uint uVar3; char *pcVar4; char *pcVar5; char *in_stack_00000004; char *in_stack_00000008; uVar3 = 0xffffffff; pcVar4 = in_stack_00000008; do { if (uVar3 == 0) break; uVar3 = uVar3 - 1; cVar1 = *pcVar4; pcVar4 = pcVar4 + 1; } while (cVar1 != '\0'); uVar3 = ~uVar3; do { pcVar4 = in_stack_00000004; pcVar5 = in_stack_00000008; if (uVar3 == 0) break; uVar3 = uVar3 - 1; pcVar5 = in_stack_00000008 + 1; pcVar4 = in_stack_00000004 + 1; cVar2 = *in_stack_00000008; cVar1 = *in_stack_00000004; in_stack_00000004 = pcVar4; in_stack_00000008 = pcVar5; } while (cVar1 == cVar2); return (uint)(byte)pcVar4[-1] - (uint)(byte)pcVar5[-1]; } int FUN_0044ffac(void) { char cVar1; uint uVar2; char *in_stack_00000004; uVar2 = 0xffffffff; do { if (uVar2 == 0) break; uVar2 = uVar2 - 1; cVar1 = *in_stack_00000004; in_stack_00000004 = in_stack_00000004 + 1; } while (cVar1 != '\0'); return ~uVar2 - 1; } char * FUN_0044ffc8(void) { char cVar1; int iVar2; uint uVar3; uint uVar4; uint uVar5; char *pcVar6; char *pcVar7; char *in_stack_00000004; char *in_stack_00000008; uint in_stack_0000000c; iVar2 = -1; pcVar6 = in_stack_00000004; do { pcVar7 = pcVar6; if (iVar2 == 0) break; iVar2 = iVar2 + -1; pcVar7 = pcVar6 + 1; cVar1 = *pcVar6; pcVar6 = pcVar7; } while (cVar1 != '\0'); uVar3 = 0xffffffff; do { pcVar6 = in_stack_00000008; if (uVar3 == 0) break; uVar3 = uVar3 - 1; pcVar6 = in_stack_00000008 + 1; cVar1 = *in_stack_00000008; in_stack_00000008 = pcVar6; } while (cVar1 != '\0'); uVar4 = ~uVar3 - 1; if (in_stack_0000000c < uVar4) { uVar4 = in_stack_0000000c; } pcVar6 = pcVar6 + -~uVar3; pcVar7 = pcVar7 + -1; for (uVar5 = uVar4 >> 2; uVar5 != 0; uVar5 = uVar5 - 1) { *(undefined4 *)pcVar7 = *(undefined4 *)pcVar6; pcVar6 = pcVar6 + 4; pcVar7 = pcVar7 + 4; } for (uVar4 = uVar4 & 3; uVar4 != 0; uVar4 = uVar4 - 1) { *pcVar7 = *pcVar6; pcVar6 = pcVar6 + 1; pcVar7 = pcVar7 + 1; } *pcVar7 = '\0'; return in_stack_00000004; } int FUN_00450048(void) { byte *in_stack_00000004; byte *in_stack_00000008; int in_stack_0000000c; if (in_stack_0000000c == 0) { return 0; } while( true ) { if (in_stack_0000000c == 0) { return (uint)in_stack_00000004[-1] - (uint)in_stack_00000008[-1]; } if (*in_stack_00000004 != *in_stack_00000008) break; in_stack_00000004 = in_stack_00000004 + 1; in_stack_00000008 = in_stack_00000008 + 1; in_stack_0000000c = in_stack_0000000c + -1; } return (uint)*in_stack_00000004 - (uint)*in_stack_00000008; } void * FUN_0045008c(void) { uint len; void *in_stack_00000004; void *in_stack_00000008; uint in_stack_0000000c; len = FUN_0044ffac(); if (in_stack_0000000c < len) { Memcpy(in_stack_00000004,in_stack_00000008,in_stack_0000000c); } else { Memcpy(in_stack_00000004,in_stack_00000008,len); Memset((void *)(len + (int)in_stack_00000004),0,in_stack_0000000c - len); } return in_stack_00000004; } char * FUN_004500dc(void) { int iVar1; char *pcVar2; char *in_stack_00000004; char in_stack_00000008; iVar1 = FUN_0044ffac(); pcVar2 = in_stack_00000004 + iVar1; while( true ) { if (in_stack_00000008 == *pcVar2) { return pcVar2; } if (in_stack_00000004 == pcVar2) break; pcVar2 = pcVar2 + -1; } return (char *)0x0; } int FUN_00450108(void) { int iVar1; int iVar2; int iVar3; int iVar4; char *pcVar5; int iVar6; int in_stack_00000004; char *in_stack_00000008; char *local_10; iVar1 = FUN_0044ffac(); iVar2 = FUN_0044ffac(); if (iVar2 != 0) { if (iVar1 == 0) { in_stack_00000004 = 0; } else { iVar3 = 0; while( true ) { for (pcVar5 = (char *)(in_stack_00000004 + iVar3); (iVar3 < iVar1 && (*pcVar5 != *in_stack_00000008)); pcVar5 = pcVar5 + 1) { iVar3 = iVar3 + 1; } if (iVar1 == iVar3) { return 0; } iVar6 = 0; local_10 = in_stack_00000008; iVar4 = iVar3; for (pcVar5 = (char *)(in_stack_00000004 + iVar3); ((iVar4 < iVar1 && (iVar6 < iVar2)) && (*pcVar5 == *local_10)); pcVar5 = pcVar5 + 1) { iVar4 = iVar4 + 1; iVar6 = iVar6 + 1; local_10 = local_10 + 1; } if (iVar6 == iVar2) { return in_stack_00000004 + iVar3; } if (iVar1 == iVar4) break; iVar3 = iVar3 + 1; } in_stack_00000004 = 0; } } return in_stack_00000004; } int FUN_004501ac(void) { int iVar1; void *in_stack_00000004; void *in_stack_00000008; iVar1 = FUN_0044ffac(); Memcpy(in_stack_00000004,in_stack_00000008,iVar1 + 1); return iVar1 + (int)in_stack_00000004; } void FUN_004501d8(undefined *UNRECOVERED_JUMPTABLE) { // WARNING: Could not recover jumptable at 0x004501dc. Too many branches // WARNING: Treating indirect jump as call (*(code *)UNRECOVERED_JUMPTABLE)(); return; } char * FUN_004501df(void) { int in_stack_00000004; if (in_stack_00000004 == 0) { return s__00463690; } return (char *)(in_stack_00000004 + (uint)*(ushort *)(in_stack_00000004 + 6)); } undefined4 FUN_004501f8(void) { char cVar1; char cVar2; char *pcVar3; char *pcVar4; int *in_stack_00000004; int *in_stack_00000008; if (in_stack_00000008 == in_stack_00000004) { return 1; } if (((short)in_stack_00000004[1] == (short)in_stack_00000008[1]) && (*in_stack_00000004 == *in_stack_00000008)) { if (((*(ushort *)(in_stack_00000004 + 1) | *(ushort *)(in_stack_00000008 + 1)) & 0x80) != 0) { return 0; } pcVar3 = (char *)((int)in_stack_00000004 + (uint)*(ushort *)((int)in_stack_00000004 + 6)); pcVar4 = (char *)((int)in_stack_00000008 + (uint)*(ushort *)((int)in_stack_00000008 + 6)); do { cVar1 = *pcVar3; pcVar3 = pcVar3 + 1; cVar2 = *pcVar4; pcVar4 = pcVar4 + 1; if (cVar2 != cVar1) { return 0; } } while (cVar1 != '\0'); return 1; } return 0; } undefined4 FUN_0045025e(void) { bool bVar1; int iVar2; int iVar3; int *piVar4; int in_stack_00000004; int in_stack_00000010; piVar4 = (int *)((uint)*(ushort *)(in_stack_00000004 + 0x12) + in_stack_00000004); do { iVar3 = *piVar4; if (iVar3 == 0) { piVar4 = (int *)((uint)*(ushort *)(in_stack_00000004 + 0x10) + in_stack_00000004); while( true ) { iVar3 = *piVar4; if (iVar3 == 0) { return 0; } if ((in_stack_00000010 == 0) || ((piVar4[2] & 3U) != 3)) { bVar1 = false; } else { bVar1 = true; } iVar2 = FUN_004501f8(); if ((iVar2 != 0) && (bVar1)) break; if (((*(byte *)(iVar3 + 0xc) & 4) != 0) && (iVar3 = FUN_0045025e(), iVar3 != 0)) { return 1; } piVar4 = piVar4 + 3; } return 1; } if ((*(byte *)(piVar4 + 2) & 8) == 0) { if ((in_stack_00000010 == 0) || ((piVar4[2] & 3U) != 3)) { bVar1 = false; } else { bVar1 = true; } iVar2 = FUN_004501f8(); if ((iVar2 != 0) && (bVar1)) { return 1; } if (((*(byte *)(iVar3 + 0xc) & 4) != 0) && (iVar3 = FUN_0045025e(), iVar3 != 0)) { return 1; } } piVar4 = piVar4 + 3; } while( true ); } undefined4 FUN_00450358(void) { uint uVar1; ushort uVar2; ushort uVar3; int iVar4; undefined4 uVar5; uint uVar6; int in_stack_00000004; int in_stack_00000008; int in_stack_0000000c; while( true ) { while( true ) { if (in_stack_00000008 == in_stack_00000004) { return 1; } uVar2 = *(ushort *)(in_stack_00000004 + 4); uVar3 = *(ushort *)(in_stack_00000008 + 4); if ((uVar3 & uVar2 & 0x10) == 0) break; uVar6 = uVar2 & 0x300; uVar1 = uVar3 & 0x300; if (uVar6 != uVar1) { if ((in_stack_0000000c != 0) || (uVar6 == uVar1)) { return 0; } if ((byte)(~(byte)(uVar1 >> 8) & (byte)(uVar6 >> 8)) != 0) { return 0; } } in_stack_0000000c = 1; in_stack_00000004 = *(int *)(in_stack_00000004 + 8); in_stack_00000008 = *(int *)(in_stack_00000008 + 8); } if ((uVar3 & uVar2 & 0x400) == 0) break; if ((*(int *)(in_stack_00000004 + 0xc) != *(int *)(in_stack_00000008 + 0xc)) && ((in_stack_0000000c != 0 || (*(int *)(in_stack_00000004 + 0xc) != 0 || *(int *)(in_stack_00000008 + 0xc) != 0)))) { return 0; } in_stack_0000000c = 1; in_stack_00000004 = *(int *)(in_stack_00000004 + 8); in_stack_00000008 = *(int *)(in_stack_00000008 + 8); } iVar4 = FUN_004501f8(); if (iVar4 != 0) { return 1; } if ((((uVar2 & 2) != 0) && ((uVar3 & 1) != 0)) && ((*(byte *)(in_stack_00000004 + 0xc) & 4) != 0)) { uVar5 = FUN_0045025e(); return uVar5; } return 0; } int ** FUN_00450467(void) { uint *puVar1; int **ppiVar2; int in_FS_OFFSET; uint in_stack_00000004; ppiVar2 = TurboAlloc_(in_stack_00000004); if (ppiVar2 == (int **)0x0) { if ((0x80 < in_stack_00000004) || ((*(byte *)(*(int *)(*(int *)(in_FS_OFFSET + 4) + -8) + 4) & 1) != 0)) { FUN_004548d0(); } puVar1 = (uint *)(*(int *)(*(int *)(in_FS_OFFSET + 4) + -8) + 4); *puVar1 = *puVar1 | 1; ppiVar2 = *(int ***)(*(int *)(*(int *)(in_FS_OFFSET + 4) + -8) + 0x1c); } return ppiVar2; } void FUN_004504b1(void) { uint *puVar1; int in_FS_OFFSET; int in_stack_00000004; if (in_stack_00000004 == *(int *)(*(int *)(*(int *)(in_FS_OFFSET + 4) + -8) + 0x1c)) { puVar1 = (uint *)(*(int *)(*(int *)(in_FS_OFFSET + 4) + -8) + 4); *puVar1 = *puVar1 & 0xfffffffe; return; } TurboFree_(in_stack_00000004); return; } bool FUN_004504de(void) { ushort uVar1; ushort uVar2; int iVar3; int in_stack_00000004; int in_stack_0000000c; byte in_stack_00000010; iVar3 = FUN_00450358(); if (iVar3 != 0) { return true; } uVar1 = *(ushort *)(in_stack_00000004 + 4); uVar2 = *(ushort *)(in_stack_0000000c + 4); if ((uVar2 & 0x20) != 0) { iVar3 = FUN_00450358(); if (iVar3 != 0) { return true; } uVar2 = *(ushort *)(*(int *)(in_stack_0000000c + 8) + 4); if ((uVar2 & 0x10) == 0) { return false; } iVar3 = FUN_00450358(); if (iVar3 != 0) { return true; } } if ((uVar2 & 0x10) != 0) { if ((in_stack_00000010 & 1) != 0) { return true; } if ((uVar1 & 0x10) == 0) { return false; } if ((uVar2 & 0x40) != 0) { return (uVar1 & 0x300) == (uVar2 & 0x300); } } return false; } void FUN_0045059f(void) { undefined4 in_stack_00000004; undefined4 in_stack_00000008; code *in_stack_0000000c; uint in_stack_00000010; if ((in_stack_00000010 & 0x1000) == 0) { in_stack_00000010 = in_stack_00000010 & 7; if (in_stack_00000010 == 1) { (*in_stack_0000000c)(); return; } if (in_stack_00000010 == 2) { (*in_stack_0000000c)(); return; } if (in_stack_00000010 == 3) { (*in_stack_0000000c)(in_stack_00000004,in_stack_00000008); return; } if (in_stack_00000010 != 5) { return; } (*in_stack_0000000c)(); } else { in_stack_00000010 = in_stack_00000010 & 7; if (in_stack_00000010 == 1) { (*in_stack_0000000c)(); return; } if (in_stack_00000010 == 2) { (*in_stack_0000000c)(); return; } if (in_stack_00000010 == 3) { (*in_stack_0000000c)(0,in_stack_00000008,in_stack_00000004); return; } if (in_stack_00000010 == 5) { (*in_stack_0000000c)(); return; } } return; } void FUN_00450623(void) { undefined4 uVar1; undefined4 in_stack_00000004; code *in_stack_00000008; uint in_stack_0000000c; int in_stack_00000010; uVar1 = 2; if (in_stack_00000010 == 0) { uVar1 = 0; } in_stack_0000000c = in_stack_0000000c & 7; if (in_stack_0000000c == 1) { (*in_stack_00000008)(); return; } if (in_stack_0000000c == 2) { (*in_stack_00000008)(); return; } if (in_stack_0000000c != 3) { if (in_stack_0000000c != 5) { return; } (*in_stack_00000008)(); return; } (*in_stack_00000008)(uVar1,in_stack_00000004); return; } void FUN_00450670(void) { undefined4 in_stack_00000004; code *in_stack_00000008; uint in_stack_0000000c; in_stack_0000000c = in_stack_0000000c & 7; if (in_stack_0000000c == 1) { (*in_stack_00000008)(); return; } if (in_stack_0000000c == 2) { (*in_stack_00000008)(); return; } if (in_stack_0000000c == 3) { (*in_stack_00000008)(in_stack_00000004); return; } if (in_stack_0000000c != 5) { return; } (*in_stack_00000008)(); return; } void FUN_004506aa(void) { ushort uVar1; int *len; undefined4 *in_FS_OFFSET; uint *in_stack_00000004; void *in_stack_00000008; int *in_stack_0000000c; int *in_stack_00000010; int *in_stack_00000014; int *in_stack_00000018; int *in_stack_0000001c; int *in_stack_00000020; undefined4 in_stack_00000024; int in_stack_00000028; ULONG_PTR local_40; undefined4 local_3c; int **local_38; undefined4 local_34; int **local_30; uint local_2c; uint *local_28; undefined4 local_24; undefined2 local_14; FUN_00451ae0(&DAT_004635dc); local_28 = in_stack_00000004; *(uint *)(*(int *)(in_FS_OFFSET[1] + -8) + 0x18) = (uint)*(ushort *)((int)in_stack_00000004 + 6) + (int)in_stack_00000004; *(int **)(*(int *)(in_FS_OFFSET[1] + -8) + 0x14) = in_stack_0000001c; *(int **)(*(int *)(in_FS_OFFSET[1] + -8) + 0x10) = in_stack_00000020; len = (int *)*in_stack_00000004; uVar1 = (ushort)in_stack_00000004[1]; if ((uVar1 & 2) == 0) { local_2c = 0; } else { local_2c = in_stack_00000004[3]; } if ((uVar1 & 0x30) != 0) { in_stack_00000004 = (uint *)in_stack_00000004[2]; } local_30 = FUN_00450467(); *local_30 = (int *)**(undefined4 **)(in_FS_OFFSET[1] + -8); **(undefined4 **)(in_FS_OFFSET[1] + -8) = local_30; local_30[1] = (int *)local_28; local_30[3] = in_stack_00000018; local_30[4] = len; *(ushort *)(local_30 + 6) = uVar1; *(undefined2 *)((int)local_30 + 0x1a) = (undefined2)local_2c; local_30[5] = (int *)in_stack_00000004; local_30[2] = in_stack_0000000c; local_30[10] = (int *)0x0; local_30[0xb] = (int *)0x0; local_30[7] = (int *)FUN_004504b1; local_30[0xd] = in_stack_0000001c; local_30[0xe] = in_stack_00000020; local_30[8] = in_stack_00000010; local_30[9] = in_stack_00000014; *(undefined1 *)((int)local_30 + 0x45) = 0; *(undefined1 *)(local_30 + 0x11) = 1; Memcpy((void *)((int)local_30 + 0x46),in_stack_00000008,(uint)len); if ((local_2c & 1) != 0) { local_34 = *DAT_0046aaa4; local_14 = 8; FUN_0045059f(); local_14 = 0; *DAT_0046aaa4 = local_34; } if ((in_stack_00000028 == 0) && ((local_2c & 2) != 0)) { local_14 = 0x14; FUN_00450623(); local_14 = 0; } local_40 = *(ULONG_PTR *)(*(int *)(in_FS_OFFSET[1] + -8) + 0x18); local_3c = in_stack_00000024; local_38 = local_30; RaiseException(0xeefface,1,3,&local_40); *in_FS_OFFSET = local_24; return; } void FUN_004508b0(void) { FUN_004506aa(); return; } void FUN_004508dd(void) { int in_FS_OFFSET; if (**(int **)(*(int *)(in_FS_OFFSET + 4) + -8) == 0) { FUN_00451b4b(); } FUN_004506aa(); return; } void FUN_0045092e(void) { PVOID in_stack_00000004; PEXCEPTION_RECORD in_stack_00000008; EXCEPTION_RECORD local_54; if (in_stack_00000008 == (PEXCEPTION_RECORD)0x0) { local_54.ExceptionCode = 0x26; local_54.ExceptionFlags = 2; local_54.NumberParameters = 0; in_stack_00000008 = &local_54; } in_stack_00000008->ExceptionFlags = in_stack_00000008->ExceptionFlags | 2; FUN_00451e12(in_stack_00000004,in_stack_00000008); return; } void FUN_0045096d(void) { undefined4 *in_FS_OFFSET; undefined4 local_24; FUN_00451ae0(&DAT_0046361c); FUN_00450623(); *in_FS_OFFSET = local_24; return; } void FUN_004509bb(void) { undefined4 uVar1; int in_stack_00000004; if (*(char *)(in_stack_00000004 + 0x44) != '\0') { if ((*(byte *)(in_stack_00000004 + 0x1a) & 2) != 0) { uVar1 = *DAT_0046aaa4; FUN_0045096d(); *DAT_0046aaa4 = uVar1; } *(undefined1 *)(in_stack_00000004 + 0x44) = 0; } if (*(char *)(in_stack_00000004 + 0x45) != '\0') { if (((*(byte *)(*(int *)(in_stack_00000004 + 0x3c) + 4) & 2) != 0) && ((*(byte *)(*(int *)(in_stack_00000004 + 0x3c) + 0xc) & 2) != 0)) { FUN_0045096d(); } *(undefined1 *)(in_stack_00000004 + 0x45) = 0; } return; } undefined4 FUN_00450a64(void) { int iVar1; int iVar2; int *in_stack_00000004; int in_stack_00000008; int *in_stack_00000010; int *local_8; while( true ) { iVar2 = *in_stack_00000004; if (iVar2 == 0) { return 0; } local_8 = (int *)(*in_stack_00000010 + in_stack_00000004[1]); if (in_stack_00000008 != 0) { local_8 = (int *)*local_8; } iVar1 = FUN_004501f8(); if (iVar1 != 0) break; if ((((*(byte *)(iVar2 + 4) & 2) != 0) && (iVar2 + (uint)*(ushort *)(iVar2 + 0x10) != 0)) && (iVar2 = FUN_00450a64(), iVar2 != 0)) { *in_stack_00000010 = (int)local_8; return 1; } in_stack_00000004 = in_stack_00000004 + 3; } *in_stack_00000010 = (int)local_8; return 1; } int FUN_00450aea(void) { int iVar1; int in_stack_00000004; if (((in_stack_00000004 != 0) && (iVar1 = FUN_00450a64(), iVar1 == 0)) && (iVar1 = FUN_00450a64(), iVar1 == 0)) { in_stack_00000004 = 0; } return in_stack_00000004; } void FUN_00450b46(void) { ushort uVar1; ushort uVar2; uint len; undefined4 *puVar3; int iVar4; uint *puVar5; bool bVar6; bool bVar7; int in_stack_00000004; int in_stack_0000000c; int *in_stack_00000010; int in_stack_00000014; undefined4 *local_8; puVar5 = *(uint **)(in_stack_00000004 + 4); *(uint **)(in_stack_0000000c + 0x3c) = puVar5; if ((puVar5 != (uint *)0x0) && ((*(byte *)(in_stack_00000004 + 8) & 0x80) == 0)) { bVar6 = (*(uint *)(in_stack_00000004 + 8) & 1) == 0; local_8 = (undefined4 *)(in_stack_0000000c + 0x46); *(undefined1 *)(in_stack_0000000c + 0x45) = 1; *(int *)(in_stack_0000000c + 0x40) = *in_stack_00000010 + in_stack_00000014; len = *puVar5; uVar1 = (ushort)puVar5[1]; uVar2 = uVar1; if ((uVar1 & 0x30) != 0) { puVar5 = (uint *)puVar5[2]; uVar2 = (ushort)puVar5[1]; } if (((uVar1 & 0x10) == 0) || ((*(byte *)(in_stack_0000000c + 0xc) & 1) == 0)) { if (((uVar2 & 1) == 0) || ((uVar1 & 0x30) == 0)) { if ((*(byte *)(in_stack_0000000c + 0x18) & 1) == 0) { if ((uVar1 & 0x20) == 0) { Memcpy(*(void **)(in_stack_0000000c + 0x40),local_8,len); } else { Memcpy(*(void **)(in_stack_0000000c + 0x40),&local_8,len); bVar6 = true; } } else { iVar4 = FUN_004501f8(); if (iVar4 == 0) { local_8 = (undefined4 *)FUN_00450aea(); } bVar6 = iVar4 == 0 || bVar6; if ((puVar5[3] & 1) == 0) { Memcpy(*(void **)(in_stack_0000000c + 0x40),local_8,len); } else { FUN_0045059f(); bVar6 = true; } } } else { bVar7 = (uVar1 & 0x20) == 0; if (bVar7) { local_8 = (undefined4 *)*local_8; } bVar6 = !bVar7 || bVar6; iVar4 = FUN_004501f8(); puVar3 = local_8; if ((iVar4 == 0) && (local_8 = (undefined4 *)FUN_00450aea(), local_8 != puVar3)) { bVar6 = true; } Memcpy(*(void **)(in_stack_0000000c + 0x40),&local_8,len); } } else { Memset(*(void **)(in_stack_0000000c + 0x40),0,len); bVar6 = true; } if (!bVar6) { if ((puVar5[3] & 2) != 0) { FUN_0045096d(); } *(undefined1 *)(in_stack_0000000c + 0x44) = 0; } } return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address // WARNING: Restarted to delay deadcode elimination for space: stack void FUN_00450cfa(void) { ushort uVar1; int iVar2; int *piVar3; int *piVar4; uint uVar5; uint uVar6; int in_FS_OFFSET; int in_stack_00000004; uint in_stack_00000008; iVar2 = *(int *)(in_stack_00000004 + 8); uVar1 = *(ushort *)(in_stack_00000004 + 0x10); do { while( true ) { do { while( true ) { uVar6 = (uint)uVar1; if ((uVar6 == 0) || (uVar6 == in_stack_00000008)) { return; } uVar1 = *(ushort *)(iVar2 + uVar6); uVar5 = (uint)*(ushort *)(iVar2 + uVar6 + 2); *(ushort *)(in_stack_00000004 + 0x10) = uVar1; if (uVar5 != 0) break; _DAT_0046aa94 = *(undefined4 *)(iVar2 + uVar6 + 8); *(undefined2 *)(in_stack_00000004 + 0x12) = 1; FUN_00451e27(); *(undefined2 *)(in_stack_00000004 + 0x12) = 0; } } while (uVar5 - 1 < 3); if (uVar5 == 4) break; if (uVar5 == 5) { FUN_0045140e(); } } piVar3 = *(int **)(*(int *)(in_FS_OFFSET + 4) + -8); do { piVar4 = piVar3; piVar3 = (int *)*piVar4; if (piVar3 == (int *)0x0) break; } while ((piVar3[10] != in_stack_00000004) || (uVar6 != piVar3[0xc])); *piVar4 = *piVar3; FUN_004509bb(); (*(code *)piVar3[7])(); } while( true ); } void FUN_00450e08(void) { FUN_00450cfa(); return; } void FUN_00450e1b(void) { undefined4 *in_FS_OFFSET; undefined4 *in_stack_00000004; FUN_00450cfa(); *in_FS_OFFSET = *in_stack_00000004; return; } int * FUN_00450e38(void) { bool bVar1; undefined3 extraout_var; int *piVar2; int in_stack_00000004; piVar2 = (int *)(in_stack_00000004 + 8); while( true ) { if (*piVar2 == 0) { return (int *)0x0; } if (piVar2[1] == 0) break; bVar1 = FUN_004504de(); if (CONCAT31(extraout_var,bVar1) != 0) { return piVar2; } piVar2 = piVar2 + 5; } return piVar2; } // WARNING (jumptable): Unable to track spacebase fully for stack // WARNING: Globals starting with '_' overlap smaller symbols at the same address undefined4 FUN_00450e8d(void) { undefined4 uVar1; bool bVar2; undefined3 extraout_var; int *piVar3; int *piVar4; uint uVar5; int unaff_EBP; int iVar6; undefined *UNRECOVERED_JUMPTABLE; undefined4 *in_FS_OFFSET; *(undefined4 *)(unaff_EBP + -4) = *(undefined4 *)(unaff_EBP + 8); *(undefined4 *)(unaff_EBP + -8) = *(undefined4 *)(unaff_EBP + 0xc); *(undefined4 *)(unaff_EBP + -0xc) = *(undefined4 *)(unaff_EBP + 0x10); *(undefined4 *)(unaff_EBP + -0x10) = *(undefined4 *)(*(int *)(unaff_EBP + -4) + 0x1c); piVar4 = *(int **)(*(int *)(unaff_EBP + -8) + 8); *(int *)(unaff_EBP + -0x18) = *(int *)(unaff_EBP + -8) - piVar4[1]; *(undefined4 *)(unaff_EBP + -0x1c) = *(undefined4 *)(*(int *)(unaff_EBP + -8) + 0xc); if ((*(byte *)(*(int *)(unaff_EBP + -4) + 4) & 6) == 0) { uVar5 = (uint)*(ushort *)(*(int *)(unaff_EBP + -8) + 0x10); while (uVar5 != 0) { *(uint *)(unaff_EBP + -0x14) = (uint)*(ushort *)((int)piVar4 + uVar5); *(uint *)(unaff_EBP + -0x20) = (uint)*(ushort *)((int)piVar4 + uVar5 + 2); iVar6 = uVar5 + 4; switch(*(undefined4 *)(unaff_EBP + -0x20)) { case 1: if (**(int **)(unaff_EBP + -4) != 0xeefface) { *(undefined4 *)(unaff_EBP + -0x34) = *(undefined4 *)(unaff_EBP + -4); *(undefined4 *)(unaff_EBP + -0x30) = *(undefined4 *)(unaff_EBP + -0xc); *(undefined4 *)(*(int *)(unaff_EBP + -8) + 0x14) = **(undefined4 **)(unaff_EBP + -4); *(int *)(*(int *)(unaff_EBP + -8) + 0x18) = unaff_EBP + -0x34; _DAT_0046aa98 = *(undefined4 *)((int)piVar4 + iVar6); iVar6 = FUN_00451e27(); LAB_004510b5: if (iVar6 < 0) { if ((*(byte *)(*(int *)(unaff_EBP + -4) + 4) & 1) != 0) { *(undefined2 *)(*(int *)(unaff_EBP + -8) + 0x10) = *(undefined2 *)(unaff_EBP + -0x14); } return 0; } if (iVar6 != 0) { *(undefined4 *)(*(int *)(unaff_EBP + -8) + 0x18) = 0; *(undefined4 *)(unaff_EBP + -0x2c) = *(undefined4 *)(unaff_EBP + -0x14); UNRECOVERED_JUMPTABLE = *(undefined **)((int)piVar4 + uVar5 + 8); LAB_00450fe1: FUN_0045092e(); FUN_00450cfa(); *(undefined2 *)(*(int *)(unaff_EBP + -8) + 0x10) = *(undefined2 *)(unaff_EBP + -0x2c); if (*(int *)(unaff_EBP + -0x20) == 3) { FUN_00450b46(); } FUN_004501d8(UNRECOVERED_JUMPTABLE); } } break; case 2: if (**(int **)(unaff_EBP + -4) != 0xeefface) { *(undefined4 *)(*(int *)(unaff_EBP + -8) + 0x14) = **(undefined4 **)(unaff_EBP + -4); iVar6 = *(int *)((int)piVar4 + iVar6); goto LAB_004510b5; } break; case 3: if (**(int **)(unaff_EBP + -4) == 0xeefface) { *(undefined4 *)(unaff_EBP + -0x28) = *(undefined4 *)((int)piVar4 + iVar6); piVar3 = FUN_00450e38(); *(int **)(unaff_EBP + -0x24) = piVar3; if (*(int *)(unaff_EBP + -0x24) != 0) { *(undefined4 *)(*(int *)(unaff_EBP + -0x10) + 0x28) = *(undefined4 *)(unaff_EBP + -8); *(undefined4 *)(*(int *)(unaff_EBP + -0x10) + 0x2c) = *(undefined4 *)(unaff_EBP + -0x24) ; *(uint *)(*(int *)(unaff_EBP + -0x10) + 0x30) = uVar5 + 8; *(uint *)(unaff_EBP + -0x2c) = uVar5 + 8; UNRECOVERED_JUMPTABLE = (undefined *)**(undefined4 **)(unaff_EBP + -0x24); goto LAB_00450fe1; } } } uVar5 = *(uint *)(unaff_EBP + -0x14); } } else { FUN_00450cfa(); if ((**(int **)(unaff_EBP + -4) == 0xeefface) && (piVar4 = (int *)*piVar4, piVar4 != (int *)0x0) ) { for (; *piVar4 != 0; piVar4 = piVar4 + 1) { bVar2 = FUN_004504de(); if (CONCAT31(extraout_var,bVar2) != 0) { return 1; } } uVar1 = *in_FS_OFFSET; *in_FS_OFFSET = **(undefined4 **)(unaff_EBP + -8); FUN_00451bc4(); *in_FS_OFFSET = uVar1; } } return 1; } void FUN_00451107(void) { undefined4 *in_FS_OFFSET; undefined4 local_24; FUN_00451ae0(&DAT_00463670); FUN_00450623(); *in_FS_OFFSET = local_24; return; } void FUN_00451173(void) { int *in_stack_00000008; int *in_stack_0000000c; while (in_stack_00000008 = in_stack_00000008 + -3, in_stack_0000000c <= in_stack_00000008) { if ((*(byte *)(*in_stack_00000008 + 0xc) & 2) != 0) { FUN_004511b8(); } } return; } void FUN_004511b8(void) { int iVar1; uint uVar2; int *piVar3; int *piVar4; int in_stack_00000008; uint in_stack_0000000c; int in_stack_00000010; uint local_18; int *local_10; if (in_stack_00000010 == 0) { uVar2 = *(uint *)(in_stack_00000008 + 0x24); } else { uVar2 = *(uint *)(in_stack_00000008 + 0x20); } if ((in_stack_0000000c == 0) || (uVar2 <= in_stack_0000000c)) { FUN_00451107(); } else { local_10 = (int *)((uint)*(ushort *)(in_stack_00000008 + 0x12) + in_stack_00000008); if (in_stack_00000010 != 0) { for (; iVar1 = *local_10, iVar1 != 0; local_10 = local_10 + 3) { if ((*(byte *)(iVar1 + 0xc) & 2) != 0) { if (in_stack_0000000c <= *(uint *)(iVar1 + 0x24)) { FUN_00451173(); return; } in_stack_0000000c = in_stack_0000000c - *(uint *)(iVar1 + 0x24); } } } for (piVar4 = (int *)((uint)*(ushort *)(in_stack_00000008 + 0x10) + in_stack_00000008); iVar1 = *piVar4, iVar1 != 0; piVar4 = piVar4 + 3) { if ((*(byte *)(iVar1 + 0xc) & 2) != 0) { if (in_stack_0000000c <= *(uint *)(iVar1 + 0x24)) { FUN_00451173(); if (in_stack_00000010 == 0) { return; } FUN_00451173(); return; } in_stack_0000000c = in_stack_0000000c - *(uint *)(iVar1 + 0x24); } } piVar3 = (int *)((uint)*(ushort *)(in_stack_00000008 + 0x2e) + in_stack_00000008); piVar4 = piVar3; while( true ) { iVar1 = *piVar4; local_18 = 1; if ((*(byte *)(iVar1 + 5) & 4) != 0) { local_18 = *(uint *)(iVar1 + 0xc); iVar1 = *(int *)(iVar1 + 8); } uVar2 = *(int *)(iVar1 + 0x20) * local_18; if (in_stack_0000000c <= uVar2) break; in_stack_0000000c = in_stack_0000000c - uVar2; piVar4 = piVar4 + 2; } do { if (local_18 < 2) { FUN_004511b8(); } else { FUN_0045135e(); } piVar4 = piVar4 + -2; } while (piVar3 <= piVar4); FUN_00451173(); if (in_stack_00000010 != 0) { FUN_00451173(); } } return; } void FUN_0045135e(void) { int *piVar1; uint uVar2; int iVar3; int iVar4; int in_stack_00000004; int in_stack_00000008; uint in_stack_0000000c; undefined4 in_stack_00000010; uint local_8; piVar1 = *(int **)(in_stack_00000008 + 8); uVar2 = piVar1[8]; if (in_stack_0000000c == 0) { in_stack_0000000c = uVar2 * *(int *)(in_stack_00000008 + 0xc); } local_8 = in_stack_0000000c / uVar2; iVar4 = in_stack_0000000c - local_8 * uVar2; iVar3 = (int)((longlong)(int)local_8 * (longlong)*piVar1); if (iVar4 != 0) { FUN_004511b8(iVar3,(int)((ulonglong)((longlong)(int)local_8 * (longlong)*piVar1) >> 0x20),iVar4, in_stack_00000004 + iVar3,piVar1,iVar4,1,in_stack_00000010); } while( true ) { if (local_8 == 0) break; FUN_004511b8(); local_8 = local_8 - 1; } return; } int FUN_004513d0(void) { int iVar1; int iVar2; int in_stack_00000004; int *in_stack_00000008; iVar1 = *in_stack_00000008; if ((*(uint *)(iVar1 + 0xc) & 0x50) != 0x50) { return in_stack_00000004; } if (*(int *)(iVar1 + 8) == -1) { return in_stack_00000004; } iVar1 = *(int *)(*(int *)(iVar1 + 8) + in_stack_00000004); iVar2 = *(int *)(iVar1 + -8); *in_stack_00000008 = *(int *)((iVar1 - *(int *)(iVar1 + -4)) + -0xc); return in_stack_00000004 - iVar2; } undefined4 FUN_0045140e(void) { bool bVar1; bool bVar2; undefined4 uVar3; uint uVar4; int *piVar5; int iVar6; uint uVar7; int *in_stack_00000004; int in_stack_00000008; int in_stack_0000000c; int local_14; int local_c; bVar2 = false; if (in_stack_00000004 == (int *)0x0) { uVar3 = 0; } else { uVar7 = (*DAT_0046aaa4 - *(int *)(in_stack_0000000c + 0x1c)) - in_stack_00000008; if ((*(byte *)(in_stack_00000004 + 1) & 0x20) != 0) { uVar7 = *(uint *)(*(int *)(*in_stack_00000004 + 8) + 0x20); } if ((*(byte *)((int)in_stack_00000004 + 5) & 1) == 0) { piVar5 = in_stack_00000004; if ((int)uVar7 < 1) { if ((in_stack_00000004[1] & 3U) != 3) { return 0; } bVar2 = true; } else { for (; *piVar5 != 0; piVar5 = piVar5 + 3) { local_c = *piVar5; iVar6 = 1; if (((((*(byte *)(local_c + 4) & 0x10) != 0) && (local_c = *(int *)(local_c + 8), (*(byte *)(local_c + 4) & 2) != 0)) && ((*(byte *)(local_c + 0xc) & 0x20) != 0)) && ((*(byte *)(piVar5 + 1) & 8) != 0)) { FUN_004513d0(); } if ((*(byte *)(local_c + 5) & 4) != 0) { iVar6 = *(int *)(local_c + 0xc); local_c = *(int *)(local_c + 8); } uVar4 = *(int *)(local_c + 0x20) * iVar6; if (uVar7 <= uVar4) goto LAB_00451531; uVar7 = uVar7 - uVar4; } piVar5 = piVar5 + -3; } LAB_00451531: do { local_14 = *piVar5; uVar7 = piVar5[1]; if ((((uVar7 & 0x11) != 0) && (local_14 = *(int *)(local_14 + 8), (*(byte *)(local_14 + 4) & 2) != 0)) && (((*(byte *)(local_14 + 0xc) & 0x20) != 0 && ((uVar7 & 8) != 0)))) { FUN_004513d0(); } if (!bVar2) { if ((*(byte *)(local_14 + 5) & 4) == 0) { FUN_004511b8(); } else { FUN_0045135e(); } } if ((uVar7 & 3) == 3) { if ((*(byte *)(local_14 + 5) & 4) == 0) { if (*(int *)(local_14 + 0x14) == 0) { FUN_004545fc(); } else { FUN_00450670(); } } else if (*(int *)(*(int *)(local_14 + 8) + 0x1c) == 0) { FUN_0045460c(); } else { FUN_00450670(); } } bVar1 = in_stack_00000004 < piVar5; piVar5 = piVar5 + -3; } while (bVar1); uVar3 = 0; } else { uVar3 = *(undefined4 *)(*in_stack_00000004 + 0x24); } } return uVar3; } uint FUN_0045167f(void) { uint uVar1; int iVar2; int in_stack_00000004; if (in_stack_00000004 == -1) { uVar1 = 0xffffffff; } else { iVar2 = FUN_00450048(); if (iVar2 == 0) { uVar1 = (uint)*(ushort *)(in_stack_00000004 + 0x10); } else { uVar1 = 0xffffffff; } } return uVar1; } undefined4 * FUN_004516df(void) { undefined4 *in_stack_00000004; *in_stack_00000004 = &PTR_FUN_004636b0; FUN_004508b0(); return in_stack_00000004; } undefined4 FUN_00451715(void) { undefined4 in_stack_00000004; return in_stack_00000004; } void FUN_0045171d(void) { undefined4 *in_stack_00000004; byte in_stack_00000008; if ((in_stack_00000004 != (undefined4 *)0x0) && (*in_stack_00000004 = &PTR_FUN_004636b0, (in_stack_00000008 & 1) != 0)) { FUN_004545fc(); } return; } void FUN_0045173c(void) { FUN_004501f8(); return; } bool FUN_00451755(void) { int iVar1; iVar1 = FUN_0045173c(); return iVar1 == 0; } bool FUN_00451772(void) { int iVar1; bool bVar2; int in_stack_00000004; int in_stack_00000008; if (*(int *)(in_stack_00000004 + 4) == 0) { bVar2 = false; } else if (*(int *)(in_stack_00000008 + 4) == 0) { bVar2 = true; } else { iVar1 = FUN_0044ff50(); bVar2 = iVar1 < 0; } return bVar2; } void FUN_004517be(void) { FUN_004501df(); return; } int FUN_004517cf(void) { int in_stack_00000004; int in_stack_00000008; int in_stack_00000010; if (in_stack_00000004 == 0) { FUN_004508b0(); } *(undefined4 *)(in_stack_00000010 + 4) = *(undefined4 *)((in_stack_00000008 - *(int *)(in_stack_00000008 + -4)) + -0xc); return in_stack_00000010; } undefined4 * FUN_0045180d(void) { bool bVar1; int iVar2; int iVar3; undefined4 *puVar4; int *piVar5; undefined4 *puVar6; int in_stack_00000004; int in_stack_00000008; undefined4 *in_stack_0000000c; int in_stack_00000014; int in_stack_00000018; uint *in_stack_0000001c; int in_stack_00000020; uint local_18; int local_14; undefined4 *local_10; uint local_c; local_c = 0; local_10 = (undefined4 *)0x0; local_14 = 0; if (((in_stack_00000018 != 0) && (iVar2 = FUN_004501f8(), iVar2 != 0)) || ((*(byte *)(in_stack_00000008 + 0xc) & 4) == 0)) { return (undefined4 *)0x0; } bVar1 = false; piVar5 = (int *)((uint)*(ushort *)(in_stack_00000008 + 0x12) + in_stack_00000008); do { while (iVar2 = *piVar5, iVar2 == 0) { if (bVar1) { *in_stack_0000001c = local_c; if (local_14 != 1) { return (undefined4 *)0x0; } return local_10; } bVar1 = true; piVar5 = (int *)((uint)*(ushort *)(in_stack_00000008 + 0x10) + in_stack_00000008); } if ((*(byte *)(piVar5 + 2) & 8) == 0) { if ((in_stack_00000020 == 0) || ((piVar5[2] & 3U) != 3)) { local_18 = 0; } else { local_18 = 1; } puVar6 = (undefined4 *)(in_stack_00000004 + piVar5[1]); if ((*(byte *)(piVar5 + 2) & 4) != 0) { puVar6 = (undefined4 *)*puVar6; } iVar3 = FUN_004501f8(); if (iVar3 == 0) { if (((*(byte *)(iVar2 + 0xc) & 4) != 0) && (puVar6 = FUN_0045180d(), puVar6 != (undefined4 *)0x0)) { local_18 = *in_stack_0000001c; LAB_00451928: if ((local_14 == 0) || (puVar6 != local_10)) { local_14 = local_14 + 1; local_c = local_18; local_10 = puVar6; } else { local_c = local_c | local_18; } } } else if (in_stack_0000000c == (undefined4 *)0x0) { if ((in_stack_00000014 == 0) || (puVar4 = FUN_0045180d(), puVar4 != (undefined4 *)0x0)) goto LAB_00451928; } else if (puVar6 == in_stack_0000000c) { return puVar6; } } piVar5 = piVar5 + 3; } while( true ); } undefined4 * FUN_00451984(void) { int iVar1; undefined4 *puVar2; int in_stack_00000004; int in_stack_00000008; int in_stack_00000010; int in_stack_00000014; int local_c; if ((in_stack_00000004 == 0) || ((((puVar2 = (undefined4 *)(in_stack_00000004 - *(int *)(in_stack_00000008 + -8)), in_stack_00000010 != 0 && (iVar1 = FUN_004501f8(), iVar1 == 0)) && ((iVar1 = FUN_004501f8(), iVar1 != 0 || (puVar2 = FUN_0045180d(), puVar2 == (undefined4 *)0x0)))) && ((puVar2 = FUN_0045180d(), puVar2 == (undefined4 *)0x0 || (local_c == 0)))))) { if (in_stack_00000014 != 0) { FUN_004508b0(); } puVar2 = (undefined4 *)0x0; } return puVar2; } void FUN_00451ae0(int param_1) { undefined4 *puVar1; undefined4 *puVar2; int unaff_EBP; undefined2 in_FS; puVar2 = (undefined4 *)(unaff_EBP + *(int *)(param_1 + 4)); puVar2[2] = param_1; puVar2[3] = &stack0x00000004; puVar2[1] = &DAT_00450e87; puVar2[4] = 0; *(undefined4 *)((int)puVar2 + 0x12) = 0; puVar2[7] = *DAT_0046aaa4; puVar1 = (undefined4 *)segment(in_FS,0); *puVar2 = *puVar1; puVar1 = (undefined4 *)segment(in_FS,0); *puVar1 = puVar2; return; } undefined4 FUN_00451b26(void) { undefined4 uVar1; int in_FS_OFFSET; int in_stack_00000004; uVar1 = *(undefined4 *)(*(int *)(*(int *)(in_FS_OFFSET + 4) + -8) + 8); if (in_stack_00000004 != 0) { *(int *)(*(int *)(*(int *)(in_FS_OFFSET + 4) + -8) + 8) = in_stack_00000004; } return uVar1; } void FUN_00451b4b(void) { undefined4 uVar1; LPCVOID *extraout_ECX; undefined4 extraout_EDX; undefined4 *in_FS_OFFSET; undefined4 local_24; uVar1 = FUN_00451ae0(&DAT_00463778); thunk_FUN_004532b8(uVar1,extraout_EDX,extraout_ECX); (**(code **)(*(int *)(in_FS_OFFSET[1] + -8) + 8))(); FUN_004548d0(); *in_FS_OFFSET = local_24; return; } undefined4 FUN_00451b9f(void) { undefined4 uVar1; int in_FS_OFFSET; int in_stack_00000004; uVar1 = *(undefined4 *)(*(int *)(*(int *)(in_FS_OFFSET + 4) + -8) + 0xc); if (in_stack_00000004 != 0) { *(int *)(*(int *)(*(int *)(in_FS_OFFSET + 4) + -8) + 0xc) = in_stack_00000004; } return uVar1; } void FUN_00451bc4(void) { int in_FS_OFFSET; (**(code **)(*(int *)(*(int *)(in_FS_OFFSET + 4) + -8) + 0xc))(); FUN_004548d0(); return; } undefined4 FUN_00451bd8(void) { int in_stack_00000004; int in_stack_00000008; if (in_stack_00000004 == 0) { return 0; } return *(undefined4 *) (*(int *)((*(int *)(in_stack_00000004 + in_stack_00000008) - *(int *)(*(int *)(in_stack_00000004 + in_stack_00000008) + -4)) + -0xc) + 0x20); } void FUN_00451bf7(void) { HMODULE hModule; FARPROC pFVar1; int in_FS_OFFSET; bool bVar2; int in_stack_00000004; uint local_c; int local_8; bVar2 = in_stack_00000004 == 0; if (in_stack_00000004 == 0) { if (DAT_00460058 != '\0') { pFVar1 = (FARPROC)0x0; hModule = GetModuleHandleA((LPCSTR)0x0); if (hModule != (HMODULE)0x0) { pFVar1 = GetProcAddress(hModule,s___GetExceptDLLinfo_00463790); } if (pFVar1 != (FARPROC)0x0) { (*pFVar1)(); if ((0x82727348 < local_c) && (local_c < 0x8272735a)) { in_stack_00000004 = local_8; } } } if (in_stack_00000004 == 0) { FUN_00451cb0(); in_stack_00000004 = local_8; } } else { *(undefined1 **)(in_stack_00000004 + 8) = &LAB_00451b20; *(undefined1 **)(in_stack_00000004 + 0xc) = &LAB_00451b99; } *(int *)(*(int *)(in_FS_OFFSET + 4) + -8) = in_stack_00000004; if (bVar2) { DAT_0046aaa4 = *(int *)(in_FS_OFFSET + 4) + -4; } *(undefined4 *)(*(int *)(in_FS_OFFSET + 4) + -4) = 0; *(undefined4 *)(*(int *)(*(int *)(in_FS_OFFSET + 4) + -8) + 4) = 0; return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_00451cb0(void) { int in_FS_OFFSET; undefined4 *in_stack_00000004; _DAT_004636d0 = *(int *)(*(int *)(in_FS_OFFSET + 4) + -8) + 0x24; *in_stack_00000004 = 0x82727349; in_stack_00000004[1] = &DAT_004636b4; return; } undefined4 FUN_00451cd8(void) { return 1; } void FUN_00451d80(void) { undefined4 *in_stack_00000004; *in_stack_00000004 = 0; in_stack_00000004[1] = &LAB_00451ce4; FUN_00451e30(); return; } void FUN_00451d9c(void) { FUN_00451e45(); return; } undefined4 FUN_00451dac(void) { undefined4 uVar1; undefined4 in_stack_00000004; uVar1 = DAT_0046aaac; DAT_0046aaac = in_stack_00000004; return uVar1; } void FUN_00451df8(void) { if (DAT_0046aec0 != 0) { FUN_00451d80(); } return; } void FUN_00451e12(PVOID param_1,PEXCEPTION_RECORD param_2) { RtlUnwind(param_1,(PVOID)0x451e23,param_2,(PVOID)0x0); return; } void FUN_00451e27(void) { undefined4 *unaff_EBX; (*(code *)*unaff_EBX)(); return; } void FUN_00451e30(void) { undefined4 *puVar1; undefined2 in_FS; undefined4 *in_stack_00000004; puVar1 = (undefined4 *)segment(in_FS,0); *in_stack_00000004 = *puVar1; puVar1 = (undefined4 *)segment(in_FS,0); *puVar1 = in_stack_00000004; return; } void FUN_00451e45(void) { int *piVar1; undefined4 *puVar2; undefined2 in_FS; undefined4 *in_stack_00000004; piVar1 = (int *)segment(in_FS,0); puVar2 = (undefined4 *)*piVar1; if (in_stack_00000004 == puVar2) { puVar2 = (undefined4 *)segment(in_FS,0); *puVar2 = *in_stack_00000004; } else { for (; puVar2 != (undefined4 *)0xffffffff; puVar2 = (undefined4 *)*puVar2) { if ((undefined4 *)*puVar2 == in_stack_00000004) { *puVar2 = *in_stack_00000004; return; } } } return; } int thunk_FUN_004532b8(undefined4 param_1,undefined4 param_2,LPCVOID *param_3) { LPCVOID *ppvVar1; undefined4 extraout_EDX; LPCVOID *ppvVar2; int iVar3; int iVar4; iVar4 = 0; ppvVar2 = (LPCVOID *)&DAT_004637b8; iVar3 = DAT_00463b78; while (iVar3 != 0) { if ((*(byte *)((int)ppvVar2 + 0x12) & 3) != 0) { ppvVar1 = ppvVar2; FUN_00451f94(iVar3,param_2,(DWORD)param_3,ppvVar2); param_3 = ppvVar1; iVar4 = iVar4 + 1; param_2 = extraout_EDX; } ppvVar2 = ppvVar2 + 6; iVar3 = iVar3 + -1; } return iVar4; } undefined4 FUN_00451e80(void) { int *in_stack_00000004; void *in_stack_00000008; int in_stack_0000000c; uint in_stack_00000010; if ((*(byte *)((int)in_stack_00000004 + 0x12) & 4) != 0) { TurboFree_(in_stack_00000004[1]); } *(ushort *)((int)in_stack_00000004 + 0x12) = *(ushort *)((int)in_stack_00000004 + 0x12) & 0xfff3; in_stack_00000004[3] = 0; in_stack_00000004[1] = (int)in_stack_00000004 + 0x17; *in_stack_00000004 = (int)in_stack_00000004 + 0x17; if ((in_stack_0000000c != 2) && (in_stack_00000010 != 0)) { PTR_FUN_00464428 = &LAB_00453280; if (in_stack_00000008 == (void *)0x0) { in_stack_00000008 = TurboAlloc_(in_stack_00000010); if (in_stack_00000008 == (void *)0x0) { return 0xffffffff; } *(ushort *)((int)in_stack_00000004 + 0x12) = *(ushort *)((int)in_stack_00000004 + 0x12) | 4; } *in_stack_00000004 = (int)in_stack_00000008; in_stack_00000004[1] = (int)in_stack_00000008; in_stack_00000004[3] = in_stack_00000010; if (in_stack_0000000c == 1) { *(ushort *)((int)in_stack_00000004 + 0x12) = *(ushort *)((int)in_stack_00000004 + 0x12) | 8; } } return 0; } undefined4 FUN_00451f00(uint param_1,undefined4 param_2,DWORD param_3,LPCVOID *param_4) { undefined4 uVar1; int iVar2; if ((param_4 == (LPCVOID *)0x0) || (*(short *)(param_4 + 5) != (short)param_4)) { uVar1 = 0xffffffff; } else { if (param_4[3] != (LPCVOID)0x0) { if (((int)param_4[2] < 0) && (iVar2 = FUN_00451f94(CONCAT22((short)(param_1 >> 0x10),*(short *)(param_4 + 5)),param_2, param_3,param_4), iVar2 != 0)) { return 0xffffffff; } if ((*(byte *)((int)param_4 + 0x12) & 4) != 0) { TurboFree_(param_4[1]); } } uVar1 = FUN_00453c70(); *(undefined2 *)((int)param_4 + 0x12) = 0; param_4[3] = (LPCVOID)0x0; param_4[2] = (LPCVOID)0x0; *(undefined1 *)((int)param_4 + 0x16) = 0xff; if (*(short *)(param_4 + 4) != 0) { FUN_004528d8(); FUN_00453f48(); *(undefined2 *)(param_4 + 4) = 0; } } return uVar1; } undefined4 FUN_00451f94(undefined4 param_1,undefined4 param_2,DWORD param_3,LPCVOID *param_4) { undefined4 uVar1; DWORD DVar2; DWORD DVar3; if (param_4 == (LPCVOID *)0x0) { FUN_0045201c(param_1,param_2,param_3); uVar1 = 0; } else if (*(short *)(param_4 + 5) == (short)param_4) { if ((int)param_4[2] < 0) { DVar3 = (int)param_4[3] + (int)param_4[2] + 1; param_4[2] = (LPCVOID)((int)param_4[2] - DVar3); *param_4 = param_4[1]; DVar2 = FUN_004535e4((int)*(char *)((int)param_4 + 0x16),param_2,param_3, (int)*(char *)((int)param_4 + 0x16),param_4[1],DVar3); if ((DVar3 == DVar2) || ((*(byte *)((int)param_4 + 0x13) & 2) != 0)) { uVar1 = 0; } else { *(ushort *)((int)param_4 + 0x12) = *(ushort *)((int)param_4 + 0x12) | 0x10; uVar1 = 0xffffffff; } } else { if ((((*(byte *)((int)param_4 + 0x12) & 8) != 0) || ((LPCVOID)((int)param_4 + 0x17) == *param_4)) && (param_4[2] = (LPCVOID)0x0, (LPCVOID)((int)param_4 + 0x17) == *param_4)) { *param_4 = param_4[1]; } uVar1 = 0; } } else { uVar1 = 0xffffffff; } return uVar1; } int FUN_0045201c(undefined4 param_1,undefined4 param_2,DWORD param_3) { DWORD DVar1; DWORD extraout_ECX; undefined4 extraout_EDX; undefined4 *puVar2; int iVar3; DWORD DVar4; int iVar5; iVar3 = 0; puVar2 = &DAT_004637b8; iVar5 = DAT_00463b78; while (iVar5 != 0) { if ((int)puVar2[2] < 0) { DVar4 = puVar2[3] + puVar2[2] + 1; puVar2[2] = puVar2[2] - DVar4; *puVar2 = (LPCVOID)puVar2[1]; DVar1 = FUN_004535e4((int)*(char *)((int)puVar2 + 0x16),param_2,param_3, (int)*(char *)((int)puVar2 + 0x16),(LPCVOID)puVar2[1],DVar4); if ((DVar4 != DVar1) && ((*(byte *)((int)puVar2 + 0x13) & 2) == 0)) { *(ushort *)((int)puVar2 + 0x12) = *(ushort *)((int)puVar2 + 0x12) | 0x10; } iVar3 = iVar3 + 1; param_3 = extraout_ECX; param_2 = extraout_EDX; } puVar2 = puVar2 + 6; iVar5 = iVar5 + -1; } return iVar3; } void FUN_0045207c(void) { undefined *in_stack_00000004; PTR_DAT_00463c20 = in_stack_00000004; return; } uint FUN_0045208c(void) { char cVar1; uint uVar2; uint uVar3; undefined4 uVar4; char *in_stack_00000004; uint *in_stack_00000008; undefined4 *in_stack_0000000c; uVar4 = 0; cVar1 = *in_stack_00000004; if (cVar1 == 'r') { uVar3 = 0; uVar2 = 1; } else if (cVar1 == 'w') { uVar3 = 0x301; uVar4 = 0x80; uVar2 = 2; } else { if (cVar1 != 'a') { return 0; } uVar3 = 0x901; uVar4 = 0x80; uVar2 = 2; } cVar1 = in_stack_00000004[1]; if ((cVar1 == '+') || ((in_stack_00000004[2] == '+' && ((cVar1 == 't' || (cVar1 == 'b')))))) { if (cVar1 == '+') { cVar1 = in_stack_00000004[2]; } uVar3 = uVar3 & 0xfffffffe | 2; uVar4 = 0x180; uVar2 = 3; } if (cVar1 == 't') { uVar3 = uVar3 | 0x4000; } else if (cVar1 == 'b') { uVar3 = uVar3 | 0x8000; uVar2 = uVar2 | 0x40; } else { uVar3 = uVar3 | *(uint *)PTR_DAT_00463c20 & 0xc000; if ((*(uint *)PTR_DAT_00463c20 & 0x8000) != 0) { uVar2 = uVar2 | 0x40; } } PTR_FUN_0046442c = &LAB_00453258; *in_stack_00000008 = uVar3; *in_stack_0000000c = uVar4; return uVar2; } LPCVOID * FUN_0045214c(void) { uint uVar1; int iVar2; DWORD extraout_ECX; DWORD extraout_ECX_00; DWORD DVar3; DWORD extraout_ECX_01; undefined4 extraout_EDX; undefined4 extraout_EDX_00; undefined4 uVar4; undefined4 extraout_EDX_01; LPCVOID *in_stack_00000004; uVar1 = FUN_0045208c(); *(short *)((int)in_stack_00000004 + 0x12) = (short)uVar1; if ((short)uVar1 == 0) { LAB_00452197: *(undefined1 *)((int)in_stack_00000004 + 0x16) = 0xff; *(undefined2 *)((int)in_stack_00000004 + 0x12) = 0; in_stack_00000004 = (LPCVOID *)0x0; } else { DVar3 = extraout_ECX; uVar4 = extraout_EDX; if (*(char *)((int)in_stack_00000004 + 0x16) < '\0') { iVar2 = FUN_00453d58(); *(char *)((int)in_stack_00000004 + 0x16) = (char)iVar2; DVar3 = extraout_ECX_00; uVar4 = extraout_EDX_00; if ((char)iVar2 < '\0') goto LAB_00452197; } if ((*(byte *)((int)&DAT_00463b7c + *(char *)((int)in_stack_00000004 + 0x16) * 4 + 1) & 0x20) != 0) { *(ushort *)((int)in_stack_00000004 + 0x12) = *(ushort *)((int)in_stack_00000004 + 0x12) | 0x200; } uVar1 = (uint)((*(byte *)((int)in_stack_00000004 + 0x13) & 2) != 0); uVar1 = FUN_004529e8(uVar1,uVar4,DVar3,in_stack_00000004,0,uVar1,0x200); if (uVar1 == 0) { *(undefined2 *)(in_stack_00000004 + 4) = 0; } else { FUN_00451f00(uVar1,extraout_EDX_01,extraout_ECX_01,in_stack_00000004); in_stack_00000004 = (LPCVOID *)0x0; } } return in_stack_00000004; } undefined4 * FUN_004521f4(void) { undefined4 *puVar1; puVar1 = &DAT_004637b8; while( true ) { if (*(char *)((int)puVar1 + 0x16) < '\0') { return puVar1; } if (&DAT_004637b8 + DAT_00463b78 * 6 <= puVar1) break; puVar1 = puVar1 + 6; } return (undefined4 *)0x0; } LPCVOID * FUN_00452220(void) { undefined4 *puVar1; LPCVOID *ppvVar2; puVar1 = FUN_004521f4(); ppvVar2 = (LPCVOID *)0x0; if (puVar1 != (undefined4 *)0x0) { ppvVar2 = FUN_0045214c(); } return ppvVar2; } byte * FUN_0045226c(undefined4 param_1,uint param_2,byte **param_3,byte *param_4,byte *param_5, byte **param_6) { byte *pbVar1; byte **ppbVar2; uint uVar3; int iVar4; byte *pbVar5; byte **extraout_ECX; uint extraout_EDX; uint extraout_EDX_00; pbVar5 = param_5; if ((*(byte *)((int)param_6 + 0x12) & 8) == 0) { pbVar5 = param_6[3]; if ((pbVar5 == (byte *)0x0) || (pbVar5 < param_5)) { if ((param_6[3] == (byte *)0x0) || ((param_6[2] == (byte *)0x0 || (ppbVar2 = param_6, iVar4 = FUN_00451f94(pbVar5,param_2,(DWORD)param_3,param_6), param_3 = ppbVar2, param_2 = extraout_EDX_00, iVar4 == 0)))) { pbVar5 = (byte *)FUN_004535e4((int)*(char *)((int)param_6 + 0x16),param_2,(DWORD)param_3, (int)*(char *)((int)param_6 + 0x16),param_4,(DWORD)param_5); if (pbVar5 < param_5) { param_5 = (byte *)0x0; } } else { param_5 = (byte *)0x0; } } else { pbVar1 = param_6[2]; if (-1 < (int)(pbVar1 + (int)param_5)) { if (pbVar1 == (byte *)0x0) { param_6[2] = (byte *)(-1 - (int)pbVar5); } else { iVar4 = FUN_00451f94(pbVar5,pbVar1,(DWORD)(pbVar1 + (int)param_5),param_6); if (iVar4 != 0) { return (byte *)0x0; } } } Memcpy(*param_6,param_4,(uint)param_5); param_6[2] = param_6[2] + (int)param_5; *param_6 = *param_6 + (int)param_5; } } else { for (; pbVar5 != (byte *)0x0; pbVar5 = pbVar5 + -1) { uVar3 = FUN_004527e4((int)(char)*param_4,param_2,param_3,*param_4,param_6); if (uVar3 == 0xffffffff) { return (byte *)0x0; } param_4 = param_4 + 1; param_2 = extraout_EDX; param_3 = extraout_ECX; } } return param_5; } LPCVOID * FUN_0045237c(undefined4 param_1,undefined *param_2,byte **param_3,undefined *param_4, LPCVOID *param_5,byte **param_6) { byte *pbVar1; byte **ppbVar2; LPCVOID *ppvVar3; uint uVar4; LPCVOID *extraout_ECX; LPCVOID *ppvVar5; undefined *extraout_EDX; undefined *extraout_EDX_00; LPCVOID *ppvVar6; undefined *local_c; uint local_8; local_c = param_4; if (param_6[3] != (byte *)0x0) { LAB_0045239b: if (param_5 == (LPCVOID *)0x0) { return (LPCVOID *)0x0; } do { ppvVar5 = (LPCVOID *)param_6[2]; ppvVar3 = (LPCVOID *)0x0; if (ppvVar5 != (LPCVOID *)0x0) { ppvVar6 = param_5; if (ppvVar5 < param_5) { ppvVar6 = ppvVar5; } ppvVar3 = Memcpy(local_c,*param_6,(uint)ppvVar6); *param_6 = *param_6 + (int)ppvVar6; param_6[2] = param_6[2] + -(int)ppvVar6; if (param_5 == ppvVar6) { return (LPCVOID *)0x0; } local_c = local_c + (int)ppvVar6; param_5 = (LPCVOID *)((int)param_5 - (int)ppvVar6); param_2 = extraout_EDX; } ppvVar5 = (LPCVOID *)param_6[3]; if (ppvVar5 <= param_5) { ppvVar6 = (LPCVOID *)((int)param_5 - (uint)param_5 % (uint)ppvVar5); ppvVar3 = (LPCVOID *) FUN_004533fc((int)*(char *)((int)param_6 + 0x16),(uint)param_5 % (uint)ppvVar5, (DWORD)ppvVar5,(uint *)(int)*(char *)((int)param_6 + 0x16),local_c, (char *)ppvVar6); if (param_5 == ppvVar3) { return (LPCVOID *)0x0; } if (ppvVar3 == (LPCVOID *)0xffffffff) { *(ushort *)((int)param_6 + 0x12) = *(ushort *)((int)param_6 + 0x12) | 0x10; return param_5; } local_c = local_c + (int)ppvVar3; param_5 = (LPCVOID *)((int)param_5 - (int)ppvVar3); ppvVar5 = extraout_ECX; param_2 = extraout_EDX_00; if (ppvVar6 != ppvVar3) goto code_r0x00452428; } uVar4 = FUN_00452718(ppvVar3,param_2,ppvVar5,param_6); if (uVar4 == 0xffffffff) { *(ushort *)((int)param_6 + 0x12) = *(ushort *)((int)param_6 + 0x12) | 0x20; return param_5; } local_8._0_1_ = (undefined1)uVar4; *local_c = (undefined1)local_8; param_5 = (LPCVOID *)((int)param_5 + -1); param_2 = local_c; local_c = local_c + 1; if (param_5 == (LPCVOID *)0x0) { return (LPCVOID *)0x0; } } while( true ); } for (; param_5 != (LPCVOID *)0x0; param_5 = (LPCVOID *)((int)param_5 + -1)) { ppbVar2 = param_6 + 2; *ppbVar2 = *ppbVar2 + -1; if ((int)*ppbVar2 < 0) { ppbVar2 = param_6; local_8 = FUN_00452704(param_4,param_2,param_3,(int)param_6); param_3 = ppbVar2; } else { pbVar1 = *param_6; *param_6 = *param_6 + 1; local_8 = (uint)*pbVar1; } if (local_8 + 1 == 0) break; param_4 = (undefined *)CONCAT31((int3)(local_8 + 1 >> 8),(undefined1)local_8); *local_c = (undefined1)local_8; param_2 = local_c; local_c = local_c + 1; } if (local_8 == 0xffffffff) { *(ushort *)((int)param_6 + 0x12) = *(ushort *)((int)param_6 + 0x12) | 0x20; } return param_5; code_r0x00452428: if (((*(byte *)((int)param_6 + 0x12) & 0x40) != 0) || (ppvVar3 == (LPCVOID *)0x0)) { *(ushort *)((int)param_6 + 0x12) = *(ushort *)((int)param_6 + 0x12) | 0x20; return param_5; } goto LAB_0045239b; } uint FUN_004524ac(undefined4 param_1,undefined *param_2,byte **param_3,undefined4 param_4, uint param_5,int param_6,byte **param_7) { uint uVar1; LPCVOID *ppvVar2; if (param_5 == 0) { uVar1 = 0; } else { ppvVar2 = FUN_0045237c(param_4,param_2,param_3,(undefined *)param_4, (LPCVOID *)(param_5 * param_6),param_7); uVar1 = (uint)((int)(param_5 * param_6) - (int)ppvVar2) / param_5; } return uVar1; } char * FUN_004524e0(void) { char cVar1; char *pcVar2; char *pcVar3; char *pcVar4; char *pcVar5; char *pcVar6; undefined4 *in_stack_00000004; pcVar2 = (char *)in_stack_00000004[2]; if ((int)pcVar2 < 0) { pcVar2 = pcVar2 + in_stack_00000004[3] + 1; } if ((*(byte *)((int)in_stack_00000004 + 0x12) & 0x40) == 0) { pcVar6 = (char *)*in_stack_00000004; pcVar3 = pcVar2; pcVar5 = pcVar2; if ((int)in_stack_00000004[2] < 0) { while (pcVar3 = pcVar2 + -1, pcVar2 != (char *)0x0) { pcVar6 = pcVar6 + -1; pcVar2 = pcVar3; if (*pcVar6 == '\n') { pcVar5 = pcVar5 + 1; } } } else { while (pcVar4 = pcVar3 + -1, pcVar5 = pcVar2, pcVar3 != (char *)0x0) { cVar1 = *pcVar6; pcVar6 = pcVar6 + 1; pcVar3 = pcVar4; if (cVar1 == '\n') { pcVar2 = pcVar2 + 1; } } } return pcVar5; } return pcVar2; } undefined4 FUN_0045253c(undefined4 param_1,undefined4 param_2,DWORD param_3,LPCVOID *param_4,undefined4 param_5 ,int param_6) { int iVar1; undefined4 uVar2; DWORD DVar3; iVar1 = FUN_00451f94(param_1,param_2,param_3,param_4); if (iVar1 == 0) { if ((param_6 == 1) && (0 < (int)param_4[2])) { FUN_004524e0(); } *(ushort *)((int)param_4 + 0x12) = *(ushort *)((int)param_4 + 0x12) & 0xfe5f; param_4[2] = (LPCVOID)0x0; *param_4 = param_4[1]; DVar3 = FUN_00453ce0(); if (DVar3 == 0xffffffff) { uVar2 = 0xffffffff; } else { uVar2 = 0; } } else { uVar2 = 0xffffffff; } return uVar2; } char * FUN_004525a0(void) { char *pcVar1; DWORD DVar2; char *pcVar3; int in_stack_00000004; pcVar1 = (char *)FUN_00453ce0(); if (pcVar1 != (char *)0xffffffff) { if (*(int *)(in_stack_00000004 + 8) < 0) { if ((*(byte *)((int)&DAT_00463b7c + *(char *)(in_stack_00000004 + 0x16) * 4 + 1) & 8) != 0) { pcVar1 = (char *)FUN_00453ce0(); if (pcVar1 == (char *)0xffffffff) { return (char *)0xffffffff; } DVar2 = FUN_00453ce0(); if (DVar2 == 0xffffffff) { return (char *)0xffffffff; } } pcVar3 = FUN_004524e0(); pcVar1 = pcVar1 + (int)pcVar3; } else { pcVar3 = FUN_004524e0(); pcVar1 = pcVar1 + -(int)pcVar3; } } return pcVar1; } uint FUN_00452624(undefined4 param_1,undefined4 param_2,byte **param_3,undefined4 param_4, uint param_5,uint param_6,byte **param_7) { byte *pbVar1; if (param_5 != 0) { pbVar1 = FUN_0045226c(param_4,(uint)((ulonglong) ((longlong)(int)param_5 * (longlong)(int)param_6) >> 0x20), param_3,(byte *)param_4, (byte *)((longlong)(int)param_5 * (longlong)(int)param_6),param_7); param_6 = (uint)pbVar1 / param_5; } return param_6; } void FUN_00452654(void) { FUN_004536c4(); return; } void FUN_0045266c(undefined4 param_1,undefined4 param_2,LPCVOID *param_3) { LPCVOID *ppvVar1; undefined4 extraout_EDX; LPCVOID *ppvVar2; int iVar3; ppvVar2 = (LPCVOID *)&DAT_004637b8; iVar3 = 0x28; while (iVar3 != 0) { if ((*(ushort *)((int)ppvVar2 + 0x12) & 0x300) == 0x300) { ppvVar1 = ppvVar2; FUN_00451f94(0x300,param_2,(DWORD)param_3,ppvVar2); param_3 = ppvVar1; param_2 = extraout_EDX; } ppvVar2 = ppvVar2 + 6; iVar3 = iVar3 + -1; } return; } undefined4 FUN_004526a0(undefined4 param_1,undefined4 param_2,LPCVOID *param_3,LPVOID *param_4) { char *pcVar1; LPCVOID *extraout_ECX; undefined4 extraout_EDX; if ((*(byte *)((int)param_4 + 0x13) & 2) != 0) { FUN_0045266c(param_1,param_2,param_3); param_3 = extraout_ECX; param_2 = extraout_EDX; } *param_4 = param_4[1]; pcVar1 = FUN_004533fc((int)*(char *)((int)param_4 + 0x16),param_2,(DWORD)param_3, (uint *)(int)*(char *)((int)param_4 + 0x16),param_4[1],param_4[3]); param_4[2] = pcVar1; if (0 < (int)pcVar1) { *(ushort *)((int)param_4 + 0x12) = *(ushort *)((int)param_4 + 0x12) & 0xffdf; return 0; } if (param_4[2] == (LPVOID)0x0) { *(ushort *)((int)param_4 + 0x12) = *(ushort *)((int)param_4 + 0x12) & 0xfe7f | 0x20; } else { param_4[2] = (LPVOID)0x0; *(ushort *)((int)param_4 + 0x12) = *(ushort *)((int)param_4 + 0x12) | 0x10; } return 0xffffffff; } void FUN_00452704(undefined4 param_1,undefined4 param_2,LPCVOID *param_3,int param_4) { *(int *)(param_4 + 8) = *(int *)(param_4 + 8) + 1; FUN_00452718(param_4,param_2,param_3,(byte **)param_4); return; } uint FUN_00452718(undefined4 param_1,undefined4 param_2,LPCVOID *param_3,byte **param_4) { byte *pbVar1; int iVar2; char *pcVar3; uint uVar4; LPCVOID *extraout_ECX; undefined4 extraout_EDX; if (param_4 == (byte **)0x0) { return 0xffffffff; } if (0 < (int)param_4[2]) { param_4[2] = param_4[2] + -1; pbVar1 = *param_4; *param_4 = *param_4 + 1; return (uint)*pbVar1; } if ((((int)param_4[2] < 0) || ((*(ushort *)((int)param_4 + 0x12) & 0x110) != 0)) || ((*(byte *)((int)param_4 + 0x12) & 1) == 0)) { *(ushort *)((int)param_4 + 0x12) = *(ushort *)((int)param_4 + 0x12) | 0x10; return 0xffffffff; } *(ushort *)((int)param_4 + 0x12) = *(ushort *)((int)param_4 + 0x12) | 0x80; if (param_4[3] != (byte *)0x0) { iVar2 = FUN_004526a0(param_1,param_2,param_3,param_4); if (iVar2 != 0) { return 0xffffffff; } param_4[2] = param_4[2] + -1; pbVar1 = *param_4; *param_4 = *param_4 + 1; return (uint)*pbVar1; } if ((*(byte *)((int)param_4 + 0x13) & 2) != 0) { FUN_0045266c(param_1,param_2,param_3); param_3 = extraout_ECX; param_2 = extraout_EDX; } pcVar3 = FUN_004533fc((int)*(char *)((int)param_4 + 0x16),param_2,(DWORD)param_3, (uint *)(int)*(char *)((int)param_4 + 0x16),&DAT_0046abf0,(char *)0x1); if (pcVar3 == (char *)0x0) { uVar4 = FUN_00453304(); if (uVar4 == 1) { *(ushort *)((int)param_4 + 0x12) = *(ushort *)((int)param_4 + 0x12) & 0xfe7f | 0x20; } else { *(ushort *)((int)param_4 + 0x12) = *(ushort *)((int)param_4 + 0x12) | 0x10; } return 0xffffffff; } *(ushort *)((int)param_4 + 0x12) = *(ushort *)((int)param_4 + 0x12) & 0xffdf; return (uint)DAT_0046abf0; } uint FUN_004527e4(uint param_1,uint param_2,byte **param_3,byte param_4,byte **param_5) { ushort uVar1; byte *pbVar2; byte **ppbVar3; int iVar4; uint uVar5; DWORD DVar6; uint extraout_EDX; byte local_5; local_5 = param_4; if ((int)param_5[2] < -1) { param_5[2] = param_5[2] + 1; pbVar2 = *param_5; *param_5 = *param_5 + 1; *pbVar2 = param_4; if ((((*(byte *)((int)param_5 + 0x12) & 8) != 0) && ((param_4 == 10 || (param_4 == 0xd)))) && (iVar4 = FUN_00451f94(pbVar2,CONCAT31((int3)(param_2 >> 8),param_4),(DWORD)param_3,param_5), iVar4 != 0)) { return 0xffffffff; } uVar5 = (uint)local_5; } else { uVar1 = *(ushort *)((int)param_5 + 0x12); if (((uVar1 & 0x90) == 0) && ((uVar1 & 2) != 0)) { *(ushort *)((int)param_5 + 0x12) = *(ushort *)((int)param_5 + 0x12) | 0x100; if (param_5[3] == (byte *)0x0) { DVar6 = FUN_004535e4((int)*(char *)((int)param_5 + 0x16),param_2,(DWORD)param_3, (int)*(char *)((int)param_5 + 0x16),&local_5,1); if ((DVar6 == 1) || ((*(byte *)((int)param_5 + 0x13) & 2) != 0)) { uVar5 = (uint)local_5; } else { *(ushort *)((int)param_5 + 0x12) = *(ushort *)((int)param_5 + 0x12) | 0x10; uVar5 = 0xffffffff; } } else { if ((param_5[2] != (byte *)0x0) && (ppbVar3 = param_5, iVar4 = FUN_00451f94(CONCAT22((short)(param_1 >> 0x10),uVar1),param_2,(DWORD)param_3, param_5), param_3 = ppbVar3, param_2 = extraout_EDX, iVar4 != 0)) { return 0xffffffff; } param_5[2] = (byte *)-(int)param_5[3]; pbVar2 = *param_5; *param_5 = *param_5 + 1; *pbVar2 = local_5; if (((*(byte *)((int)param_5 + 0x12) & 8) != 0) && (((local_5 == 10 || (local_5 == 0xd)) && (iVar4 = FUN_00451f94(pbVar2,CONCAT31((int3)(param_2 >> 8),local_5),(DWORD)param_3, param_5), iVar4 != 0)))) { return 0xffffffff; } uVar5 = (uint)local_5; } } else { *(ushort *)((int)param_5 + 0x12) = *(ushort *)((int)param_5 + 0x12) | 0x10; uVar5 = 0xffffffff; } } return uVar5; } undefined * FUN_004528d8(void) { undefined *in_stack_00000004; if (in_stack_00000004 == (undefined *)0x0) { in_stack_00000004 = &DAT_0046abfa; } FUN_004501ac(); FUN_0045411c(); FUN_0044feec(); return in_stack_00000004; } undefined * FUN_00452928(void) { undefined *puVar1; int iVar2; short *in_stack_00000008; do { *in_stack_00000008 = *in_stack_00000008 + 1; if (*in_stack_00000008 == 0) { *in_stack_00000008 = 1; } puVar1 = FUN_004528d8(); iVar2 = FUN_00453c34(); } while (iVar2 == 0); return puVar1; } undefined4 FUN_004529e8(uint param_1,undefined4 param_2,DWORD param_3,LPCVOID *param_4,undefined4 param_5, int param_6,uint param_7) { undefined4 uVar1; if (((*(short *)(param_4 + 5) == (short)param_4) && (param_6 < 3)) && (param_7 < 0x80000000)) { if (param_4[2] != (LPCVOID)0x0) { FUN_0045253c(CONCAT22((short)(param_1 >> 0x10),*(short *)(param_4 + 5)),param_2,param_3, param_4,0,1); } if ((*(byte *)((int)param_4 + 0x12) & 4) != 0) { TurboFree_(param_4[1]); } uVar1 = FUN_00451e80(); } else { uVar1 = 0xffffffff; } return uVar1; } void FUN_00452b70(void) { int iVar1; int in_stack_00000004; if (*(int *)(in_stack_00000004 + 0x50) != 0) { iVar1 = (**(code **)(in_stack_00000004 + 0x54))(); if (iVar1 == 0) { *(undefined4 *)(in_stack_00000004 + 0x60) = 1; } *(undefined4 *)(in_stack_00000004 + 0x50) = 0; } return; } void FUN_00452ba0(void) { undefined1 in_stack_00000004; int in_stack_00000008; if (0x4f < *(int *)(in_stack_00000008 + 0x50)) { FUN_00452b70(); } *(undefined1 *)(in_stack_00000008 + *(int *)(in_stack_00000008 + 0x50)) = in_stack_00000004; *(int *)(in_stack_00000008 + 0x50) = *(int *)(in_stack_00000008 + 0x50) + 1; *(int *)(in_stack_00000008 + 0x5c) = *(int *)(in_stack_00000008 + 0x5c) + 1; return; } void FUN_00452bc8(void) { char *pcVar1; int iVar2; char cVar3; uint in_stack_00000004; int in_stack_00000008; iVar2 = 7; pcVar1 = (char *)(in_stack_00000008 + 7); do { cVar3 = (char)(in_stack_00000004 & 0xf); if ((in_stack_00000004 & 0xf) < 10) { *pcVar1 = cVar3 + '0'; } else { *pcVar1 = cVar3 + '7'; } in_stack_00000004 = in_stack_00000004 >> 4; iVar2 = iVar2 + -1; pcVar1 = pcVar1 + -1; } while (-1 < iVar2); return; } // WARNING: Removing unreachable block (ram,0x00453246) undefined4 Sprintf0(void) { uint *puVar1; int iVar2; uint uVar3; bool bVar4; bool bVar5; bool bVar6; bool bVar7; bool bVar8; uint uVar9; char cVar10; char *pcVar11; uint uVar12; bool bVar13; char *in_stack_0000000c; uint *in_stack_00000010; char local_5c [8]; undefined1 local_54; uint local_2c; uint local_28; undefined4 local_24; char *local_20; char local_19; char *local_18; int local_14; char local_d; uint local_c; uint local_8; LAB_00452c22: pcVar11 = in_stack_0000000c; in_stack_0000000c = pcVar11 + 1; if (*pcVar11 != '\0') { if (*pcVar11 == '%') { if (*in_stack_0000000c != '%') { uVar9 = 0; local_d = '\0'; local_14 = 0; uVar12 = 0; bVar7 = false; bVar13 = false; bVar6 = false; bVar5 = false; local_c = 0xffffffff; local_8 = 0xffffffff; switchD_00452c88_caseD_18: bVar4 = false; cVar10 = *in_stack_0000000c; in_stack_0000000c = in_stack_0000000c + 1; local_18 = pcVar11; if (cVar10 < ' ') goto switchD_00452c88_caseD_13; switch(s_Filename_too_long_00464084[cVar10 + 0xf]) { case '\0': local_18 = pcVar11; if (uVar9 != 0) goto switchD_00452c88_caseD_13; if (local_d != '+') { local_d = cVar10; } goto switchD_00452c88_caseD_18; case '\x01': local_18 = pcVar11; if (uVar9 != 0) goto switchD_00452c88_caseD_13; uVar12 = 1; goto switchD_00452c88_caseD_18; case '\x02': uVar3 = *in_stack_00000010; if (uVar9 < 2) { local_8 = uVar3; if ((int)uVar3 < 0) { bVar5 = true; local_8 = -uVar3; } uVar9 = 3; in_stack_00000010 = in_stack_00000010 + 1; } else { local_18 = pcVar11; if (uVar9 != 4) goto switchD_00452c88_caseD_13; uVar9 = 5; in_stack_00000010 = in_stack_00000010 + 1; local_c = uVar3; } goto switchD_00452c88_caseD_18; case '\x03': local_18 = pcVar11; if (uVar9 != 0) goto switchD_00452c88_caseD_13; bVar5 = true; goto switchD_00452c88_caseD_18; case '\x04': local_18 = pcVar11; if (3 < uVar9) goto switchD_00452c88_caseD_13; uVar9 = 4; local_c = local_c + 1; goto switchD_00452c88_caseD_18; case '\x05': goto switchD_00452c88_caseD_5; case '\x06': bVar6 = true; uVar9 = 5; goto switchD_00452c88_caseD_18; case '\a': bVar6 = false; uVar9 = 5; goto switchD_00452c88_caseD_18; case '\b': bVar7 = true; bVar6 = false; uVar9 = 5; goto switchD_00452c88_caseD_18; case '\t': if (uVar9 == 0) { if (!bVar5) { bVar13 = true; uVar9 = 1; } } else { switchD_00452c88_caseD_5: cVar10 = cVar10 + -0x30; if (uVar9 < 3) { uVar9 = 2; if (local_8 == 0xffffffff) { local_8 = (uint)cVar10; } else { local_8 = local_8 * 10 + (int)cVar10; } } else { local_18 = pcVar11; if (uVar9 != 4) goto switchD_00452c88_caseD_13; local_c = local_c * 10 + (int)cVar10; } } goto switchD_00452c88_caseD_18; case '\n': goto switchD_00452c88_caseD_a; case '\v': local_24 = 8; break; case '\f': local_24 = 10; break; case '\r': local_24 = 0x10; local_19 = cVar10 + -0x17; break; case '\x0e': local_20 = (char *)*in_stack_00000010; FUN_00452bc8(); local_54 = 0; local_20 = local_5c; in_stack_00000010 = in_stack_00000010 + 1; goto LAB_00453018; case '\x0f': local_20 = local_5c + 1; thunk_FUN_00454090(); in_stack_00000010 = (uint *)thunk_FUN_00454090(); goto LAB_00453018; case '\x10': local_5c[0] = (char)*in_stack_00000010; local_5c[1] = 0; local_20 = local_5c; local_2c = 1; in_stack_00000010 = in_stack_00000010 + 1; goto LAB_00453089; case '\x11': puVar1 = in_stack_00000010 + 1; local_20 = (char *)*in_stack_00000010; if (local_20 == (char *)0x0) { local_20 = &DAT_004640ac; } local_2c = FUN_0044ffac(); in_stack_00000010 = puVar1; if (((int)local_c < (int)local_2c) && (-1 < (int)local_c)) { local_2c = local_c; } goto LAB_00453089; case '\x12': puVar1 = in_stack_00000010 + 1; local_20 = (char *)*in_stack_00000010; in_stack_00000010 = puVar1; if (bVar6) { local_20[0] = '\0'; local_20[1] = '\0'; local_20[2] = '\0'; local_20[3] = '\0'; } else if (bVar7) { local_20[0] = '\0'; local_20[1] = '\0'; } else { local_20[0] = '\0'; local_20[1] = '\0'; local_20[2] = '\0'; local_20[3] = '\0'; } goto LAB_00452c22; case '\x13': case '\x14': case '\x15': goto switchD_00452c88_caseD_13; case '\x16': uVar9 = 5; goto switchD_00452c88_caseD_18; case '\x17': uVar9 = 5; default: goto switchD_00452c88_caseD_18; } local_d = '\0'; bVar8 = false; goto LAB_00452e68; } in_stack_0000000c = pcVar11 + 2; } FUN_00452ba0(); goto LAB_00452c22; } goto LAB_00453233; switchD_00452c88_caseD_a: local_24 = 10; bVar8 = true; LAB_00452e68: if (bVar6) { uVar9 = *in_stack_00000010; } else if (bVar7) { if (bVar8) { uVar9 = (uint)(short)(ushort)*in_stack_00000010; } else { uVar9 = (uint)(ushort)*in_stack_00000010; } } else { uVar9 = *in_stack_00000010; } in_stack_00000010 = in_stack_00000010 + 1; local_20 = local_5c + 1; if (uVar9 == 0) { if (local_c == 0) { local_5c[1] = 0; goto LAB_00452eda; } } else { uVar12 = uVar12 | 4; } FUN_004540a8(); LAB_00452eda: if ((int)local_c < 0) { LAB_00453018: if ((bVar13) && (0 < (int)local_8)) { local_2c = FUN_0044ffac(); if (*local_20 == '-') { local_2c = local_2c + -1; } if ((int)local_2c < (int)local_8) { local_14 = local_8 - local_2c; } } if ((*local_20 == '-') || (local_d != '\0')) { if (*local_20 != '-') { local_20 = local_20 + -1; *local_20 = local_d; } if ((0 < local_14) && ((int)local_c < 0)) { local_14 = local_14 + -1; } } local_2c = FUN_0044ffac(); } else { local_28 = FUN_0044ffac(); local_2c = local_28; if (*local_20 == '-') { local_28 = local_28 - 1; } else if (local_d != '\0') { local_2c = local_28 + 1; local_20 = local_20 + -1; *local_20 = local_d; } if ((int)local_28 < (int)local_c) { local_14 = local_c - local_28; } } LAB_00453089: if (uVar12 == 5) { if (cVar10 == 'o') { if (local_14 < 1) { local_14 = 1; } } else if ((cVar10 == 'x') || (cVar10 == 'X')) { bVar4 = true; local_8 = local_8 - 2; local_14 = local_14 + -2; if (local_14 < 0) { local_14 = 0; } } } local_2c = local_2c + local_14; if ((!bVar5) && ((int)local_2c < (int)local_8)) { do { FUN_00452ba0(); local_8 = local_8 - 1; } while ((int)local_2c < (int)local_8); } if (bVar4) { FUN_00452ba0(); FUN_00452ba0(); } if (0 < local_14) { local_2c = local_2c - local_14; local_8 = local_8 - local_14; cVar10 = *local_20; if (((cVar10 == '-') || (cVar10 == ' ')) || (cVar10 == '+')) { local_20 = local_20 + 1; FUN_00452ba0(); local_2c = local_2c + -1; local_8 = local_8 - 1; } while (iVar2 = local_14 + -1, bVar13 = local_14 != 0, local_14 = iVar2, bVar13) { FUN_00452ba0(); } } if (local_2c != 0) { local_8 = local_8 - local_2c; while (local_2c != 0) { local_20 = local_20 + 1; local_2c = local_2c + -1; FUN_00452ba0(); } local_2c = -1; } while (uVar12 = local_8 - 1, bVar13 = 0 < (int)local_8, local_8 = uVar12, bVar13) { FUN_00452ba0(); } goto LAB_00452c22; switchD_00452c88_caseD_13: while (pcVar11 = local_18 + 1, cVar10 = *local_18, local_18 = pcVar11, cVar10 != '\0') { FUN_00452ba0(); } LAB_00453233: FUN_00452b70(); return 0; } int FUN_004532b8(undefined4 param_1,undefined4 param_2,LPCVOID *param_3) { LPCVOID *ppvVar1; undefined4 extraout_EDX; LPCVOID *ppvVar2; int iVar3; int iVar4; iVar4 = 0; ppvVar2 = (LPCVOID *)&DAT_004637b8; iVar3 = DAT_00463b78; while (iVar3 != 0) { if ((*(byte *)((int)ppvVar2 + 0x12) & 3) != 0) { ppvVar1 = ppvVar2; FUN_00451f94(iVar3,param_2,(DWORD)param_3,ppvVar2); param_3 = ppvVar1; iVar4 = iVar4 + 1; param_2 = extraout_EDX; } ppvVar2 = ppvVar2 + 6; iVar3 = iVar3 + -1; } return iVar4; } uint FUN_00453304(void) { uint uVar1; DWORD DVar2; DWORD DVar3; DWORD DVar4; uint in_stack_00000004; if (in_stack_00000004 < DAT_00463b78) { if (((&DAT_00463b7c)[in_stack_00000004] & 0x200) == 0) { if (((&DAT_00463b7c)[in_stack_00000004] & 0x2000) == 0) { DVar2 = FUN_00453ce0(); if (DVar2 == 0xffffffff) { uVar1 = 0xffffffff; } else { DVar3 = FUN_00453ce0(); if (DVar3 == 0xffffffff) { uVar1 = 0xffffffff; } else { DVar4 = FUN_00453ce0(); if (DVar4 == 0xffffffff) { uVar1 = 0xffffffff; } else { uVar1 = (uint)((int)DVar3 <= (int)DVar2); } } } } else { uVar1 = 0; } } else { uVar1 = 1; } } else { uVar1 = FUN_00453ac0(); } return uVar1; } char * FUN_00453390(void) { char *pcVar1; uint len; char *src; char *dest; char *in_stack_00000004; int in_stack_00000008; src = in_stack_00000004; dest = in_stack_00000004; while( true ) { pcVar1 = FUN_0044fe2c(); if (pcVar1 == (char *)0x0) { pcVar1 = in_stack_00000004 + in_stack_00000008; } len = (int)pcVar1 - (int)src; if (dest != src) { Memcpy(dest,src,len); } if (in_stack_00000004 + in_stack_00000008 + -1 <= pcVar1) break; src = pcVar1 + 1; dest = dest + len; } return dest + (len - (int)in_stack_00000004); } char * FUN_004533fc(undefined4 param_1,undefined4 param_2,DWORD param_3,uint *param_4,LPVOID param_5 ,char *param_6) { uint *puVar1; char *pcVar2; uint uVar3; DWORD DVar4; char *pcVar5; DWORD DVar6; char *pcVar7; DWORD extraout_ECX; DWORD extraout_ECX_00; undefined4 extraout_EDX; uint *extraout_EDX_00; uint *puVar8; if (param_4 < DAT_00463b78) { if (param_6 + 1 < (char *)0x2) { pcVar2 = (char *)0x0; } else if ((*(byte *)((int)&DAT_00463b7c + (int)param_4 * 4 + 1) & 0x40) == 0) { pcVar2 = (char *)FUN_00453b6c(param_4,param_6,param_3,(uint)param_4,param_5,(DWORD)param_6); } else if ((*(byte *)((int)&DAT_00463b7c + (int)param_4 * 4 + 1) & 2) == 0) { pcVar2 = (char *)0x0; puVar1 = &DAT_00463b7c + (int)param_4; puVar8 = param_4; if (param_6 != (char *)0x0) { while( true ) { uVar3 = (int)param_6 - (int)pcVar2; DVar4 = FUN_00453b6c(param_4,puVar8,param_3,(uint)param_4,param_5,uVar3); if (DVar4 == 0xffffffff) { return (char *)0xffffffff; } if (DVar4 == 0) { return pcVar2; } pcVar5 = FUN_0044fe2c(); if (pcVar5 != (char *)0x0) { *puVar1 = *puVar1 | 0x200; DVar4 = (int)pcVar5 - (int)param_5; if (DVar4 == 0) { return pcVar2; } } if ((*(char *)((int)param_5 + (DVar4 - 1)) == '\r') && (DVar6 = FUN_00453b6c(param_4,extraout_EDX,extraout_ECX,(uint)param_4, (LPVOID)((DVar4 - 1) + (int)param_5),1), DVar6 == 0xffffffff)) break; pcVar7 = FUN_00453390(); pcVar2 = pcVar2 + (int)pcVar7; puVar8 = extraout_EDX_00; if ((DVar4 < uVar3) && (puVar8 = puVar1, (*(byte *)((int)&DAT_00463b7c + (int)param_4 * 4 + 1) & 0x20) != 0)) { return pcVar2; } if (pcVar5 != (char *)0x0) { return pcVar2; } if (pcVar7 != (char *)0x0) { return pcVar2; } param_3 = extraout_ECX_00; if (param_6 <= pcVar2) { return pcVar2; } } pcVar2 = (char *)0xffffffff; } } else { pcVar2 = (char *)0x0; } } else { pcVar2 = (char *)FUN_00453ac0(); } return pcVar2; } // WARNING: Type propagation algorithm not settling int FUN_0045352c(void) { int iVar1; char *pcVar2; char *len; char *len_00; undefined1 *puVar3; void *src; void *in_stack_00000004; int *in_stack_00000008; undefined1 *in_stack_0000000c; int in_stack_00000010; int local_14; iVar1 = *in_stack_00000008; *in_stack_00000008 = 0; local_14 = 0; puVar3 = in_stack_0000000c; src = in_stack_00000004; while( true ) { len_00 = (char *)((int)in_stack_00000004 + (iVar1 - (int)src)); pcVar2 = FUN_0044fe2c(); if (pcVar2 != (char *)0x0) { len_00 = pcVar2 + -(int)src; } len = in_stack_0000000c + (in_stack_00000010 - (int)puVar3); if (len < len_00) break; Memcpy(puVar3,src,(uint)len_00); puVar3 = puVar3 + (int)len_00; if ((pcVar2 == (char *)0x0) || ((int)(in_stack_0000000c + (in_stack_00000010 - (int)puVar3)) < 2)) { *in_stack_00000008 = (int)(len_00 + *in_stack_00000008); LAB_004535dc: return local_14 + (int)len_00; } *puVar3 = 0xd; puVar3[1] = 10; puVar3 = puVar3 + 2; local_14 = local_14 + (int)(len_00 + 2); src = (void *)((int)src + (int)(len_00 + 1)); *in_stack_00000008 = (int)(len_00 + 1 + *in_stack_00000008); } Memcpy(puVar3,src,(uint)len); *in_stack_00000008 = (int)(len + *in_stack_00000008); len_00 = len; goto LAB_004535dc; } DWORD FUN_004535e4(undefined4 param_1,undefined4 param_2,DWORD param_3,uint param_4,LPCVOID param_5, DWORD param_6) { LPCVOID pvVar1; DWORD DVar2; DWORD DVar3; DWORD extraout_ECX; DWORD extraout_ECX_00; undefined4 extraout_EDX; undefined4 extraout_EDX_00; undefined1 local_8c [128]; DWORD local_c; DWORD local_8; if (param_4 < DAT_00463b78) { if (param_6 + 1 < 2) { param_6 = 0; } else { if ((*(byte *)((int)&DAT_00463b7c + param_4 * 4 + 1) & 8) != 0) { FUN_00453ce0(); param_3 = extraout_ECX; param_2 = extraout_EDX; } pvVar1 = param_5; DVar2 = param_6; if ((*(byte *)((int)&DAT_00463b7c + param_4 * 4 + 1) & 0x40) == 0) { param_6 = FUN_00453bd0(param_4,param_2,param_3,param_4,param_5,param_6); } else { for (; DVar2 != 0; DVar2 = DVar2 - local_8) { local_8 = DVar2; DVar3 = FUN_0045352c(); local_c = FUN_00453bd0(param_4,extraout_EDX_00,extraout_ECX_00,param_4,local_8c,DVar3); if (DVar3 != local_c) { if (local_c == 0xffffffff) { return 0xffffffff; } return (int)pvVar1 + (local_c - (int)param_5); } pvVar1 = (LPCVOID)((int)pvVar1 + local_8); } } } } else { param_6 = FUN_00453ac0(); } return param_6; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address int ** FUN_004536c4(void) { code *pcVar1; DWORD DVar2; uint uVar3; uint uVar4; char cVar5; char *pcVar6; char *pcVar7; int **ppiVar8; bool bVar9; byte bVar10; int in_stack_00000004; int **in_stack_00000008; uint in_stack_0000000c; char local_10c [260]; CHAR local_8; char local_7; undefined1 local_6; undefined1 local_5; bVar10 = 0; if (in_stack_00000004 == 0) { DVar2 = GetCurrentDirectoryA(0x103,local_10c); if ((DVar2 == 0) || ((int)in_stack_0000000c < (int)DVar2)) { _DAT_004643e0 = 8; return (int **)0x0; } } else { cVar5 = (char)in_stack_00000004; if (DAT_0046ae2c == 2) { local_10c[0] = cVar5 + '@'; local_10c[1] = 0x3a; local_10c[2] = 0x5c; local_10c[3] = 0; bVar9 = (char *)0xfffffffc < local_10c; pcVar1 = (code *)swi(0x21); (*pcVar1)(CONCAT11(0x47,cVar5),CONCAT31((int3)((uint)(local_10c + 3) >> 8),cVar5)); if (bVar9) { return (int **)0x0; } } else { DVar2 = GetLogicalDrives(); if ((1 << (cVar5 - 1U & 0x1f) & DVar2) == 0) { return (int **)0x0; } local_8 = '='; local_7 = cVar5 + '@'; local_6 = 0x3a; local_5 = 0; DVar2 = GetEnvironmentVariableA(&local_8,local_10c,0x103); if (DVar2 == 0) { local_10c[0] = local_7; local_10c[1] = 0x3a; local_10c[2] = 0x5c; local_10c[3] = 0; } } } uVar3 = FUN_0044ffac(); if (uVar3 < in_stack_0000000c) { if ((in_stack_00000008 == (int **)0x0) && (in_stack_00000008 = TurboAlloc_(in_stack_0000000c), in_stack_00000008 == (int **)0x0)) { _DAT_004643e0 = 8; in_stack_00000008 = (int **)0x0; } else { uVar3 = 0xffffffff; pcVar6 = local_10c; do { pcVar7 = pcVar6; if (uVar3 == 0) break; uVar3 = uVar3 - 1; pcVar7 = pcVar6 + (uint)bVar10 * -2 + 1; cVar5 = *pcVar6; pcVar6 = pcVar7; } while (cVar5 != '\0'); uVar3 = ~uVar3; pcVar6 = pcVar7 + -uVar3; ppiVar8 = in_stack_00000008; for (uVar4 = uVar3 >> 2; uVar4 != 0; uVar4 = uVar4 - 1) { *ppiVar8 = *(int **)pcVar6; pcVar6 = pcVar6 + ((uint)bVar10 * -2 + 1) * 4; ppiVar8 = ppiVar8 + (uint)bVar10 * -2 + 1; } for (uVar3 = uVar3 & 3; uVar3 != 0; uVar3 = uVar3 - 1) { *(char *)ppiVar8 = *pcVar6; pcVar6 = pcVar6 + (uint)bVar10 * -2 + 1; ppiVar8 = (int **)((int)ppiVar8 + (uint)bVar10 * -2 + 1); } } } else { _DAT_004643e0 = 0x22; in_stack_00000008 = (int **)0x0; } return in_stack_00000008; } int FUN_00453824(void) { int iVar1; int *piVar2; undefined4 in_stack_00000004; undefined4 in_stack_00000008; iVar1 = 0; for (piVar2 = &DAT_00463b7c; (iVar1 < DAT_00463b78 && (*piVar2 != 0)); piVar2 = piVar2 + 1) { iVar1 = iVar1 + 1; } if (iVar1 == DAT_00463b78) { return -1; } (&DAT_00463b7c)[iVar1] = in_stack_00000008; (&DAT_0046ab50)[iVar1] = in_stack_00000004; return iVar1; } uint FUN_00453864(void) { int *piVar1; uint in_stack_00000004; uint in_stack_00000008; undefined4 in_stack_0000000c; if (in_stack_00000008 == 0xffffffff) { in_stack_00000008 = 0; for (piVar1 = &DAT_00463b7c; ((int)in_stack_00000008 < (int)DAT_00463b78 && (*piVar1 != 0)); piVar1 = piVar1 + 1) { in_stack_00000008 = in_stack_00000008 + 1; } } if ((in_stack_00000004 < DAT_00463b78) && (in_stack_00000008 < DAT_00463b78)) { if (((&DAT_00463b7c)[in_stack_00000004] != 0) && ((&DAT_00463b7c)[in_stack_00000008] == 0)) { (&DAT_00463b7c)[in_stack_00000008] = (&DAT_00463b7c)[in_stack_00000004]; (&DAT_0046ab50)[in_stack_00000008] = in_stack_0000000c; return in_stack_00000008; } return 0xffffffff; } return 0xffffffff; } void FUN_004538cc(void) { uint in_stack_00000004; if (in_stack_00000004 < DAT_00463b78) { (&DAT_00463b7c)[in_stack_00000004] = 0; } return; } int FUN_004538e8(void) { uint uVar1; int iVar2; byte bVar3; int *piVar4; uint *puVar5; byte *dest; int *in_stack_00000004; int local_8; iVar2 = DAT_00463b78; for (piVar4 = &DAT_00463b78 + DAT_00463b78; (iVar2 != 0 && (*piVar4 == 0)); piVar4 = piVar4 + -1) { iVar2 = iVar2 + -1; } if (in_stack_00000004 == (int *)0x0) { if (iVar2 == 0) { iVar2 = 0; } else { iVar2 = iVar2 * 5 + 4; } } else { *in_stack_00000004 = iVar2; dest = (byte *)(in_stack_00000004 + 1); local_8 = 0; puVar5 = &DAT_00463b7c; if (0 < iVar2) { do { bVar3 = 1; uVar1 = *puVar5; if ((uVar1 & 0x800) != 0) { bVar3 = 0x21; } if ((uVar1 & 0x8000) == 0) { bVar3 = bVar3 | 0x80; } if ((uVar1 & 0x2000) != 0) { bVar3 = bVar3 | 0x40; } *dest = bVar3; dest = dest + 1; local_8 = local_8 + 1; puVar5 = puVar5 + 1; } while (local_8 < iVar2); } Memcpy(dest,&DAT_0046ab50,iVar2 << 2); iVar2 = 0; } return iVar2; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void FUN_0045397c(void) { uint uVar1; bool bVar2; UINT UVar3; uint uVar4; undefined4 *puVar5; undefined3 extraout_var; int iVar6; uint uVar7; uint *puVar8; uint *puVar9; _STARTUPINFOA local_50; UVar3 = SetHandleCount(DAT_00463b78); if (UVar3 < DAT_00463b78) { DAT_00463b78 = UVar3; } PTR_LAB_00464118 = FUN_004538e8; bVar2 = false; GetStartupInfoA(&local_50); if (local_50.cbReserved2 != 0) { uVar7 = *(uint *)local_50.lpReserved2; puVar8 = (uint *)((int)local_50.lpReserved2 + 4); if (uVar7 * 5 + 4 == (uint)local_50.cbReserved2) { bVar2 = true; iVar6 = 0; puVar9 = &DAT_00463b7c; if (0 < (int)uVar7) { do { uVar1 = *puVar8; puVar8 = (uint *)((int)puVar8 + 1); uVar4 = 0; if ((uVar1 & 0x20) != 0) { uVar4 = 0x800; } if ((uVar1 & 0x40) != 0) { uVar4 = uVar4 | 0x2000; } if ((uVar1 & 0x80) == 0) { uVar4 = uVar4 | 0x8000; } else { uVar4 = uVar4 | 0x4000; } *puVar9 = *puVar9 & 3 | uVar4; iVar6 = iVar6 + 1; puVar9 = puVar9 + 1; } while (iVar6 < (int)uVar7); } puVar5 = &DAT_00463b7c + uVar7; for (; uVar7 < DAT_00463b78; uVar7 = uVar7 + 1) { *puVar5 = 0; puVar5 = puVar5 + 1; } FUN_0044fe70(); } } if (!bVar2) { DAT_0046ab50 = GetStdHandle(0xfffffff6); _DAT_0046ab54 = GetStdHandle(0xfffffff5); _DAT_0046ab58 = GetStdHandle(0xfffffff4); iVar6 = 0; puVar8 = &DAT_00463b7c; do { bVar2 = FUN_00453cb0(); if (CONCAT31(extraout_var,bVar2) == 0) { *puVar8 = *puVar8 & 0xffffdfff; } else { *puVar8 = *puVar8 | 0x2000; } iVar6 = iVar6 + 1; puVar8 = puVar8 + 1; } while (iVar6 < 3); } return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address undefined4 FUN_00453ac0(void) { int in_stack_00000004; if (in_stack_00000004 < 0) { if (-in_stack_00000004 < _DAT_00463cf4) { _DAT_004643e0 = -in_stack_00000004; _DAT_0046ac0c = 0xffffffff; return 0xffffffff; } } else if (in_stack_00000004 < 299) goto LAB_00453ad6; in_stack_00000004 = 1; LAB_00453ad6: _DAT_0046ac0c = in_stack_00000004; _DAT_004643e0 = (int)(char)(&DAT_00464120)[in_stack_00000004]; return 0xffffffff; } void FUN_00453b24(void) { GetLastError(); FUN_00453ac0(); return; } undefined4 FUN_00453b38(void) { BOOL BVar1; DWORD DVar2; undefined4 uVar3; LPCSTR in_stack_00000004; BVar1 = CreateDirectoryA(in_stack_00000004,(LPSECURITY_ATTRIBUTES)0x0); if (BVar1 == 1) { return 0; } DVar2 = GetLastError(); if (DVar2 == 0xb7) { uVar3 = FUN_00453ac0(); return uVar3; } uVar3 = FUN_00453b24(); return uVar3; } DWORD FUN_00453b6c(undefined4 param_1,undefined4 param_2,DWORD param_3,uint param_4,LPVOID param_5, DWORD param_6) { BOOL BVar1; DWORD local_8; local_8 = param_3; if (param_4 < DAT_00463b78) { BVar1 = ReadFile((HANDLE)(&DAT_0046ab50)[param_4],param_5,param_6,&local_8,(LPOVERLAPPED)0x0); if (BVar1 != 1) { local_8 = FUN_00453b24(); } } else { local_8 = FUN_00453ac0(); } return local_8; } void FUN_00453bb4(undefined4 param_1,undefined4 param_2,DWORD param_3,undefined4 param_4, LPVOID param_5,DWORD param_6) { FUN_00453b6c(param_4,param_2,param_3,param_4,param_5,param_6); return; } DWORD FUN_00453bd0(undefined4 param_1,undefined4 param_2,DWORD param_3,uint param_4,LPCVOID param_5, DWORD param_6) { BOOL BVar1; DWORD local_8; local_8 = param_3; if (param_4 < DAT_00463b78) { BVar1 = WriteFile((HANDLE)(&DAT_0046ab50)[param_4],param_5,param_6,&local_8,(LPOVERLAPPED)0x0); if (BVar1 != 1) { local_8 = FUN_00453b24(); } } else { local_8 = FUN_00453ac0(); } return local_8; } void FUN_00453c18(undefined4 param_1,undefined4 param_2,DWORD param_3,undefined4 param_4, LPCVOID param_5,DWORD param_6) { FUN_00453bd0(param_4,param_2,param_3,param_4,param_5,param_6); return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address undefined4 FUN_00453c34(void) { DWORD DVar1; undefined4 uVar2; LPCSTR in_stack_00000004; byte in_stack_00000008; DVar1 = GetFileAttributesA(in_stack_00000004); if (DVar1 == 0xffffffff) { uVar2 = FUN_00453b24(); return uVar2; } if (((in_stack_00000008 & 2) != 0) && ((DVar1 & 1) != 0)) { _DAT_004643e0 = 5; return 0xffffffff; } return 0; } undefined4 FUN_00453c70(void) { undefined4 uVar1; BOOL BVar2; uint in_stack_00000004; if (DAT_00463b78 <= in_stack_00000004) { uVar1 = FUN_00453ac0(); return uVar1; } BVar2 = CloseHandle((HANDLE)(&DAT_0046ab50)[in_stack_00000004]); if (BVar2 == 1) { (&DAT_00463b7c)[in_stack_00000004] = 0; return 0; } uVar1 = FUN_00453b24(); return uVar1; } bool FUN_00453cb0(void) { DWORD DVar1; uint in_stack_00000004; if (DAT_00463b78 <= in_stack_00000004) { return false; } DVar1 = GetFileType((HANDLE)(&DAT_0046ab50)[in_stack_00000004]); return DVar1 == 2; } DWORD FUN_00453ce0(void) { DWORD DVar1; uint in_stack_00000004; LONG in_stack_00000008; int in_stack_0000000c; if (in_stack_00000004 < DAT_00463b78) { if (in_stack_0000000c == 0) { DVar1 = 0; } else if (in_stack_0000000c == 1) { DVar1 = 1; } else { if (in_stack_0000000c != 2) { DVar1 = FUN_00453ac0(); return DVar1; } DVar1 = 2; } (&DAT_00463b7c)[in_stack_00000004] = (&DAT_00463b7c)[in_stack_00000004] & 0xfffffdff; DVar1 = SetFilePointer((HANDLE)(&DAT_0046ab50)[in_stack_00000004],in_stack_00000008,(PLONG)0x0, DVar1); if (DVar1 == 0xffffffff) { FUN_00453b24(); } } else { DVar1 = FUN_00453ac0(); } return DVar1; } // WARNING: Heritage AFTER dead removal. Example location: EAX : 0x00453f22 // WARNING: Globals starting with '_' overlap smaller symbols at the same address // WARNING: Restarted to delay deadcode elimination for space: register int FUN_00453d58(void) { bool bVar1; uint uVar2; int iVar3; HANDLE hObject; undefined4 extraout_EDX; DWORD dwFlagsAndAttributes; DWORD dwCreationDisposition; LPCSTR in_stack_00000004; uint in_stack_00000008; uint in_stack_0000000c; HANDLE pvVar4; _SECURITY_ATTRIBUTES local_18; DWORD local_c; DWORD local_8; uVar2 = in_stack_00000008 & 0x700; if (uVar2 < 0x501) { if (uVar2 == 0x500) { LAB_00453dbb: dwCreationDisposition = 1; goto LAB_00453ddc; } if (uVar2 == 0x100) { dwCreationDisposition = 4; goto LAB_00453ddc; } if (uVar2 != 0x200) { if (uVar2 == 0x300) { dwCreationDisposition = 2; goto LAB_00453ddc; } goto LAB_00453dd7; } } else if (uVar2 != 0x600) { if (uVar2 != 0x700) { LAB_00453dd7: dwCreationDisposition = 3; goto LAB_00453ddc; } goto LAB_00453dbb; } dwCreationDisposition = 5; LAB_00453ddc: if ((in_stack_00000008 & 0x100) == 0) { dwFlagsAndAttributes = GetFileAttributesA(in_stack_00000004); if (dwFlagsAndAttributes == 0xffffffff) { dwFlagsAndAttributes = 0; } } else if ((in_stack_0000000c & _DAT_0046411c & 0x80) == 0) { dwFlagsAndAttributes = 1; } else { dwFlagsAndAttributes = 0x80; } uVar2 = in_stack_00000008 & 3; if (uVar2 == 0) { local_8 = 0x80000000; } else if (uVar2 == 1) { local_8 = 0x40000000; } else { if (uVar2 != 2) { iVar3 = FUN_00453ac0(); return iVar3; } local_8 = 0xc0000000; } uVar2 = in_stack_00000008 & 0x70; if (uVar2 == 0x10) { local_c = 0; } else if (uVar2 == 0x20) { local_c = 1; } else if (uVar2 == 0x30) { local_c = 2; } else { local_c = 3; } local_18.nLength = 0xc; local_18.lpSecurityDescriptor = (LPVOID)0x0; local_18.bInheritHandle = (BOOL)((in_stack_00000008 & 0x80) == 0); hObject = CreateFileA(in_stack_00000004,local_8,local_c,&local_18,dwCreationDisposition, dwFlagsAndAttributes,(HANDLE)0x0); if (hObject == (HANDLE)0xffffffff) { GetLastError(); iVar3 = FUN_00453ac0(); } else { pvVar4 = hObject; bVar1 = FUN_00453cb0(); iVar3 = FUN_00453824(bVar1,extraout_EDX,pvVar4); if (iVar3 == -1) { FUN_00453ac0(); CloseHandle(hObject); } } return iVar3; } undefined4 FUN_00453f48(void) { BOOL BVar1; undefined4 uVar2; LPCSTR in_stack_00000004; BVar1 = DeleteFileA(in_stack_00000004); if (BVar1 == 1) { uVar2 = 0; } else { uVar2 = FUN_00453b24(); } return uVar2; } undefined2 FUN_00453f90(void) { undefined2 in_FPUStatusWord; return in_FPUStatusWord; } void FUN_00453fa4(void) { return; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void thunk_FUN_00454090(void) { // WARNING: Could not recover jumptable at 0x00453fcc. Too many branches // WARNING: Treating indirect jump as call (*_DAT_00464358)(); return; } void thunk_FUN_00454090(void) { // WARNING: Could not recover jumptable at 0x00453fd2. Too many branches // WARNING: Treating indirect jump as call (*(code *)PTR_FUN_0046435c)(); return; } void FUN_00453fe4(void) { FUN_00453fa4(); return; } undefined4 FUN_00453ffc(void) { longdouble in_ST0; undefined4 local_10; local_10 = (undefined4)(longlong)ROUND(in_ST0); return local_10; } void FUN_00454080(void) { char *in_stack_00000004; Atoi(in_stack_00000004); return; } void FUN_00454090(void) { FUN_00454860(); return; } char * FUN_004540a8(void) { char cVar1; char *pcVar2; char *pcVar3; uint in_stack_00000004; char *in_stack_00000008; uint in_stack_0000000c; char in_stack_00000010; char in_stack_00000014; char local_28 [36]; pcVar3 = in_stack_00000008; if ((1 < (int)in_stack_0000000c) && ((int)in_stack_0000000c < 0x25)) { if (((int)in_stack_00000004 < 0) && (in_stack_00000010 != '\0')) { *in_stack_00000008 = '-'; pcVar3 = in_stack_00000008 + 1; in_stack_00000004 = -in_stack_00000004; } pcVar2 = local_28; do { *pcVar2 = (char)(in_stack_00000004 % in_stack_0000000c); pcVar2 = pcVar2 + 1; in_stack_00000004 = in_stack_00000004 / in_stack_0000000c; } while (in_stack_00000004 != 0); while (pcVar2 != local_28) { pcVar2 = pcVar2 + -1; cVar1 = *pcVar2; if (cVar1 < '\n') { *pcVar3 = cVar1 + '0'; pcVar3 = pcVar3 + 1; } else { *pcVar3 = cVar1 + in_stack_00000014 + -10; pcVar3 = pcVar3 + 1; } } } *pcVar3 = '\0'; return in_stack_00000008; } void FUN_0045411c(void) { FUN_004540a8(); return; } void FUN_00454168(void) { FUN_004540a8(); return; } void FUN_00454188(void) { FUN_004540a8(); return; } void FUN_0045420c(void) { undefined *in_stack_00000004; undefined *in_stack_00000008; PTR_LAB_004643c4 = in_stack_00000004; PTR_LAB_004643c8 = in_stack_00000008; return; } void FUN_00454224(void) { undefined4 in_stack_00000004; _Random_p = in_stack_00000004; _Random_q = 0; return; } undefined4 FUN_004542a0(void) { int iVar1; uint uVar2; uint uVar3; int in_stack_00000004; int local_c; int local_8; uVar2 = in_stack_00000004 + 0xffffU & 0xffff0000; uVar3 = DAT_004643d8 - DAT_004643d4; if (uVar3 != 0) { if (uVar2 < uVar3) { uVar3 = uVar2; } iVar1 = FUN_00454688(); if (iVar1 == 0) { return 0xffffffff; } FUN_00454470(); DAT_004643d4 = DAT_004643d4 + uVar3; } if (uVar3 < uVar2) { iVar1 = FUN_0045461c(); if (iVar1 == 0) { return 0xffffffff; } if (local_8 == DAT_004643d8) { uVar2 = uVar2 - uVar3; } iVar1 = FUN_00454688(); if (iVar1 == 0) { FUN_0045471c(); return 0xffffffff; } FUN_00454470(); DAT_004643d4 = uVar2 + local_8; DAT_004643d8 = local_8 + local_c; } return 0; } void __stdcall TurboFree_(int *param_1) { uint uVar1; int *piVar2; int iVar3; undefined4 *puVar4; uint uVar5; int *piVar6; bool bVar7; if ((param_1 != (int *)0x0) && ((param_1[-1] & 1U) != 0)) { uVar5 = param_1[-1] & 0xfffffffe; uVar1 = param_1[-2]; bVar7 = (uVar1 & 1) == 0; if (bVar7) { param_1 = (int *)((int)param_1 - uVar1); uVar5 = uVar5 + uVar1; } piVar6 = (int *)(uVar5 + (int)param_1); uVar1 = piVar6[-1]; if ((uVar1 & 1) == 0) { piVar2 = (int *)piVar6[1]; iVar3 = *piVar6; *piVar2 = iVar3; *(int *)(iVar3 + 4) = piVar6[1]; if (piVar6 == DAT_0046ae28) { DAT_0046ae28 = piVar2; } uVar5 = uVar5 + uVar1; } *(uint *)((int)param_1 + (uVar5 - 8)) = uVar5; param_1[-1] = uVar5; if (!bVar7) { puVar4 = *(undefined4 **)(DAT_0046ae24 + 4); *(int **)(DAT_0046ae24 + 4) = param_1; param_1[1] = (int)puVar4; *param_1 = DAT_0046ae24; *puVar4 = param_1; } } return; } undefined4 FUN_00454470(void) { undefined4 uVar1; int *piVar2; int iVar3; undefined4 *puVar4; undefined4 *in_stack_00000004; uint in_stack_00000008; if (in_stack_00000008 < 0x10) { uVar1 = 0xffffffff; } else { in_stack_00000008 = in_stack_00000008 & 0xfffffffc; iVar3 = 0; for (piVar2 = &DAT_0046ac10; (iVar3 < DAT_0046ae10 && ((undefined4 *)(*piVar2 + piVar2[1]) != in_stack_00000004)); piVar2 = piVar2 + 2) { iVar3 = iVar3 + 1; } if (iVar3 == DAT_0046ae10) { if (DAT_0046ae10 == 0x40) { return 0xffffffff; } (&DAT_0046ac10)[DAT_0046ae10 * 2] = in_stack_00000004; (&DAT_0046ac14)[DAT_0046ae10 * 2] = in_stack_00000008; DAT_0046ae10 = DAT_0046ae10 + 1; in_stack_00000008 = in_stack_00000008 - 8; puVar4 = in_stack_00000004 + 2; *in_stack_00000004 = 1; } else { (&DAT_0046ac14)[iVar3 * 2] = (&DAT_0046ac14)[iVar3 * 2] + in_stack_00000008; puVar4 = in_stack_00000004; } puVar4[-1] = in_stack_00000008 | 1; *(uint *)((int)puVar4 + (in_stack_00000008 - 8)) = in_stack_00000008 | 1; *(undefined4 *)((int)puVar4 + (in_stack_00000008 - 4)) = 1; TurboFree_(puVar4); uVar1 = 0; } return uVar1; } void * __stdcall TurboAlloc_(uint len) { uint uVar1; int *piVar2; int *piVar3; int iVar4; int *piVar5; int iVar6; uint uVar7; uint uVar8; if (len < 8) { uVar8 = 0x10; } else { uVar8 = (len + 3 & 0xfffffffc) + 8; } if ((0xf < (int)uVar8) && (len != 0)) { iVar6 = 0; piVar3 = DAT_0046ae28; do { do { uVar1 = piVar3[-1]; if (uVar8 <= uVar1) { iVar6 = *piVar3; piVar2 = (int *)piVar3[1]; uVar7 = uVar1 - uVar8; if (0xf < uVar7) { piVar5 = (int *)(uVar8 + (int)piVar3); *(int **)(iVar6 + 4) = piVar5; DAT_0046ae28 = piVar5; *piVar2 = (int)piVar5; piVar5[1] = (int)piVar2; *piVar5 = iVar6; piVar5[-2] = uVar8 | 1; piVar3[-1] = uVar8 | 1; *(uint *)((int)piVar5 + (uVar7 - 8)) = uVar7; piVar5[-1] = uVar7; return piVar3; } *(int **)(iVar6 + 4) = piVar2; *piVar2 = iVar6; if (piVar3 == DAT_0046ae28) { DAT_0046ae28 = piVar2; } *(uint *)((int)piVar3 + (uVar1 - 8)) = uVar1 | 1; piVar3[-1] = uVar1 | 1; return piVar3; } piVar2 = piVar3 + 1; piVar3 = (int *)*piVar2; } while ((int *)*piVar2 != DAT_0046ae28); if (iVar6 == 2) { return (void *)0x0; } iVar6 = iVar6 + 1; iVar4 = FUN_004542a0(); piVar3 = DAT_0046ae28; } while (iVar4 == 0); } return (void *)0x0; } void FUN_004545fc(void) { undefined4 in_stack_00000004; TurboFree_(in_stack_00000004); return; } void FUN_0045460c(void) { FUN_004545fc(); return; } undefined4 FUN_0045461c(void) { LPVOID pvVar1; uint dwSize; int in_stack_00000004; undefined4 *in_stack_00000008; uint *in_stack_0000000c; if (DAT_004643dc == 0) { if ((DAT_0046ae2c == 1) || (DAT_0046ae2c == 2)) { DAT_004643dc = 0x100000; } else { DAT_004643dc = 0x400000; } } dwSize = (in_stack_00000004 + DAT_004643dc) - 1U & ~(DAT_004643dc - 1U); pvVar1 = VirtualAlloc((LPVOID)0x0,dwSize,0x2000,1); *in_stack_00000008 = pvVar1; if (pvVar1 == (LPVOID)0x0) { return 0; } *in_stack_0000000c = dwSize; return 1; } undefined4 FUN_00454688(void) { LPVOID pvVar1; LPVOID in_stack_00000004; int in_stack_00000008; while( true ) { if (in_stack_00000008 == 0) { return 1; } pvVar1 = VirtualAlloc(in_stack_00000004,0x1000,0x1000,4); if (pvVar1 == (LPVOID)0x0) break; in_stack_00000004 = (LPVOID)((int)in_stack_00000004 + 0x1000); in_stack_00000008 = in_stack_00000008 + -0x1000; } FUN_004546dc(); return 0; } undefined4 FUN_004546dc(void) { BOOL BVar1; LPVOID in_stack_00000004; int in_stack_00000008; while( true ) { if (in_stack_00000008 == 0) { return 1; } BVar1 = VirtualFree(in_stack_00000004,0x1000,0x4000); if (BVar1 != 1) break; in_stack_00000004 = (LPVOID)((int)in_stack_00000004 + 0x1000); in_stack_00000008 = in_stack_00000008 + -0x1000; } return 0; } undefined4 FUN_0045471c(void) { BOOL BVar1; LPVOID in_stack_00000004; BVar1 = VirtualFree(in_stack_00000004,0,0x8000); if (BVar1 != 1) { return 0; } return 1; } undefined4 FUN_00454758(void) { DWORD DVar1; undefined4 uVar2; WNDENUMPROC lpfn; int *lParam; int local_4; lParam = &local_4; local_4 = 0; DVar1 = GetVersion(); if ((DVar1 & 0x80000000) == 0) { return 0x2000; } lpfn = (WNDENUMPROC)&lpfn_00454744; DVar1 = GetCurrentThreadId(); EnumThreadWindows(DVar1,lpfn,(LPARAM)lParam); uVar2 = 0x2000; if (local_4 == 0) { uVar2 = 0x1000; } return uVar2; } void FUN_004547a0(void) { char *pcVar1; uint uVar2; HANDLE hFile; DWORD nNumberOfBytesToWrite; LPCSTR lpCaption; LPCSTR in_stack_00000004; DWORD *lpNumberOfBytesWritten; LPOVERLAPPED lpOverlapped; CHAR local_58 [80]; DWORD local_8; if (DAT_00460069 != '\0') { GetModuleFileNameA((HMODULE)0x0,local_58,0x50); pcVar1 = FUN_004500dc(); if ((pcVar1 == (char *)0x0) && (pcVar1 = FUN_004500dc(), pcVar1 == (char *)0x0)) { lpCaption = local_58; } else { lpCaption = pcVar1 + 1; } uVar2 = FUN_00454758(); MessageBoxA((HWND)0x0,in_stack_00000004,lpCaption,uVar2 | 0x10); return; } hFile = GetStdHandle(0xfffffff4); WriteFile(hFile,&lpBuffer_004643e4,2,&local_8,(LPOVERLAPPED)0x0); lpOverlapped = (LPOVERLAPPED)0x0; lpNumberOfBytesWritten = &local_8; nNumberOfBytesToWrite = FUN_0044ffac(); WriteFile(hFile,in_stack_00000004,nNumberOfBytesToWrite,lpNumberOfBytesWritten,lpOverlapped); WriteFile(hFile,(LPCVOID)((int)&lpBuffer_004643e4 + 3),2,&local_8,(LPOVERLAPPED)0x0); return; } void FUN_00454850(void) { FUN_004547a0(); return; } void FUN_00454860(void) { undefined4 uVar1; undefined4 extraout_EDX; undefined4 in_stack_00000004; uVar1 = FUN_004547a0(); FUN_00454980(uVar1,extraout_EDX,in_stack_00000004,1); return; } void FUN_004548bc(void) { undefined4 uVar1; undefined4 extraout_EDX; char *pcVar2; pcVar2 = s_Abnormal_program_termination_00464404; uVar1 = FUN_004547a0(); FUN_00454980(uVar1,extraout_EDX,pcVar2,3); return; } void FUN_004548d0(void) { FUN_00454cf8(); FUN_004548bc(); return; } undefined4 __cdecl FUN_004548e0(undefined4 param_1) { if (DAT_00464424 == 0x20) { return 1; } *(undefined4 *)(&DAT_0046ae30 + DAT_00464424 * 4) = param_1; DAT_00464424 = DAT_00464424 + 1; return 0; } void FUN_0045490c(void) { return; } void __stdcall DoSomethingThenExit_0(int param_1,int param_2,UINT exitCode) { if (param_1 == 0) { while (DAT_00464424 != 0) { DAT_00464424 = DAT_00464424 + -1; (**(code **)(&DAT_0046ae30 + DAT_00464424 * 4))(); } FUN_00454f8c(); (*(code *)PTR_FUN_00464428)(); } if (param_2 == 0) { if (param_1 == 0) { (*(code *)PTR_FUN_0046442c)(); (*(code *)PTR_FUN_00464430)(); } WinapiExitProcess(exitCode); } return; } void __stdcall DoSomethingThenExit_(UINT exitCode) { DoSomethingThenExit_0(0,0,exitCode); return; } void FUN_00454980(void) { undefined4 in_stack_00000004; DoSomethingThenExit_0(1,0,in_stack_00000004); return; } void FUN_00454a08(void) { return; } undefined4 * FUN_00454a0c(void) { uint uVar1; uint uVar2; char cVar3; char *pcVar4; char *pcVar5; char *in_stack_00000004; char *in_stack_00000008; for (; (cVar3 = *in_stack_00000008, cVar3 != '\0' && (cVar3 != '=')); in_stack_00000008 = in_stack_00000008 + 1) { if (('`' < cVar3) && (cVar3 < '{')) { cVar3 = cVar3 + -0x20; } *in_stack_00000004 = cVar3; in_stack_00000004 = in_stack_00000004 + 1; } uVar1 = 0xffffffff; do { pcVar4 = in_stack_00000008; if (uVar1 == 0) break; uVar1 = uVar1 - 1; pcVar4 = in_stack_00000008 + 1; cVar3 = *in_stack_00000008; in_stack_00000008 = pcVar4; } while (cVar3 != '\0'); uVar1 = ~uVar1; pcVar4 = pcVar4 + -uVar1; pcVar5 = in_stack_00000004; for (uVar2 = uVar1 >> 2; uVar2 != 0; uVar2 = uVar2 - 1) { *(undefined4 *)pcVar5 = *(undefined4 *)pcVar4; pcVar4 = pcVar4 + 4; pcVar5 = pcVar5 + 4; } for (uVar1 = uVar1 & 3; uVar1 != 0; uVar1 = uVar1 - 1) { *pcVar5 = *pcVar4; pcVar4 = pcVar4 + 1; pcVar5 = pcVar5 + 1; } return (undefined4 *)in_stack_00000004; } void FUN_00454a60(void) { int iVar1; void *pvVar2; int iVar3; iVar3 = 0; while( true ) { iVar1 = FUN_0044ffac(); if (iVar1 == 0) break; iVar3 = iVar3 + 1; } DAT_0046aeb0 = TurboAlloc_((iVar3 + 1) * 4); if (DAT_0046aeb0 != (void *)0x0) { iVar3 = 0; while( true ) { iVar1 = FUN_0044ffac(); if (iVar1 == 0) break; pvVar2 = TurboAlloc_(iVar1 + 1); if (pvVar2 == (void *)0x0) break; FUN_00454a0c(); *(void **)((int)DAT_0046aeb0 + iVar3 * 4) = pvVar2; iVar3 = iVar3 + 1; } DAT_0046aed4 = DAT_0046aeb0; *(undefined4 *)((int)DAT_0046aeb0 + iVar3 * 4) = 0; } return; } int FUN_00454ae4(void) { int iVar1; int *piVar2; int in_stack_00000004; iVar1 = 0; piVar2 = &DAT_00464464; do { if (in_stack_00000004 == *piVar2) { return iVar1; } iVar1 = iVar1 + 1; piVar2 = piVar2 + 1; } while (iVar1 < 10); return -1; } undefined4 FUN_00454b04(void) { code *pcVar1; undefined4 uVar2; int iVar3; uint uVar4; int *in_stack_00000004; int in_stack_0000000c; uVar4 = 0; iVar3 = *in_stack_00000004; if (iVar3 < -0x3fffff6e) { if (iVar3 == -0x3fffff6f) { iVar3 = 2; uVar4 = 8; } else if (iVar3 == -0x3ffffffb) { iVar3 = 3; } else if (iVar3 == -0x3fffffe3) { iVar3 = 1; } else if (iVar3 == -0x3fffff72) { iVar3 = 2; uVar4 = 4; } else { if (iVar3 != -0x3fffff70) { return 1; } iVar3 = 2; uVar4 = 1; } } else if (iVar3 == -0x3fffff6e) { iVar3 = 2; uVar4 = 0x49; } else if (iVar3 == -0x3fffff6d) { iVar3 = 2; uVar4 = 0x10; } else if (iVar3 == -0x3fffff6c) { iVar3 = 2; } else { if (iVar3 != -0x3fffff6a) { return 1; } iVar3 = 1; } pcVar1 = *(code **)(&DAT_0046443c + iVar3 * 4); if (pcVar1 == (code *)0x1) { uVar2 = 0; } else if (pcVar1 == (code *)0x0) { uVar2 = 1; } else { *(undefined4 *)(&DAT_0046443c + iVar3 * 4) = 0; if (((iVar3 == 1) || (iVar3 == 3)) || (iVar3 == 2)) { FUN_00453f90(); FUN_00453fa4(); (*pcVar1)(); *(uint *)(in_stack_0000000c + 0x20) = *(uint *)(in_stack_0000000c + 0x20) & ~uVar4; } else { (*pcVar1)(); } uVar2 = 0; } return uVar2; } // HandlerRoutine parameter of SetConsoleCtrlHandler // undefined4 HandlerRoutine_00454c74(void) { FUN_00454cf8(); return 1; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address undefined4 FUN_00454c98(void) { undefined4 uVar1; int iVar2; undefined4 in_stack_00000008; if (DAT_00464438 == '\0') { DAT_0046aaa8 = FUN_00454b04; SetConsoleCtrlHandler(HandlerRoutine_00454c74,1); DAT_00464438 = '\x01'; } iVar2 = FUN_00454ae4(); if (iVar2 == -1) { _DAT_004643e0 = 0x13; return 0xffffffff; } uVar1 = *(undefined4 *)(&DAT_0046443c + iVar2 * 4); *(undefined4 *)(&DAT_0046443c + iVar2 * 4) = in_stack_00000008; return uVar1; } undefined4 FUN_00454cf8(void) { code *pcVar1; int iVar2; undefined4 uVar3; int in_stack_00000004; int iVar4; iVar4 = in_stack_00000004; iVar2 = FUN_00454ae4(); if (iVar2 == -1) { uVar3 = 1; } else { pcVar1 = *(code **)(&DAT_0046443c + iVar2 * 4); if (pcVar1 != (code *)0x1) { if (pcVar1 == (code *)0x0) { if ((1 < in_stack_00000004 - 0x10U) && (in_stack_00000004 != 0x14)) { if (in_stack_00000004 == 0x16) { FUN_004548bc(); } else { FUN_00454980(); } } } else { *(undefined4 *)(&DAT_0046443c + iVar2 * 4) = 0; if ((&DAT_0046448c)[iVar2] == '\0') { (*pcVar1)(pcVar1,0,iVar4,in_stack_00000004); } else { (*pcVar1)(); } } } uVar3 = 0; } return uVar3; } undefined4 FUN_00454d74(void) { return 0; } undefined4 FUN_00454d78(void) { return 0; } undefined4 FUN_00454d7c(void) { undefined4 *puVar1; char *pcVar2; undefined4 uVar3; uint uVar4; char *pcVar5; int *in_stack_00000004; uint in_stack_00000008; int *local_10; int local_c; char *local_8; uVar4 = 0; if (in_stack_00000008 == 0) { uVar4 = 0xffff; } local_8 = (char *)0x0; local_10 = in_stack_00000004; for (local_c = 0; local_10 = local_10 + 1, local_c < *in_stack_00000004; local_c = local_c + 1) { puVar1 = (undefined4 *)*local_10; if (in_stack_00000008 == 0) { pcVar2 = (char *)*puVar1; pcVar5 = (char *)puVar1[1]; } else { pcVar2 = (char *)puVar1[2]; pcVar5 = (char *)puVar1[3]; } for (; (pcVar2 < pcVar5 && (*(int *)(pcVar2 + 2) != 0)); pcVar2 = pcVar2 + 6) { if ((*pcVar2 == '\0') && (in_stack_00000008 == uVar4 <= (byte)pcVar2[1])) { uVar4 = (uint)(byte)pcVar2[1]; local_8 = pcVar2; } } } if (local_8 == (char *)0x0) { uVar3 = 0; } else { *local_8 = '\x01'; uVar3 = *(undefined4 *)(local_8 + 2); } return uVar3; } void FUN_00454f8c(void) { code *pcVar1; int *piVar2; int *piVar3; int iVar4; while (pcVar1 = (code *)FUN_00454d7c(), pcVar1 != (code *)0x0) { (*pcVar1)(); } while (pcVar1 = (code *)FUN_00454d7c(), pcVar1 != (code *)0x0) { (*pcVar1)(); } piVar2 = (int *)FUN_00454d78(); if (piVar2 != (int *)0x0) { while (pcVar1 = (code *)FUN_00454d7c(), pcVar1 != (code *)0x0) { (*pcVar1)(); } piVar3 = piVar2; for (iVar4 = 0; piVar3 = piVar3 + 1, iVar4 < *piVar2; iVar4 = iVar4 + 1) { (**(code **)(*piVar3 + 0x18))(); } } return; } bool FUN_004551a4(void) { uint *puVar1; int iVar2; uint uVar3; bool bVar4; uint in_stack_00000004; uint in_stack_00000008; uint in_stack_0000000c; uint in_stack_00000010; uint local_8; if (in_stack_0000000c == 0) { local_8 = in_stack_00000008; if ((0x3a < in_stack_00000008) && ((in_stack_00000010 + 0x46 & 3) == 0)) { local_8 = in_stack_00000008 - 1; } in_stack_0000000c = 0; for (puVar1 = &DAT_00464548; *puVar1 <= local_8; puVar1 = puVar1 + 1) { in_stack_0000000c = in_stack_0000000c + 1; } } else { in_stack_00000008 = in_stack_00000008 + (&DAT_00464544)[in_stack_0000000c]; if ((2 < in_stack_0000000c) && ((in_stack_00000010 + 0x46 & 3) == 0)) { in_stack_00000008 = in_stack_00000008 + 1; } } if ((in_stack_0000000c < 4) || (10 < in_stack_0000000c)) { bVar4 = false; } else if ((in_stack_0000000c < 5) || (9 < in_stack_0000000c)) { if ((in_stack_00000010 < 0x11) || (in_stack_0000000c != 4)) { iVar2 = (&DAT_00464548)[in_stack_0000000c]; } else { iVar2 = iRam00464554 + 7; } if ((in_stack_00000010 + 0x46 & 3) != 0) { iVar2 = iVar2 + -1; } uVar3 = iVar2 - ((in_stack_00000010 + 1 >> 2) + iVar2 + in_stack_00000010 * 0x16d + 4) % 7; if (in_stack_0000000c == 4) { if (uVar3 < in_stack_00000008) { bVar4 = true; } else if (in_stack_00000008 < uVar3) { bVar4 = false; } else { bVar4 = 1 < in_stack_00000004; } } else if (in_stack_00000008 < uVar3) { bVar4 = true; } else if (uVar3 < in_stack_00000008) { bVar4 = false; } else { bVar4 = in_stack_00000004 < 2; } } else { bVar4 = true; } return bVar4; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address int FUN_004552b8(void) { char *pcVar1; bool bVar2; char *pcVar3; int iVar4; undefined3 extraout_var; int iVar5; uint uVar6; int in_stack_00000004; int in_stack_00000008; int in_stack_0000000c; int in_stack_00000010; int in_stack_00000014; int in_stack_00000018; int local_8; if ((in_stack_00000004 < 0x46) || (0x8a < in_stack_00000004)) { local_8 = -1; } else { in_stack_00000014 = in_stack_00000014 + in_stack_00000018 / 0x3c; in_stack_00000010 = in_stack_00000010 + in_stack_00000014 / 0x3c; in_stack_0000000c = in_stack_0000000c + in_stack_00000010 / 0x18; uVar6 = in_stack_00000004 + in_stack_00000008 / 0xc; pcVar1 = &DAT_0046453c + in_stack_00000008 % 0xc; iVar4 = in_stack_00000008 % 0xc; while (iVar5 = iVar4, pcVar3 = pcVar1, *pcVar3 <= in_stack_0000000c) { if (((uVar6 & 3) == 0) && (iVar5 == 1)) { if (in_stack_0000000c < 0x1d) break; iVar4 = -0x1d; } else { iVar4 = -(int)*pcVar3; } in_stack_0000000c = in_stack_0000000c + iVar4; pcVar1 = pcVar3 + 1; iVar4 = iVar5 + 1; if (0xb < iVar5 + 1) { uVar6 = uVar6 + 1; pcVar1 = pcVar3 + -0xb; iVar4 = iVar5 + -0xb; } } iVar4 = uVar6 - 0x44; if (iVar4 < 0) { iVar4 = uVar6 - 0x41; } iVar4 = iVar4 >> 2; if (((uVar6 & 3) == 0) && (iVar5 < 2)) { iVar4 = iVar4 + -1; } local_8 = (iVar4 + (uVar6 - 0x46) * 0x16d + (&DAT_00464548)[iVar5] + in_stack_0000000c) * 0x15180 + (in_stack_00000010 % 0x18) * 0xe10 + (in_stack_00000014 % 0x3c) * 0x3c + in_stack_00000018 % 0x3c + _DAT_00464668; if ((_DAT_0046466c != 0) && (bVar2 = FUN_004551a4(), CONCAT31(extraout_var,bVar2) != 0)) { local_8 = local_8 + -0xe10; } if (local_8 < 1) { local_8 = -1; } } return local_8; } void FUN_00455430(void) { int iVar1; int *in_stack_00000004; _SYSTEMTIME local_14; GetLocalTime(&local_14); iVar1 = FUN_004552b8(); if (in_stack_00000004 != (int *)0x0) { *in_stack_00000004 = iVar1; } return; } void __stdcall ExitProcess(UINT uExitCode) { // WARNING: Could not recover jumptable at 0x0045547b. Too many branches // WARNING: Subroutine does not return // WARNING: Treating indirect jump as call ExitProcess(uExitCode); return; } HGLOBAL __stdcall GlobalFree(HGLOBAL hMem) { HGLOBAL pvVar1; // WARNING: Could not recover jumptable at 0x00455481. Too many branches // WARNING: Treating indirect jump as call pvVar1 = GlobalFree(hMem); return pvVar1; } BOOL __stdcall WritePrivateProfileStringA(LPCSTR lpAppName,LPCSTR lpKeyName,LPCSTR lpString,LPCSTR lpFileName) { BOOL BVar1; // WARNING: Could not recover jumptable at 0x00455487. Too many branches // WARNING: Treating indirect jump as call BVar1 = WritePrivateProfileStringA(lpAppName,lpKeyName,lpString,lpFileName); return BVar1; } BOOL __stdcall SetConsoleCtrlHandler(PHANDLER_ROUTINE HandlerRoutine,BOOL Add) { BOOL BVar1; // WARNING: Could not recover jumptable at 0x0045548d. Too many branches // WARNING: Treating indirect jump as call BVar1 = SetConsoleCtrlHandler(HandlerRoutine,Add); return BVar1; } BOOL __stdcall FreeLibrary(HMODULE hLibModule) { BOOL BVar1; // WARNING: Could not recover jumptable at 0x00455493. Too many branches // WARNING: Treating indirect jump as call BVar1 = FreeLibrary(hLibModule); return BVar1; } DWORD __stdcall GetEnvironmentVariableA(LPCSTR lpName,LPSTR lpBuffer,DWORD nSize) { DWORD DVar1; // WARNING: Could not recover jumptable at 0x00455499. Too many branches // WARNING: Treating indirect jump as call DVar1 = GetEnvironmentVariableA(lpName,lpBuffer,nSize); return DVar1; } LPCH __stdcall GetEnvironmentStrings(void) { LPCH pCVar1; // WARNING: Could not recover jumptable at 0x0045549f. Too many branches // WARNING: Treating indirect jump as call pCVar1 = GetEnvironmentStrings(); return pCVar1; } void __stdcall GetStartupInfoA(LPSTARTUPINFOA lpStartupInfo) { // WARNING: Could not recover jumptable at 0x004554a5. Too many branches // WARNING: Treating indirect jump as call GetStartupInfoA(lpStartupInfo); return; } LONG __stdcall UnhandledExceptionFilter(_EXCEPTION_POINTERS *ExceptionInfo) { LONG LVar1; // WARNING: Could not recover jumptable at 0x004554ab. Too many branches // WARNING: Treating indirect jump as call LVar1 = UnhandledExceptionFilter(ExceptionInfo); return LVar1; } HMODULE __stdcall GetModuleHandleA(LPCSTR lpModuleName) { HMODULE pHVar1; // WARNING: Could not recover jumptable at 0x004554b1. Too many branches // WARNING: Treating indirect jump as call pHVar1 = GetModuleHandleA(lpModuleName); return pHVar1; } void __stdcall RaiseException(DWORD dwExceptionCode,DWORD dwExceptionFlags,DWORD nNumberOfArguments, ULONG_PTR *lpArguments) { // WARNING: Could not recover jumptable at 0x004554b7. Too many branches // WARNING: Treating indirect jump as call RaiseException(dwExceptionCode,dwExceptionFlags,nNumberOfArguments,lpArguments); return; } HGLOBAL __stdcall LoadResource(HMODULE hModule,HRSRC hResInfo) { HGLOBAL pvVar1; // WARNING: Could not recover jumptable at 0x004554bd. Too many branches // WARNING: Treating indirect jump as call pvVar1 = LoadResource(hModule,hResInfo); return pvVar1; } DWORD __stdcall GetFileType(HANDLE hFile) { DWORD DVar1; // WARNING: Could not recover jumptable at 0x004554c3. Too many branches // WARNING: Treating indirect jump as call DVar1 = GetFileType(hFile); return DVar1; } BOOL __stdcall CloseHandle(HANDLE hObject) { BOOL BVar1; // WARNING: Could not recover jumptable at 0x004554c9. Too many branches // WARNING: Treating indirect jump as call BVar1 = CloseHandle(hObject); return BVar1; } HMODULE __stdcall LoadLibraryA(LPCSTR lpLibFileName) { HMODULE pHVar1; // WARNING: Could not recover jumptable at 0x004554cf. Too many branches // WARNING: Treating indirect jump as call pHVar1 = LoadLibraryA(lpLibFileName); return pHVar1; } UINT __stdcall _lread(HFILE hFile,LPVOID lpBuffer,UINT uBytes) { UINT UVar1; // WARNING: Could not recover jumptable at 0x004554db. Too many branches // WARNING: Treating indirect jump as call UVar1 = _lread(hFile,lpBuffer,uBytes); return UVar1; } HFILE __stdcall _lclose(HFILE hFile) { HFILE HVar1; // WARNING: Could not recover jumptable at 0x004554e1. Too many branches // WARNING: Treating indirect jump as call HVar1 = _lclose(hFile); return HVar1; } BOOL __stdcall WriteFile(HANDLE hFile,LPCVOID lpBuffer,DWORD nNumberOfBytesToWrite,LPDWORD lpNumberOfBytesWritten, LPOVERLAPPED lpOverlapped) { BOOL BVar1; // WARNING: Could not recover jumptable at 0x004554e7. Too many branches // WARNING: Treating indirect jump as call BVar1 = WriteFile(hFile,lpBuffer,nNumberOfBytesToWrite,lpNumberOfBytesWritten,lpOverlapped); return BVar1; } DWORD __stdcall GetPrivateProfileStringA (LPCSTR lpAppName,LPCSTR lpKeyName,LPCSTR lpDefault,LPSTR lpReturnedString,DWORD nSize, LPCSTR lpFileName) { DWORD DVar1; // WARNING: Could not recover jumptable at 0x004554ed. Too many branches // WARNING: Treating indirect jump as call DVar1 = GetPrivateProfileStringA(lpAppName,lpKeyName,lpDefault,lpReturnedString,nSize,lpFileName); return DVar1; } UINT __stdcall GetPrivateProfileIntA(LPCSTR lpAppName,LPCSTR lpKeyName,INT nDefault,LPCSTR lpFileName) { UINT UVar1; // WARNING: Could not recover jumptable at 0x004554f3. Too many branches // WARNING: Treating indirect jump as call UVar1 = GetPrivateProfileIntA(lpAppName,lpKeyName,nDefault,lpFileName); return UVar1; } UINT __stdcall SetErrorMode(UINT uMode) { UINT UVar1; // WARNING: Could not recover jumptable at 0x004554f9. Too many branches // WARNING: Treating indirect jump as call UVar1 = SetErrorMode(uMode); return UVar1; } void __stdcall RtlUnwind(PVOID TargetFrame,PVOID TargetIp,PEXCEPTION_RECORD ExceptionRecord,PVOID ReturnValue) { // WARNING: Could not recover jumptable at 0x004554ff. Too many branches // WARNING: Treating indirect jump as call RtlUnwind(TargetFrame,TargetIp,ExceptionRecord,ReturnValue); return; } HANDLE __stdcall GetStdHandle(DWORD nStdHandle) { HANDLE pvVar1; // WARNING: Could not recover jumptable at 0x00455505. Too many branches // WARNING: Treating indirect jump as call pvVar1 = GetStdHandle(nStdHandle); return pvVar1; } LPVOID __stdcall LockResource(HGLOBAL hResData) { LPVOID pvVar1; // WARNING: Could not recover jumptable at 0x0045550b. Too many branches // WARNING: Treating indirect jump as call pvVar1 = LockResource(hResData); return pvVar1; } void __stdcall GetLocalTime(LPSYSTEMTIME lpSystemTime) { // WARNING: Could not recover jumptable at 0x00455511. Too many branches // WARNING: Treating indirect jump as call GetLocalTime(lpSystemTime); return; } SIZE_T __stdcall GlobalSize(HGLOBAL hMem) { SIZE_T SVar1; // WARNING: Could not recover jumptable at 0x00455517. Too many branches // WARNING: Treating indirect jump as call SVar1 = GlobalSize(hMem); return SVar1; } HGLOBAL __stdcall GlobalAlloc(UINT uFlags,SIZE_T dwBytes) { HGLOBAL pvVar1; // WARNING: Could not recover jumptable at 0x0045551d. Too many branches // WARNING: Treating indirect jump as call pvVar1 = GlobalAlloc(uFlags,dwBytes); return pvVar1; } LPVOID __stdcall GlobalLock(HGLOBAL hMem) { LPVOID pvVar1; // WARNING: Could not recover jumptable at 0x00455523. Too many branches // WARNING: Treating indirect jump as call pvVar1 = GlobalLock(hMem); return pvVar1; } UINT __stdcall GetWindowsDirectoryA(LPSTR lpBuffer,UINT uSize) { UINT UVar1; // WARNING: Could not recover jumptable at 0x00455529. Too many branches // WARNING: Treating indirect jump as call UVar1 = GetWindowsDirectoryA(lpBuffer,uSize); return UVar1; } DWORD __stdcall GetLastError(void) { DWORD DVar1; // WARNING: Could not recover jumptable at 0x0045552f. Too many branches // WARNING: Treating indirect jump as call DVar1 = GetLastError(); return DVar1; } BOOL __stdcall FreeResource(HGLOBAL hResData) { BOOL BVar1; // WARNING: Could not recover jumptable at 0x00455535. Too many branches // WARNING: Treating indirect jump as call BVar1 = FreeResource(hResData); return BVar1; } BOOL __stdcall GetVersionExA(LPOSVERSIONINFOA lpVersionInformation) { BOOL BVar1; // WARNING: Could not recover jumptable at 0x0045553b. Too many branches // WARNING: Treating indirect jump as call BVar1 = GetVersionExA(lpVersionInformation); return BVar1; } DWORD __stdcall GetVersion(void) { DWORD DVar1; // WARNING: Could not recover jumptable at 0x00455541. Too many branches // WARNING: Treating indirect jump as call DVar1 = GetVersion(); return DVar1; } BOOL __stdcall DeleteFileA(LPCSTR lpFileName) { BOOL BVar1; // WARNING: Could not recover jumptable at 0x00455547. Too many branches // WARNING: Treating indirect jump as call BVar1 = DeleteFileA(lpFileName); return BVar1; } BOOL __stdcall CreateDirectoryA(LPCSTR lpPathName,LPSECURITY_ATTRIBUTES lpSecurityAttributes) { BOOL BVar1; // WARNING: Could not recover jumptable at 0x0045554d. Too many branches // WARNING: Treating indirect jump as call BVar1 = CreateDirectoryA(lpPathName,lpSecurityAttributes); return BVar1; } HFILE __stdcall _lopen(LPCSTR lpPathName,int iReadWrite) { HFILE HVar1; // WARNING: Could not recover jumptable at 0x00455553. Too many branches // WARNING: Treating indirect jump as call HVar1 = _lopen(lpPathName,iReadWrite); return HVar1; } LONG __stdcall _llseek(HFILE hFile,LONG lOffset,int iOrigin) { LONG LVar1; // WARNING: Could not recover jumptable at 0x00455559. Too many branches // WARNING: Treating indirect jump as call LVar1 = _llseek(hFile,lOffset,iOrigin); return LVar1; } DWORD __stdcall GetCurrentDirectoryA(DWORD nBufferLength,LPSTR lpBuffer) { DWORD DVar1; // WARNING: Could not recover jumptable at 0x0045555f. Too many branches // WARNING: Treating indirect jump as call DVar1 = GetCurrentDirectoryA(nBufferLength,lpBuffer); return DVar1; } HANDLE __stdcall CreateFileA(LPCSTR lpFileName,DWORD dwDesiredAccess,DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes,DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes,HANDLE hTemplateFile) { HANDLE pvVar1; // WARNING: Could not recover jumptable at 0x00455565. Too many branches // WARNING: Treating indirect jump as call pvVar1 = CreateFileA(lpFileName,dwDesiredAccess,dwShareMode,lpSecurityAttributes, dwCreationDisposition,dwFlagsAndAttributes,hTemplateFile); return pvVar1; } FARPROC __stdcall GetProcAddress(HMODULE hModule,LPCSTR lpProcName) { FARPROC pFVar1; // WARNING: Could not recover jumptable at 0x0045556b. Too many branches // WARNING: Treating indirect jump as call pFVar1 = GetProcAddress(hModule,lpProcName); return pFVar1; } LPVOID __stdcall VirtualAlloc(LPVOID lpAddress,SIZE_T dwSize,DWORD flAllocationType,DWORD flProtect) { LPVOID pvVar1; // WARNING: Could not recover jumptable at 0x00455571. Too many branches // WARNING: Treating indirect jump as call pvVar1 = VirtualAlloc(lpAddress,dwSize,flAllocationType,flProtect); return pvVar1; } DWORD __stdcall GetCurrentThreadId(void) { DWORD DVar1; // WARNING: Could not recover jumptable at 0x00455577. Too many branches // WARNING: Treating indirect jump as call DVar1 = GetCurrentThreadId(); return DVar1; } UINT __stdcall SetHandleCount(UINT uNumber) { UINT UVar1; // WARNING: Could not recover jumptable at 0x0045557d. Too many branches // WARNING: Treating indirect jump as call UVar1 = SetHandleCount(uNumber); return UVar1; } DWORD __stdcall SetFilePointer(HANDLE hFile,LONG lDistanceToMove,PLONG lpDistanceToMoveHigh,DWORD dwMoveMethod) { DWORD DVar1; // WARNING: Could not recover jumptable at 0x00455583. Too many branches // WARNING: Treating indirect jump as call DVar1 = SetFilePointer(hFile,lDistanceToMove,lpDistanceToMoveHigh,dwMoveMethod); return DVar1; } BOOL __stdcall VirtualFree(LPVOID lpAddress,SIZE_T dwSize,DWORD dwFreeType) { BOOL BVar1; // WARNING: Could not recover jumptable at 0x00455589. Too many branches // WARNING: Treating indirect jump as call BVar1 = VirtualFree(lpAddress,dwSize,dwFreeType); return BVar1; } UINT __stdcall GetDriveTypeA(LPCSTR lpRootPathName) { UINT UVar1; // WARNING: Could not recover jumptable at 0x0045558f. Too many branches // WARNING: Treating indirect jump as call UVar1 = GetDriveTypeA(lpRootPathName); return UVar1; } DWORD __stdcall GetFileAttributesA(LPCSTR lpFileName) { DWORD DVar1; // WARNING: Could not recover jumptable at 0x00455595. Too many branches // WARNING: Treating indirect jump as call DVar1 = GetFileAttributesA(lpFileName); return DVar1; } DWORD __stdcall GetModuleFileNameA(HMODULE hModule,LPSTR lpFilename,DWORD nSize) { DWORD DVar1; // WARNING: Could not recover jumptable at 0x0045559b. Too many branches // WARNING: Treating indirect jump as call DVar1 = GetModuleFileNameA(hModule,lpFilename,nSize); return DVar1; } BOOL __stdcall ReadFile(HANDLE hFile,LPVOID lpBuffer,DWORD nNumberOfBytesToRead,LPDWORD lpNumberOfBytesRead, LPOVERLAPPED lpOverlapped) { BOOL BVar1; // WARNING: Could not recover jumptable at 0x004555a1. Too many branches // WARNING: Treating indirect jump as call BVar1 = ReadFile(hFile,lpBuffer,nNumberOfBytesToRead,lpNumberOfBytesRead,lpOverlapped); return BVar1; } HRSRC __stdcall FindResourceA(HMODULE hModule,LPCSTR lpName,LPCSTR lpType) { HRSRC pHVar1; // WARNING: Could not recover jumptable at 0x004555a7. Too many branches // WARNING: Treating indirect jump as call pHVar1 = FindResourceA(hModule,lpName,lpType); return pHVar1; } DWORD __stdcall GetLogicalDrives(void) { DWORD DVar1; // WARNING: Could not recover jumptable at 0x004555ad. Too many branches // WARNING: Treating indirect jump as call DVar1 = GetLogicalDrives(); return DVar1; } BOOL __stdcall GlobalUnlock(HGLOBAL hMem) { BOOL BVar1; // WARNING: Could not recover jumptable at 0x004555b3. Too many branches // WARNING: Treating indirect jump as call BVar1 = GlobalUnlock(hMem); return BVar1; } LPSTR __stdcall GetCommandLineA(void) { LPSTR pCVar1; // WARNING: Could not recover jumptable at 0x004555b9. Too many branches // WARNING: Treating indirect jump as call pCVar1 = GetCommandLineA(); return pCVar1; } BOOL __stdcall SetDlgItemTextA(HWND hDlg,int nIDDlgItem,LPCSTR lpString) { BOOL BVar1; // WARNING: Could not recover jumptable at 0x004555bf. Too many branches // WARNING: Treating indirect jump as call BVar1 = SetDlgItemTextA(hDlg,nIDDlgItem,lpString); return BVar1; } BOOL __stdcall RemoveMenu(HMENU hMenu,UINT uPosition,UINT uFlags) { BOOL BVar1; // WARNING: Could not recover jumptable at 0x004555c5. Too many branches // WARNING: Treating indirect jump as call BVar1 = RemoveMenu(hMenu,uPosition,uFlags); return BVar1; } int __stdcall ReleaseDC(HWND hWnd,HDC hDC) { int iVar1; // WARNING: Could not recover jumptable at 0x004555cb. Too many branches // WARNING: Treating indirect jump as call iVar1 = ReleaseDC(hWnd,hDC); return iVar1; } BOOL __stdcall SetMenu(HWND hWnd,HMENU hMenu) { BOOL BVar1; // WARNING: Could not recover jumptable at 0x004555d1. Too many branches // WARNING: Treating indirect jump as call BVar1 = SetMenu(hWnd,hMenu); return BVar1; } ATOM __stdcall RegisterClassA(WNDCLASSA *lpWndClass) { ATOM AVar1; // WARNING: Could not recover jumptable at 0x004555d7. Too many branches // WARNING: Treating indirect jump as call AVar1 = RegisterClassA(lpWndClass); return AVar1; } BOOL __stdcall ScreenToClient(HWND hWnd,LPPOINT lpPoint) { BOOL BVar1; // WARNING: Could not recover jumptable at 0x004555dd. Too many branches // WARNING: Treating indirect jump as call BVar1 = ScreenToClient(hWnd,lpPoint); return BVar1; } HCURSOR __stdcall SetCursor(HCURSOR hCursor) { HCURSOR pHVar1; // WARNING: Could not recover jumptable at 0x004555e3. Too many branches // WARNING: Treating indirect jump as call pHVar1 = SetCursor(hCursor); return pHVar1; } BOOL __stdcall SetForegroundWindow(HWND hWnd) { BOOL BVar1; // WARNING: Could not recover jumptable at 0x004555e9. Too many branches // WARNING: Treating indirect jump as call BVar1 = SetForegroundWindow(hWnd); return BVar1; } void __stdcall PostQuitMessage(int nExitCode) { // WARNING: Could not recover jumptable at 0x004555ef. Too many branches // WARNING: Treating indirect jump as call PostQuitMessage(nExitCode); return; } BOOL __stdcall PostMessageA(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam) { BOOL BVar1; // WARNING: Could not recover jumptable at 0x004555f5. Too many branches // WARNING: Treating indirect jump as call BVar1 = PostMessageA(hWnd,Msg,wParam,lParam); return BVar1; } int __stdcall MessageBoxA(HWND hWnd,LPCSTR lpText,LPCSTR lpCaption,UINT uType) { int iVar1; // WARNING: Could not recover jumptable at 0x004555fb. Too many branches // WARNING: Treating indirect jump as call iVar1 = MessageBoxA(hWnd,lpText,lpCaption,uType); return iVar1; } int __stdcall LoadStringA(HINSTANCE hInstance,UINT uID,LPSTR lpBuffer,int cchBufferMax) { int iVar1; // WARNING: Could not recover jumptable at 0x00455601. Too many branches // WARNING: Treating indirect jump as call iVar1 = LoadStringA(hInstance,uID,lpBuffer,cchBufferMax); return iVar1; } HMENU __stdcall LoadMenuA(HINSTANCE hInstance,LPCSTR lpMenuName) { HMENU pHVar1; // WARNING: Could not recover jumptable at 0x00455607. Too many branches // WARNING: Treating indirect jump as call pHVar1 = LoadMenuA(hInstance,lpMenuName); return pHVar1; } HWND __stdcall SetActiveWindow(HWND hWnd) { HWND pHVar1; // WARNING: Could not recover jumptable at 0x0045560d. Too many branches // WARNING: Treating indirect jump as call pHVar1 = SetActiveWindow(hWnd); return pHVar1; } HCURSOR __stdcall LoadCursorA(HINSTANCE hInstance,LPCSTR lpCursorName) { HCURSOR pHVar1; // WARNING: Could not recover jumptable at 0x00455613. Too many branches // WARNING: Treating indirect jump as call pHVar1 = LoadCursorA(hInstance,lpCursorName); return pHVar1; } BOOL __stdcall IsIconic(HWND hWnd) { BOOL BVar1; // WARNING: Could not recover jumptable at 0x00455619. Too many branches // WARNING: Treating indirect jump as call BVar1 = IsIconic(hWnd); return BVar1; } BOOL __stdcall InvalidateRect(HWND hWnd,RECT *lpRect,BOOL bErase) { BOOL BVar1; // WARNING: Could not recover jumptable at 0x0045561f. Too many branches // WARNING: Treating indirect jump as call BVar1 = InvalidateRect(hWnd,lpRect,bErase); return BVar1; } BOOL __stdcall InsertMenuA(HMENU hMenu,UINT uPosition,UINT uFlags,UINT_PTR uIDNewItem,LPCSTR lpNewItem) { BOOL BVar1; // WARNING: Could not recover jumptable at 0x00455625. Too many branches // WARNING: Treating indirect jump as call BVar1 = InsertMenuA(hMenu,uPosition,uFlags,uIDNewItem,lpNewItem); return BVar1; } BOOL __stdcall GetWindowRect(HWND hWnd,LPRECT lpRect) { BOOL BVar1; // WARNING: Could not recover jumptable at 0x0045562b. Too many branches // WARNING: Treating indirect jump as call BVar1 = GetWindowRect(hWnd,lpRect); return BVar1; } int __stdcall GetSystemMetrics(int nIndex) { int iVar1; // WARNING: Could not recover jumptable at 0x00455631. Too many branches // WARNING: Treating indirect jump as call iVar1 = GetSystemMetrics(nIndex); return iVar1; } HMENU __stdcall GetSubMenu(HMENU hMenu,int nPos) { HMENU pHVar1; // WARNING: Could not recover jumptable at 0x00455637. Too many branches // WARNING: Treating indirect jump as call pHVar1 = GetSubMenu(hMenu,nPos); return pHVar1; } int __stdcall GetMenuStringA(HMENU hMenu,UINT uIDItem,LPSTR lpString,int cchMax,UINT flags) { int iVar1; // WARNING: Could not recover jumptable at 0x0045563d. Too many branches // WARNING: Treating indirect jump as call iVar1 = GetMenuStringA(hMenu,uIDItem,lpString,cchMax,flags); return iVar1; } UINT __stdcall GetMenuState(HMENU hMenu,UINT uId,UINT uFlags) { UINT UVar1; // WARNING: Could not recover jumptable at 0x00455643. Too many branches // WARNING: Treating indirect jump as call UVar1 = GetMenuState(hMenu,uId,uFlags); return UVar1; } UINT __stdcall GetMenuItemID(HMENU hMenu,int nPos) { UINT UVar1; // WARNING: Could not recover jumptable at 0x00455649. Too many branches // WARNING: Treating indirect jump as call UVar1 = GetMenuItemID(hMenu,nPos); return UVar1; } int __stdcall GetMenuItemCount(HMENU hMenu) { int iVar1; // WARNING: Could not recover jumptable at 0x0045564f. Too many branches // WARNING: Treating indirect jump as call iVar1 = GetMenuItemCount(hMenu); return iVar1; } BOOL __stdcall GetKeyboardState(PBYTE lpKeyState) { BOOL BVar1; // WARNING: Could not recover jumptable at 0x00455655. Too many branches // WARNING: Treating indirect jump as call BVar1 = GetKeyboardState(lpKeyState); return BVar1; } UINT __stdcall GetDlgItemTextA(HWND hDlg,int nIDDlgItem,LPSTR lpString,int cchMax) { UINT UVar1; // WARNING: Could not recover jumptable at 0x0045565b. Too many branches // WARNING: Treating indirect jump as call UVar1 = GetDlgItemTextA(hDlg,nIDDlgItem,lpString,cchMax); return UVar1; } HDC __stdcall GetDC(HWND hWnd) { HDC pHVar1; // WARNING: Could not recover jumptable at 0x00455661. Too many branches // WARNING: Treating indirect jump as call pHVar1 = GetDC(hWnd); return pHVar1; } BOOL __stdcall GetCursorPos(LPPOINT lpPoint) { BOOL BVar1; // WARNING: Could not recover jumptable at 0x00455667. Too many branches // WARNING: Treating indirect jump as call BVar1 = GetCursorPos(lpPoint); return BVar1; } BOOL __stdcall GetClipCursor(LPRECT lpRect) { BOOL BVar1; // WARNING: Could not recover jumptable at 0x0045566d. Too many branches // WARNING: Treating indirect jump as call BVar1 = GetClipCursor(lpRect); return BVar1; } HWND __stdcall GetActiveWindow(void) { HWND pHVar1; // WARNING: Could not recover jumptable at 0x00455673. Too many branches // WARNING: Treating indirect jump as call pHVar1 = GetActiveWindow(); return pHVar1; } HWND __stdcall FindWindowA(LPCSTR lpClassName,LPCSTR lpWindowName) { HWND pHVar1; // WARNING: Could not recover jumptable at 0x00455679. Too many branches // WARNING: Treating indirect jump as call pHVar1 = FindWindowA(lpClassName,lpWindowName); return pHVar1; } int __stdcall FillRect(HDC hDC,RECT *lprc,HBRUSH hbr) { int iVar1; // WARNING: Could not recover jumptable at 0x0045567f. Too many branches // WARNING: Treating indirect jump as call iVar1 = FillRect(hDC,lprc,hbr); return iVar1; } BOOL __stdcall EnumThreadWindows(DWORD dwThreadId,WNDENUMPROC lpfn,LPARAM lParam) { BOOL BVar1; // WARNING: Could not recover jumptable at 0x00455685. Too many branches // WARNING: Treating indirect jump as call BVar1 = EnumThreadWindows(dwThreadId,lpfn,lParam); return BVar1; } BOOL __stdcall EndPaint(HWND hWnd,PAINTSTRUCT *lpPaint) { BOOL BVar1; // WARNING: Could not recover jumptable at 0x0045568b. Too many branches // WARNING: Treating indirect jump as call BVar1 = EndPaint(hWnd,lpPaint); return BVar1; } SHORT __stdcall GetAsyncKeyState(int vKey) { SHORT SVar1; // WARNING: Could not recover jumptable at 0x00455691. Too many branches // WARNING: Treating indirect jump as call SVar1 = GetAsyncKeyState(vKey); return SVar1; } BOOL __stdcall EndDialog(HWND hDlg,INT_PTR nResult) { BOOL BVar1; // WARNING: Could not recover jumptable at 0x00455697. Too many branches // WARNING: Treating indirect jump as call BVar1 = EndDialog(hDlg,nResult); return BVar1; } BOOL __stdcall EnableMenuItem(HMENU hMenu,UINT uIDEnableItem,UINT uEnable) { BOOL BVar1; // WARNING: Could not recover jumptable at 0x0045569d. Too many branches // WARNING: Treating indirect jump as call BVar1 = EnableMenuItem(hMenu,uIDEnableItem,uEnable); return BVar1; } BOOL __stdcall DrawMenuBar(HWND hWnd) { BOOL BVar1; // WARNING: Could not recover jumptable at 0x004556a3. Too many branches // WARNING: Treating indirect jump as call BVar1 = DrawMenuBar(hWnd); return BVar1; } HWND __stdcall GetDesktopWindow(void) { HWND pHVar1; // WARNING: Could not recover jumptable at 0x004556a9. Too many branches // WARNING: Treating indirect jump as call pHVar1 = GetDesktopWindow(); return pHVar1; } LRESULT __stdcall DispatchMessageA(MSG *lpMsg) { LRESULT LVar1; // WARNING: Could not recover jumptable at 0x004556af. Too many branches // WARNING: Treating indirect jump as call LVar1 = DispatchMessageA(lpMsg); return LVar1; } INT_PTR __stdcall DialogBoxParamA(HINSTANCE hInstance,LPCSTR lpTemplateName,HWND hWndParent,DLGPROC lpDialogFunc, LPARAM dwInitParam) { INT_PTR IVar1; // WARNING: Could not recover jumptable at 0x004556b5. Too many branches // WARNING: Treating indirect jump as call IVar1 = DialogBoxParamA(hInstance,lpTemplateName,hWndParent,lpDialogFunc,dwInitParam); return IVar1; } BOOL __stdcall DestroyWindow(HWND hWnd) { BOOL BVar1; // WARNING: Could not recover jumptable at 0x004556bb. Too many branches // WARNING: Treating indirect jump as call BVar1 = DestroyWindow(hWnd); return BVar1; } BOOL __stdcall DestroyMenu(HMENU hMenu) { BOOL BVar1; // WARNING: Could not recover jumptable at 0x004556c1. Too many branches // WARNING: Treating indirect jump as call BVar1 = DestroyMenu(hMenu); return BVar1; } BOOL __stdcall DeleteMenu(HMENU hMenu,UINT uPosition,UINT uFlags) { BOOL BVar1; // WARNING: Could not recover jumptable at 0x004556cd. Too many branches // WARNING: Treating indirect jump as call BVar1 = DeleteMenu(hMenu,uPosition,uFlags); return BVar1; } LRESULT __stdcall DefWindowProcA(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam) { LRESULT LVar1; // WARNING: Could not recover jumptable at 0x004556d3. Too many branches // WARNING: Treating indirect jump as call LVar1 = DefWindowProcA(hWnd,Msg,wParam,lParam); return LVar1; } HMENU __stdcall GetSystemMenu(HWND hWnd,BOOL bRevert) { HMENU pHVar1; // WARNING: Could not recover jumptable at 0x004556d9. Too many branches // WARNING: Treating indirect jump as call pHVar1 = GetSystemMenu(hWnd,bRevert); return pHVar1; } DWORD __stdcall CheckMenuItem(HMENU hMenu,UINT uIDCheckItem,UINT uCheck) { DWORD DVar1; // WARNING: Could not recover jumptable at 0x004556df. Too many branches // WARNING: Treating indirect jump as call DVar1 = CheckMenuItem(hMenu,uIDCheckItem,uCheck); return DVar1; } BOOL __stdcall ClientToScreen(HWND hWnd,LPPOINT lpPoint) { BOOL BVar1; // WARNING: Could not recover jumptable at 0x004556e5. Too many branches // WARNING: Treating indirect jump as call BVar1 = ClientToScreen(hWnd,lpPoint); return BVar1; } HMENU __stdcall CreateMenu(void) { HMENU pHVar1; // WARNING: Could not recover jumptable at 0x004556eb. Too many branches // WARNING: Treating indirect jump as call pHVar1 = CreateMenu(); return pHVar1; } BOOL __stdcall IntersectRect(LPRECT lprcDst,RECT *lprcSrc1,RECT *lprcSrc2) { BOOL BVar1; // WARNING: Could not recover jumptable at 0x004556f1. Too many branches // WARNING: Treating indirect jump as call BVar1 = IntersectRect(lprcDst,lprcSrc1,lprcSrc2); return BVar1; } HDC __stdcall BeginPaint(HWND hWnd,LPPAINTSTRUCT lpPaint) { HDC pHVar1; // WARNING: Could not recover jumptable at 0x004556f7. Too many branches // WARNING: Treating indirect jump as call pHVar1 = BeginPaint(hWnd,lpPaint); return pHVar1; } HWND __stdcall CreateWindowExA(DWORD dwExStyle,LPCSTR lpClassName,LPCSTR lpWindowName,DWORD dwStyle,int X,int Y, int nWidth,int nHeight,HWND hWndParent,HMENU hMenu,HINSTANCE hInstance,LPVOID lpParam ) { HWND pHVar1; // WARNING: Could not recover jumptable at 0x004556fd. Too many branches // WARNING: Treating indirect jump as call pHVar1 = CreateWindowExA(dwExStyle,lpClassName,lpWindowName,dwStyle,X,Y,nWidth,nHeight,hWndParent, hMenu,hInstance,lpParam); return pHVar1; } BOOL __stdcall AppendMenuA(HMENU hMenu,UINT uFlags,UINT_PTR uIDNewItem,LPCSTR lpNewItem) { BOOL BVar1; // WARNING: Could not recover jumptable at 0x00455703. Too many branches // WARNING: Treating indirect jump as call BVar1 = AppendMenuA(hMenu,uFlags,uIDNewItem,lpNewItem); return BVar1; } HICON __stdcall LoadIconA(HINSTANCE hInstance,LPCSTR lpIconName) { HICON pHVar1; // WARNING: Could not recover jumptable at 0x00455709. Too many branches // WARNING: Treating indirect jump as call pHVar1 = LoadIconA(hInstance,lpIconName); return pHVar1; } BOOL __stdcall ClipCursor(RECT *lpRect) { BOOL BVar1; // WARNING: Could not recover jumptable at 0x0045570f. Too many branches // WARNING: Treating indirect jump as call BVar1 = ClipCursor(lpRect); return BVar1; } BOOL __stdcall UpdateWindow(HWND hWnd) { BOOL BVar1; // WARNING: Could not recover jumptable at 0x00455715. Too many branches // WARNING: Treating indirect jump as call BVar1 = UpdateWindow(hWnd); return BVar1; } BOOL __stdcall UnregisterClassA(LPCSTR lpClassName,HINSTANCE hInstance) { BOOL BVar1; // WARNING: Could not recover jumptable at 0x0045571b. Too many branches // WARNING: Treating indirect jump as call BVar1 = UnregisterClassA(lpClassName,hInstance); return BVar1; } BOOL __stdcall PeekMessageA(LPMSG lpMsg,HWND hWnd,UINT wMsgFilterMin,UINT wMsgFilterMax,UINT wRemoveMsg) { BOOL BVar1; // WARNING: Could not recover jumptable at 0x00455721. Too many branches // WARNING: Treating indirect jump as call BVar1 = PeekMessageA(lpMsg,hWnd,wMsgFilterMin,wMsgFilterMax,wRemoveMsg); return BVar1; } BOOL __stdcall TranslateMessage(MSG *lpMsg) { BOOL BVar1; // WARNING: Could not recover jumptable at 0x00455727. Too many branches // WARNING: Treating indirect jump as call BVar1 = TranslateMessage(lpMsg); return BVar1; } BOOL __stdcall ShowWindow(HWND hWnd,int nCmdShow) { BOOL BVar1; // WARNING: Could not recover jumptable at 0x0045572d. Too many branches // WARNING: Treating indirect jump as call BVar1 = ShowWindow(hWnd,nCmdShow); return BVar1; } int __stdcall ShowCursor(BOOL bShow) { int iVar1; // WARNING: Could not recover jumptable at 0x00455733. Too many branches // WARNING: Treating indirect jump as call iVar1 = ShowCursor(bShow); return iVar1; } ATOM __stdcall RegisterClassExA(WNDCLASSEXA *param_1) { ATOM AVar1; // WARNING: Could not recover jumptable at 0x00455739. Too many branches // WARNING: Treating indirect jump as call AVar1 = RegisterClassExA(param_1); return AVar1; } BOOL __stdcall SetWindowPos(HWND hWnd,HWND hWndInsertAfter,int X,int Y,int cx,int cy,UINT uFlags) { BOOL BVar1; // WARNING: Could not recover jumptable at 0x0045573f. Too many branches // WARNING: Treating indirect jump as call BVar1 = SetWindowPos(hWnd,hWndInsertAfter,X,Y,cx,cy,uFlags); return BVar1; } BOOL __stdcall SetRect(LPRECT lprc,int xLeft,int yTop,int xRight,int yBottom) { BOOL BVar1; // WARNING: Could not recover jumptable at 0x00455745. Too many branches // WARNING: Treating indirect jump as call BVar1 = SetRect(lprc,xLeft,yTop,xRight,yBottom); return BVar1; } UINT __stdcall RealizePalette(HDC hdc) { UINT UVar1; // WARNING: Could not recover jumptable at 0x0045574b. Too many branches // WARNING: Treating indirect jump as call UVar1 = RealizePalette(hdc); return UVar1; } UINT __stdcall GetSystemPaletteUse(HDC hdc) { UINT UVar1; // WARNING: Could not recover jumptable at 0x00455751. Too many branches // WARNING: Treating indirect jump as call UVar1 = GetSystemPaletteUse(hdc); return UVar1; } UINT __stdcall GetSystemPaletteEntries(HDC hdc,UINT iStart,UINT cEntries,LPPALETTEENTRY pPalEntries) { UINT UVar1; // WARNING: Could not recover jumptable at 0x00455757. Too many branches // WARNING: Treating indirect jump as call UVar1 = GetSystemPaletteEntries(hdc,iStart,cEntries,pPalEntries); return UVar1; } HGDIOBJ __stdcall GetStockObject(int i) { HGDIOBJ pvVar1; // WARNING: Could not recover jumptable at 0x0045575d. Too many branches // WARNING: Treating indirect jump as call pvVar1 = GetStockObject(i); return pvVar1; } int __stdcall GetDeviceCaps(HDC hdc,int index) { int iVar1; // WARNING: Could not recover jumptable at 0x00455763. Too many branches // WARNING: Treating indirect jump as call iVar1 = GetDeviceCaps(hdc,index); return iVar1; } BOOL __stdcall DeleteObject(HGDIOBJ ho) { BOOL BVar1; // WARNING: Could not recover jumptable at 0x00455769. Too many branches // WARNING: Treating indirect jump as call BVar1 = DeleteObject(ho); return BVar1; } BOOL __stdcall DeleteDC(HDC hdc) { BOOL BVar1; // WARNING: Could not recover jumptable at 0x0045576f. Too many branches // WARNING: Treating indirect jump as call BVar1 = DeleteDC(hdc); return BVar1; } HBRUSH __stdcall CreateSolidBrush(COLORREF color) { HBRUSH pHVar1; // WARNING: Could not recover jumptable at 0x00455775. Too many branches // WARNING: Treating indirect jump as call pHVar1 = CreateSolidBrush(color); return pHVar1; } HPALETTE __stdcall CreatePalette(LOGPALETTE *plpal) { HPALETTE pHVar1; // WARNING: Could not recover jumptable at 0x0045577b. Too many branches // WARNING: Treating indirect jump as call pHVar1 = CreatePalette(plpal); return pHVar1; } BOOL __stdcall TextOutA(HDC hdc,int x,int y,LPCSTR lpString,int c) { BOOL BVar1; // WARNING: Could not recover jumptable at 0x00455781. Too many branches // WARNING: Treating indirect jump as call BVar1 = TextOutA(hdc,x,y,lpString,c); return BVar1; } int __stdcall StretchDIBits(HDC hdc,int xDest,int yDest,int DestWidth,int DestHeight,int xSrc,int ySrc, int SrcWidth,int SrcHeight,void *lpBits,BITMAPINFO *lpbmi,UINT iUsage,DWORD rop) { int iVar1; // WARNING: Could not recover jumptable at 0x00455787. Too many branches // WARNING: Treating indirect jump as call iVar1 = StretchDIBits(hdc,xDest,yDest,DestWidth,DestHeight,xSrc,ySrc,SrcWidth,SrcHeight,lpBits, lpbmi,iUsage,rop); return iVar1; } UINT __stdcall SetPaletteEntries(HPALETTE hpal,UINT iStart,UINT cEntries,PALETTEENTRY *pPalEntries) { UINT UVar1; // WARNING: Could not recover jumptable at 0x0045578d. Too many branches // WARNING: Treating indirect jump as call UVar1 = SetPaletteEntries(hpal,iStart,cEntries,pPalEntries); return UVar1; } HPALETTE __stdcall SelectPalette(HDC hdc,HPALETTE hPal,BOOL bForceBkgd) { HPALETTE pHVar1; // WARNING: Could not recover jumptable at 0x00455793. Too many branches // WARNING: Treating indirect jump as call pHVar1 = SelectPalette(hdc,hPal,bForceBkgd); return pHVar1; } HGDIOBJ __stdcall SelectObject(HDC hdc,HGDIOBJ h) { HGDIOBJ pvVar1; // WARNING: Could not recover jumptable at 0x00455799. Too many branches // WARNING: Treating indirect jump as call pvVar1 = SelectObject(hdc,h); return pvVar1; } MMRESULT __stdcall waveOutUnprepareHeader(HWAVEOUT hwo,LPWAVEHDR pwh,UINT cbwh) { MMRESULT MVar1; // WARNING: Could not recover jumptable at 0x0045579f. Too many branches // WARNING: Treating indirect jump as call MVar1 = waveOutUnprepareHeader(hwo,pwh,cbwh); return MVar1; } MMRESULT __stdcall waveOutRestart(HWAVEOUT hwo) { MMRESULT MVar1; // WARNING: Could not recover jumptable at 0x004557a5. Too many branches // WARNING: Treating indirect jump as call MVar1 = waveOutRestart(hwo); return MVar1; } MMRESULT __stdcall waveOutReset(HWAVEOUT hwo) { MMRESULT MVar1; // WARNING: Could not recover jumptable at 0x004557ab. Too many branches // WARNING: Treating indirect jump as call MVar1 = waveOutReset(hwo); return MVar1; } MMRESULT __stdcall waveOutPrepareHeader(HWAVEOUT hwo,LPWAVEHDR pwh,UINT cbwh) { MMRESULT MVar1; // WARNING: Could not recover jumptable at 0x004557b1. Too many branches // WARNING: Treating indirect jump as call MVar1 = waveOutPrepareHeader(hwo,pwh,cbwh); return MVar1; } MMRESULT __stdcall waveOutPause(HWAVEOUT hwo) { MMRESULT MVar1; // WARNING: Could not recover jumptable at 0x004557b7. Too many branches // WARNING: Treating indirect jump as call MVar1 = waveOutPause(hwo); return MVar1; } MMRESULT __stdcall waveOutOpen(LPHWAVEOUT phwo,UINT uDeviceID,LPCWAVEFORMATEX pwfx,DWORD_PTR dwCallback, DWORD_PTR dwInstance,DWORD fdwOpen) { MMRESULT MVar1; // WARNING: Could not recover jumptable at 0x004557bd. Too many branches // WARNING: Treating indirect jump as call MVar1 = waveOutOpen(phwo,uDeviceID,pwfx,dwCallback,dwInstance,fdwOpen); return MVar1; } UINT __stdcall waveOutGetNumDevs(void) { UINT UVar1; // WARNING: Could not recover jumptable at 0x004557c3. Too many branches // WARNING: Treating indirect jump as call UVar1 = waveOutGetNumDevs(); return UVar1; } MMRESULT __stdcall waveOutGetErrorTextA(MMRESULT mmrError,LPSTR pszText,UINT cchText) { MMRESULT MVar1; // WARNING: Could not recover jumptable at 0x004557c9. Too many branches // WARNING: Treating indirect jump as call MVar1 = waveOutGetErrorTextA(mmrError,pszText,cchText); return MVar1; } MMRESULT __stdcall waveOutClose(HWAVEOUT hwo) { MMRESULT MVar1; // WARNING: Could not recover jumptable at 0x004557cf. Too many branches // WARNING: Treating indirect jump as call MVar1 = waveOutClose(hwo); return MVar1; } DWORD __stdcall timeGetTime(void) { DWORD DVar1; // WARNING: Could not recover jumptable at 0x004557d5. Too many branches // WARNING: Treating indirect jump as call DVar1 = timeGetTime(); return DVar1; } MMRESULT __stdcall timeGetDevCaps(LPTIMECAPS ptc,UINT cbtc) { MMRESULT MVar1; // WARNING: Could not recover jumptable at 0x004557db. Too many branches // WARNING: Treating indirect jump as call MVar1 = timeGetDevCaps(ptc,cbtc); return MVar1; } MMRESULT __stdcall timeEndPeriod(UINT uPeriod) { MMRESULT MVar1; // WARNING: Could not recover jumptable at 0x004557e1. Too many branches // WARNING: Treating indirect jump as call MVar1 = timeEndPeriod(uPeriod); return MVar1; } MMRESULT __stdcall timeBeginPeriod(UINT uPeriod) { MMRESULT MVar1; // WARNING: Could not recover jumptable at 0x004557e7. Too many branches // WARNING: Treating indirect jump as call MVar1 = timeBeginPeriod(uPeriod); return MVar1; } UINT __stdcall midiOutGetNumDevs(void) { UINT UVar1; // WARNING: Could not recover jumptable at 0x004557ed. Too many branches // WARNING: Treating indirect jump as call UVar1 = midiOutGetNumDevs(); return UVar1; } MMRESULT __stdcall midiOutGetDevCapsA(UINT_PTR uDeviceID,LPMIDIOUTCAPSA pmoc,UINT cbmoc) { MMRESULT MVar1; // WARNING: Could not recover jumptable at 0x004557f3. Too many branches // WARNING: Treating indirect jump as call MVar1 = midiOutGetDevCapsA(uDeviceID,pmoc,cbmoc); return MVar1; } MMRESULT __stdcall waveOutWrite(HWAVEOUT hwo,LPWAVEHDR pwh,UINT cbwh) { MMRESULT MVar1; // WARNING: Could not recover jumptable at 0x004557f9. Too many branches // WARNING: Treating indirect jump as call MVar1 = waveOutWrite(hwo,pwh,cbwh); return MVar1; } MCIERROR __stdcall mciSendCommandA(MCIDEVICEID mciId,UINT uMsg,DWORD_PTR dwParam1,DWORD_PTR dwParam2) { MCIERROR MVar1; // WARNING: Could not recover jumptable at 0x004557ff. Too many branches // WARNING: Treating indirect jump as call MVar1 = mciSendCommandA(mciId,uMsg,dwParam1,dwParam2); return MVar1; }