summaryrefslogtreecommitdiff
path: root/src/DynamicLink.cpp
blob: bee87c9b98e5986e5087b925fe60ccffd66bb371 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
//
// Generated By: dol2asm
// Translation Unit: DynamicLink
//

#include "DynamicLink.h"
#include "dol2asm.h"
#include "dolphin/types.h"

//
// Types:
//

struct mDoDvdThd_callback_c {
    /* 80015C74 */ void create(void* (*)(void*), void*);
};

struct JKRHeap {
    /* 802CE474 */ void alloc(u32, int, JKRHeap*);
    /* 802CE500 */ void free(void*, JKRHeap*);
    /* 802CE624 */ void resize(void*, u32, JKRHeap*);
    /* 802CE6B0 */ void getSize(void*, JKRHeap*);
};

struct JKRFileLoader {
    /* 802D43A0 */ void detachResource(void*, JKRFileLoader*);
};

struct JKRFileCache {
    /* 802D49B4 */ void mount(char const*, JKRHeap*, char const*);
};

struct JKRExpandSwitch {};

struct JKRDvdRipper {
    struct EAllocDirection {};

    /* 802D9B98 */ void loadToMainRAM(char const*, u8*, JKRExpandSwitch, u32, JKRHeap*,
                                      JKRDvdRipper::EAllocDirection, u32, int*, u32*);
};

struct JKRArchive {
    struct EMountMode {};

    struct EMountDirection {};

    /* 802D57E4 */ void mount(char const*, JKRArchive::EMountMode, JKRHeap*,
                              JKRArchive::EMountDirection);
    /* 802D5B38 */ void getGlbResource(u32, char const*, JKRArchive*);
};

struct DynamicModuleControlBase {
    /* 800188DC */ bool getModuleName() const;
    /* 802621CC */ ~DynamicModuleControlBase();
    /* 80262284 */ DynamicModuleControlBase();
    /* 802622D0 */ void link();
    /* 80262364 */ void unlink();
    /* 802623EC */ void load_async();
    /* 8026242C */ void force_unlink();
    /* 80262470 */ void dump();
    /* 802631D4 */ bool do_link();
    /* 802631DC */ bool do_load();
    /* 802631E4 */ bool do_unload();
    /* 802631EC */ bool do_unlink();
    /* 802631F4 */ bool do_load_async();
    /* 802631FC */ void dump2();
    /* 80263200 */ void getModuleTypeString() const;
    /* 80263210 */ bool getModuleSize() const;

    static u8 mFirst[4];
    static u8 mLast[4];
};

struct DynamicModuleControl {
    /* 800188E4 */ ~DynamicModuleControl();
    /* 80262660 */ DynamicModuleControl(char const*);
    /* 802626D0 */ void mountCallback(void*);
    /* 8026275C */ void initialize();
    /* 80262794 */ void callback(void*);
    /* 802627E8 */ void do_load();
    /* 80262AFC */ void do_load_async();
    /* 80262BC4 */ void do_unload();
    /* 80262C0C */ void dump2();
    /* 80262C5C */ void do_link();
    /* 80262F28 */ void do_unlink();
    /* 80263000 */ void getModuleSize() const;
    /* 80263070 */ void getModuleTypeString() const;
    /* 80263218 */ void getModuleName() const;

    static u8 sAllocBytes[4];
    static u8 sArchive[4];
    static u8 sFileCache[4 + 4 /* padding */];
};

//
// Forward References:
//

extern "C" void __dt__24DynamicModuleControlBaseFv();
extern "C" void __ct__24DynamicModuleControlBaseFv();
extern "C" void link__24DynamicModuleControlBaseFv();
extern "C" void unlink__24DynamicModuleControlBaseFv();
extern "C" void load_async__24DynamicModuleControlBaseFv();
extern "C" void force_unlink__24DynamicModuleControlBaseFv();
extern "C" void dump__24DynamicModuleControlBaseFv();
extern "C" void __ct__20DynamicModuleControlFPCc();
extern "C" void mountCallback__20DynamicModuleControlFPv();
extern "C" void initialize__20DynamicModuleControlFv();
extern "C" void callback__20DynamicModuleControlFPv();
extern "C" static void calcSum2__FPCUsUl();
extern "C" void do_load__20DynamicModuleControlFv();
extern "C" void do_load_async__20DynamicModuleControlFv();
extern "C" void do_unload__20DynamicModuleControlFv();
extern "C" void dump2__20DynamicModuleControlFv();
extern "C" void do_link__20DynamicModuleControlFv();
extern "C" void do_unlink__20DynamicModuleControlFv();
extern "C" void getModuleSize__20DynamicModuleControlCFv();
extern "C" void getModuleTypeString__20DynamicModuleControlCFv();
extern "C" void ModuleProlog();
extern "C" void ModuleEpilog();
extern "C" void ModuleUnresolved();
extern "C" void ModuleConstructorsX();
extern "C" void ModuleDestructorsX();
extern "C" bool do_link__24DynamicModuleControlBaseFv();
extern "C" bool do_load__24DynamicModuleControlBaseFv();
extern "C" bool do_unload__24DynamicModuleControlBaseFv();
extern "C" bool do_unlink__24DynamicModuleControlBaseFv();
extern "C" bool do_load_async__24DynamicModuleControlBaseFv();
extern "C" void dump2__24DynamicModuleControlBaseFv();
extern "C" void getModuleTypeString__24DynamicModuleControlBaseCFv();
extern "C" bool getModuleSize__24DynamicModuleControlBaseCFv();
extern "C" void getModuleName__20DynamicModuleControlCFv();
extern "C" extern char const* const DynamicLink__stringBase0;
extern "C" u8 mFirst__24DynamicModuleControlBase[4];
extern "C" u8 mLast__24DynamicModuleControlBase[4];
extern "C" u8 sAllocBytes__20DynamicModuleControl[4];
extern "C" u8 sArchive__20DynamicModuleControl[4];
extern "C" u8 sFileCache__20DynamicModuleControl[4 + 4 /* padding */];

//
// External References:
//

extern "C" void OSReport();
extern "C" void OSReport_Error();
extern "C" void OSReport_Warning();
extern "C" void mDoExt_getArchiveHeap__Fv();
extern "C" void create__20mDoDvdThd_callback_cFPFPv_PvPv();
extern "C" bool getModuleName__24DynamicModuleControlBaseCFv();
extern "C" void __dt__20DynamicModuleControlFv();
extern "C" void alloc__7JKRHeapFUliP7JKRHeap();
extern "C" void free__7JKRHeapFPvP7JKRHeap();
extern "C" void resize__7JKRHeapFPvUlP7JKRHeap();
extern "C" void getSize__7JKRHeapFPvP7JKRHeap();
extern "C" void __dl__FPv();
extern "C" void detachResource__13JKRFileLoaderFPvP13JKRFileLoader();
extern "C" void mount__12JKRFileCacheFPCcP7JKRHeapPCc();
extern "C" void
mount__10JKRArchiveFPCcQ210JKRArchive10EMountModeP7JKRHeapQ210JKRArchive15EMountDirection();
extern "C" void getGlbResource__10JKRArchiveFUlPCcP10JKRArchive();
extern "C" void
loadToMainRAM__12JKRDvdRipperFPCcPUc15JKRExpandSwitchUlP7JKRHeapQ212JKRDvdRipper15EAllocDirectionUlPiPUl();
extern "C" void JUTReportConsole_f();
extern "C" void OSGetStackPointer();
extern "C" void OSLink();
extern "C" void OSLinkFixed();
extern "C" void OSUnlink();
extern "C" void OSGetTime();
extern "C" void _savegpr_26();
extern "C" void _savegpr_28();
extern "C" void _savegpr_29();
extern "C" void _restgpr_26();
extern "C" void _restgpr_28();
extern "C" void _restgpr_29();
extern "C" void snprintf();

//
// Declarations:
//

/* ############################################################################################## */
/* 8039A4A0-8039A4A0 026B00 0000+00 0/0 0/0 0/0 .rodata          @stringBase0 */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_8039A4A0 =
    "%08x DynamicModuleControlBase::unlink() mLinkCou"
    "nt id already zero.\n";
SECTION_DEAD static char const* const stringBase_8039A4E5 = "\nDynamicModuleControlBase::dump()\n";
SECTION_DEAD static char const* const stringBase_8039A508 = "Do  Lnk Size      Name\n";
SECTION_DEAD static char const* const stringBase_8039A520 = "(Null)";
SECTION_DEAD static char const* const stringBase_8039A527 = "%3d%3d%5.1f %05x %-4s %-24s ";
SECTION_DEAD static char const* const stringBase_8039A544 = "%3d%3d ???? ????? %-4s %-24s ";
SECTION_DEAD static char const* const stringBase_8039A562 = "\n";
SECTION_DEAD static char const* const stringBase_8039A564 = "TotalSize %6.2f %06x\n\n";
SECTION_DEAD static char const* const stringBase_8039A57B = "Base";
SECTION_DEAD static char const* const stringBase_8039A580 = "/rel/Final/Release";
SECTION_DEAD static char const* const stringBase_8039A593 = "RELS.arc";
SECTION_DEAD static char const* const stringBase_8039A59C =
    "マウント失敗ですが単にアーカイブを作ってないだけなら遅いだけです %s\n";
SECTION_DEAD static char const* const stringBase_8039A5E1 = "%s.rel";
SECTION_DEAD static char const* const stringBase_8039A5E8 = "/rel/Final/Release/%s.rel";
// MWCC ignores mapping of some japanese characters using the
// byte 0x5C (ASCII '\'). This is why this string is hex-encoded.
SECTION_DEAD static char const* const stringBase_8039A602 =
    "\x44\x79\x6E\x61\x6D\x69\x63\x4D\x6F\x64\x75\x6C\x65\x43\x6F\x6E\x74\x72\x6F\x6C\x3A\x3A\x64"
    "\x6F\x5F\x6C\x6F\x61\x64\x28\x29\x20\x83\x8A\x83\x5C\x81\x5B\x83\x58\x93\xC7\x82\xDD\x8D\x9E"
    "\x82\xDD"
    "\x8E\xB8\x94\x73\x20\x5B\x25\x73\x5D\x0A";
SECTION_DEAD static char const* const stringBase_8039A63D =
    "DynamicModuleControl::do_load() チェックサムエラー %04x %"
    "04x[%s]\n";
SECTION_DEAD static char const* const stringBase_8039A67F =
    "DynamicModuleControl::do_load_async() 非同期読み込みコール"
    "バック登録失敗 [%s]\n";
SECTION_DEAD static char const* const stringBase_8039A6CE = "%08x-%08x %08x %08x";
SECTION_DEAD static char const* const stringBase_8039A6E2 = "BSSメモリ確保失敗\n";
SECTION_DEAD static char const* const stringBase_8039A6F5 = "リンク失敗\n";
SECTION_DEAD static char const* const stringBase_8039A701 = "モジュールリサイズ(縮小)失敗\n";
SECTION_DEAD static char const* const stringBase_8039A71F = "BSSメモリ確保失敗 [%x]\n";
SECTION_DEAD static char const* const stringBase_8039A737 =
    "アンリンク失敗 mModule=%08x mBss=%08x\n";
SECTION_DEAD static char const* const stringBase_8039A75E = "????";
SECTION_DEAD static char const* const stringBase_8039A763 = "MEM";
SECTION_DEAD static char const* const stringBase_8039A767 = "ARAM";
SECTION_DEAD static char const* const stringBase_8039A76C = "DVD";
#pragma pop

/* 803C34B0-803C34C0 -00001 0010+00 1/1 0/0 0/0 .data            strings$4165 */
SECTION_DATA static void* strings[4] = {
    (void*)(((char*)&DynamicLink__stringBase0) + 0x2BE),
    (void*)(((char*)&DynamicLink__stringBase0) + 0x2C3),
    (void*)(((char*)&DynamicLink__stringBase0) + 0x2C7),
    (void*)(((char*)&DynamicLink__stringBase0) + 0x2CC),
};

/* 803C34C0-803C34F4 0205E0 0034+00 1/1 2/2 0/0 .data            __vt__20DynamicModuleControl */
SECTION_DATA extern void* __vt__20DynamicModuleControl[13] = {
    (void*)NULL /* RTTI */,
    (void*)NULL,
    (void*)__dt__20DynamicModuleControlFv,
    (void*)getModuleName__20DynamicModuleControlCFv,
    (void*)getModuleSize__20DynamicModuleControlCFv,
    (void*)getModuleTypeString__20DynamicModuleControlCFv,
    (void*)dump__24DynamicModuleControlBaseFv,
    (void*)dump2__20DynamicModuleControlFv,
    (void*)do_load__20DynamicModuleControlFv,
    (void*)do_load_async__20DynamicModuleControlFv,
    (void*)do_unload__20DynamicModuleControlFv,
    (void*)do_link__20DynamicModuleControlFv,
    (void*)do_unlink__20DynamicModuleControlFv,
};

/* 803C34F4-803C3528 020614 0034+00 2/2 0/0 0/0 .data            __vt__24DynamicModuleControlBase */
SECTION_DATA extern void* __vt__24DynamicModuleControlBase[13] = {
    (void*)NULL /* RTTI */,
    (void*)NULL,
    (void*)__dt__24DynamicModuleControlBaseFv,
    (void*)getModuleName__24DynamicModuleControlBaseCFv,
    (void*)getModuleSize__24DynamicModuleControlBaseCFv,
    (void*)getModuleTypeString__24DynamicModuleControlBaseCFv,
    (void*)dump__24DynamicModuleControlBaseFv,
    (void*)dump2__24DynamicModuleControlBaseFv,
    (void*)do_load__24DynamicModuleControlBaseFv,
    (void*)do_load_async__24DynamicModuleControlBaseFv,
    (void*)do_unload__24DynamicModuleControlBaseFv,
    (void*)do_link__24DynamicModuleControlBaseFv,
    (void*)do_unlink__24DynamicModuleControlBaseFv,
};

/* 80451138-8045113C 000638 0004+00 3/3 0/0 0/0 .sbss            mFirst__24DynamicModuleControlBase
 */
u8 DynamicModuleControlBase::mFirst[4];

/* 8045113C-80451140 00063C 0004+00 2/2 0/0 0/0 .sbss            mLast__24DynamicModuleControlBase
 */
u8 DynamicModuleControlBase::mLast[4];

/* 802621CC-80262284 25CB0C 00B8+00 1/0 2/2 0/0 .text            __dt__24DynamicModuleControlBaseFv
 */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm DynamicModuleControlBase::~DynamicModuleControlBase() {
    nofralloc
#include "asm/DynamicLink/__dt__24DynamicModuleControlBaseFv.s"
}
#pragma pop

/* 80262284-802622D0 25CBC4 004C+00 1/1 0/0 0/0 .text            __ct__24DynamicModuleControlBaseFv
 */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm DynamicModuleControlBase::DynamicModuleControlBase() {
    nofralloc
#include "asm/DynamicLink/__ct__24DynamicModuleControlBaseFv.s"
}
#pragma pop

/* 802622D0-80262364 25CC10 0094+00 0/0 2/2 0/0 .text            link__24DynamicModuleControlBaseFv
 */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void DynamicModuleControlBase::link() {
    nofralloc
#include "asm/DynamicLink/link__24DynamicModuleControlBaseFv.s"
}
#pragma pop

/* 80262364-802623EC 25CCA4 0088+00 0/0 1/1 0/0 .text unlink__24DynamicModuleControlBaseFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void DynamicModuleControlBase::unlink() {
    nofralloc
#include "asm/DynamicLink/unlink__24DynamicModuleControlBaseFv.s"
}
#pragma pop

/* 802623EC-8026242C 25CD2C 0040+00 0/0 1/1 0/0 .text load_async__24DynamicModuleControlBaseFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void DynamicModuleControlBase::load_async() {
    nofralloc
#include "asm/DynamicLink/load_async__24DynamicModuleControlBaseFv.s"
}
#pragma pop

/* 8026242C-80262470 25CD6C 0044+00 1/1 0/0 0/0 .text force_unlink__24DynamicModuleControlBaseFv
 */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void DynamicModuleControlBase::force_unlink() {
    nofralloc
#include "asm/DynamicLink/force_unlink__24DynamicModuleControlBaseFv.s"
}
#pragma pop

/* ############################################################################################## */
/* 80455008-80455010 003608 0004+04 1/1 0/0 0/0 .sdata2          @3772 */
SECTION_SDATA2 static f32 lit_3772[1 + 1 /* padding */] = {
    0.0009765625f,
    /* padding */
    0.0f,
};

/* 80455010-80455018 003610 0008+00 1/1 0/0 0/0 .sdata2          @3774 */
SECTION_SDATA2 static f64 lit_3774 = 4503599627370496.0 /* cast u32 to float */;

/* 80262470-80262660 25CDB0 01F0+00 2/0 2/2 0/0 .text            dump__24DynamicModuleControlBaseFv
 */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void DynamicModuleControlBase::dump() {
    nofralloc
#include "asm/DynamicLink/dump__24DynamicModuleControlBaseFv.s"
}
#pragma pop

/* 80262660-802626D0 25CFA0 0070+00 0/0 2/2 0/0 .text            __ct__20DynamicModuleControlFPCc */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm DynamicModuleControl::DynamicModuleControl(char const* param_0) {
    nofralloc
#include "asm/DynamicLink/__ct__20DynamicModuleControlFPCc.s"
}
#pragma pop

/* ############################################################################################## */
/* 80451140-80451144 000640 0004+00 3/3 0/0 0/0 .sbss            sAllocBytes__20DynamicModuleControl
 */
u8 DynamicModuleControl::sAllocBytes[4];

/* 80451144-80451148 000644 0004+00 3/3 0/0 0/0 .sbss            sArchive__20DynamicModuleControl */
u8 DynamicModuleControl::sArchive[4];

/* 80451148-80451150 000648 0004+04 3/3 0/0 0/0 .sbss            sFileCache__20DynamicModuleControl
 */
u8 DynamicModuleControl::sFileCache[4 + 4 /* padding */];

/* 802626D0-8026275C 25D010 008C+00 1/1 0/0 0/0 .text mountCallback__20DynamicModuleControlFPv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void DynamicModuleControl::mountCallback(void* param_0) {
    nofralloc
#include "asm/DynamicLink/mountCallback__20DynamicModuleControlFPv.s"
}
#pragma pop

/* 8026275C-80262794 25D09C 0038+00 0/0 1/1 0/0 .text initialize__20DynamicModuleControlFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void DynamicModuleControl::initialize() {
    nofralloc
#include "asm/DynamicLink/initialize__20DynamicModuleControlFv.s"
}
#pragma pop

/* 80262794-802627C0 25D0D4 002C+00 1/1 0/0 0/0 .text            callback__20DynamicModuleControlFPv
 */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void DynamicModuleControl::callback(void* param_0) {
    nofralloc
#include "asm/DynamicLink/callback__20DynamicModuleControlFPv.s"
}
#pragma pop

/* 802627C0-802627E8 25D100 0028+00 1/1 0/0 0/0 .text            calcSum2__FPCUsUl */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void calcSum2(u16 const* param_0, u32 param_1) {
    nofralloc
#include "asm/DynamicLink/calcSum2__FPCUsUl.s"
}
#pragma pop

/* 802627E8-80262AFC 25D128 0314+00 1/0 0/0 0/0 .text            do_load__20DynamicModuleControlFv
 */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void DynamicModuleControl::do_load() {
    nofralloc
#include "asm/DynamicLink/do_load__20DynamicModuleControlFv.s"
}
#pragma pop

/* 80262AFC-80262BC4 25D43C 00C8+00 1/0 0/0 0/0 .text do_load_async__20DynamicModuleControlFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void DynamicModuleControl::do_load_async() {
    nofralloc
#include "asm/DynamicLink/do_load_async__20DynamicModuleControlFv.s"
}
#pragma pop

/* 80262BC4-80262C0C 25D504 0048+00 1/0 0/0 0/0 .text            do_unload__20DynamicModuleControlFv
 */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void DynamicModuleControl::do_unload() {
    nofralloc
#include "asm/DynamicLink/do_unload__20DynamicModuleControlFv.s"
}
#pragma pop

/* 80262C0C-80262C5C 25D54C 0050+00 1/0 0/0 0/0 .text            dump2__20DynamicModuleControlFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void DynamicModuleControl::dump2() {
    nofralloc
#include "asm/DynamicLink/dump2__20DynamicModuleControlFv.s"
}
#pragma pop

/* 80262C5C-80262F28 25D59C 02CC+00 1/0 0/0 0/0 .text            do_link__20DynamicModuleControlFv
 */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void DynamicModuleControl::do_link() {
    nofralloc
#include "asm/DynamicLink/do_link__20DynamicModuleControlFv.s"
}
#pragma pop

/* 80262F28-80263000 25D868 00D8+00 1/0 0/0 0/0 .text            do_unlink__20DynamicModuleControlFv
 */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void DynamicModuleControl::do_unlink() {
    nofralloc
#include "asm/DynamicLink/do_unlink__20DynamicModuleControlFv.s"
}
#pragma pop

/* 80263000-80263070 25D940 0070+00 1/0 0/0 0/0 .text getModuleSize__20DynamicModuleControlCFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void DynamicModuleControl::getModuleSize() const {
    nofralloc
#include "asm/DynamicLink/getModuleSize__20DynamicModuleControlCFv.s"
}
#pragma pop

/* 80263070-80263088 25D9B0 0018+00 1/0 0/0 0/0 .text
 * getModuleTypeString__20DynamicModuleControlCFv               */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void DynamicModuleControl::getModuleTypeString() const {
    nofralloc
#include "asm/DynamicLink/getModuleTypeString__20DynamicModuleControlCFv.s"
}
#pragma pop

/* 80263088-8026308C 25D9C8 0004+00 0/0 0/0 756/756 .text            ModuleProlog */
void ModuleProlog() {
    /* empty function */
}

/* 8026308C-80263090 25D9CC 0004+00 0/0 0/0 756/756 .text            ModuleEpilog */
void ModuleEpilog() {
    /* empty function */
}

/* ############################################################################################## */
/* 8039A4A0-8039A4A0 026B00 0000+00 0/0 0/0 0/0 .rodata          @stringBase0 */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_8039A770 =
    "\nError: リンクされていない関数が呼び出されました.\n";
SECTION_DEAD static char const* const stringBase_8039A7A3 = "Address:      Back Chain    LR Save\n";
SECTION_DEAD static char const* const stringBase_8039A7C8 = "0x%08x:   0x%08x    0x%08x\n";
/* @stringBase0 padding */
SECTION_DEAD static char const* const pad_8039A7E4 = "\0\0\0";
#pragma pop

/* 80263090-8026314C 25D9D0 00BC+00 0/0 0/0 757/757 .text            ModuleUnresolved */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void ModuleUnresolved() {
    nofralloc
#include "asm/DynamicLink/ModuleUnresolved.s"
}
#pragma pop

/* 8026314C-80263190 25DA8C 0044+00 0/0 0/0 757/757 .text            ModuleConstructorsX */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void ModuleConstructorsX() {
    nofralloc
#include "asm/DynamicLink/ModuleConstructorsX.s"
}
#pragma pop

/* 80263190-802631D4 25DAD0 0044+00 0/0 0/0 757/757 .text            ModuleDestructorsX */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void ModuleDestructorsX() {
    nofralloc
#include "asm/DynamicLink/ModuleDestructorsX.s"
}
#pragma pop

/* 802631D4-802631DC 25DB14 0008+00 1/0 0/0 0/0 .text do_link__24DynamicModuleControlBaseFv */
bool DynamicModuleControlBase::do_link() {
    return true;
}

/* 802631DC-802631E4 25DB1C 0008+00 1/0 0/0 0/0 .text do_load__24DynamicModuleControlBaseFv */
bool DynamicModuleControlBase::do_load() {
    return true;
}

/* 802631E4-802631EC 25DB24 0008+00 1/0 0/0 0/0 .text do_unload__24DynamicModuleControlBaseFv */
bool DynamicModuleControlBase::do_unload() {
    return true;
}

/* 802631EC-802631F4 25DB2C 0008+00 1/0 0/0 0/0 .text do_unlink__24DynamicModuleControlBaseFv */
bool DynamicModuleControlBase::do_unlink() {
    return true;
}

/* 802631F4-802631FC 25DB34 0008+00 1/0 0/0 0/0 .text do_load_async__24DynamicModuleControlBaseFv
 */
bool DynamicModuleControlBase::do_load_async() {
    return true;
}

/* 802631FC-80263200 25DB3C 0004+00 1/0 0/0 0/0 .text            dump2__24DynamicModuleControlBaseFv
 */
void DynamicModuleControlBase::dump2() {
    /* empty function */
}

/* 80263200-80263210 25DB40 0010+00 1/0 0/0 0/0 .text
 * getModuleTypeString__24DynamicModuleControlBaseCFv           */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void DynamicModuleControlBase::getModuleTypeString() const {
    nofralloc
#include "asm/DynamicLink/getModuleTypeString__24DynamicModuleControlBaseCFv.s"
}
#pragma pop

/* 80263210-80263218 25DB50 0008+00 1/0 0/0 0/0 .text getModuleSize__24DynamicModuleControlBaseCFv
 */
bool DynamicModuleControlBase::getModuleSize() const {
    return false;
}

/* 80263218-80263220 25DB58 0008+00 1/0 0/0 0/0 .text getModuleName__20DynamicModuleControlCFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void DynamicModuleControl::getModuleName() const {
    nofralloc
#include "asm/DynamicLink/getModuleName__20DynamicModuleControlCFv.s"
}
#pragma pop

/* 8039A4A0-8039A4A0 026B00 0000+00 0/0 0/0 0/0 .rodata          @stringBase0 */