//
// Generated by dtk
// Translation Unit: c_dylink.o
//

#include "c/c_dylink.h"
#include "d/d_com_lib_game.h"
#include "d/d_procname.h"
#include "m_Do/m_Do_dvd_thread.h"
#include "m_Do/m_Do_ext.h"
#include "m_Do/m_Do_printf.h"
#include "JSystem/JUtility/JUTAssert.h"
#include "JSystem/JKernel/JKRFileCache.h"
#include "JSystem/JKernel/JKRExpHeap.h"
#include "JSystem/JKernel/JKRSolidHeap.h"
#include "DynamicLink.h"
#include "dolphin/OS/OS.h"
#include "MSL_C/string.h"

DynamicModuleControlBase * DMC[PROC_COUNT_e];
bool DMC_initialized = false;
BOOL cDyl_Initialized = false;
mDoDvdThd_callback_c * cDyl_DVD = NULL;

const DynamicNameTableEntry DynamicNameTable[] = {
    {PROC_ALLDIE,         "d_a_alldie"},
    {PROC_TAG_EVSW,       "d_a_tag_evsw"},
    {PROC_Obj_Swpush,     "d_a_obj_swpush"},
    {PROC_Obj_Swheavy,    "d_a_obj_swheavy"},
    {PROC_Obj_Swflat,     "d_a_obj_swflat"},
    {PROC_Obj_Swlight,    "d_a_obj_swlight"},
    {PROC_Obj_Swhammer,   "d_a_obj_swhammer"},
    {PROC_Obj_Quake,      "d_a_obj_quake"},
    {PROC_Obj_Drift,      "d_a_obj_drift"},
    {PROC_Tag_Volcano,    "d_a_tag_volcano"},
    {PROC_TAG_SO,         "d_a_tag_so"},
    {PROC_Obj_Pbco,       "d_a_obj_pbco"},
    {PROC_SEATAG,         "d_a_seatag"},
    {PROC_Obj_Tide,       "d_a_obj_tide"},
    {PROC_Hmlif,          "d_a_hmlif"},
    {PROC_SCENECHG,       "d_a_scene_change"},
    {PROC_Obj_Magmarock,  "d_a_obj_magmarock"},
    {PROC_Obj_Movebox,    "d_a_obj_movebox"},
    {PROC_Obj_Tribox,     "d_a_obj_tribox"},
    {PROC_Obj_Shelf,      "d_a_obj_shelf"},
    {PROC_Obj_Hlift,      "d_a_obj_hlift"},
    {PROC_Obj_Hami2,      "d_a_obj_hami2"},
    {PROC_Obj_Hami3,      "d_a_obj_hami3"},
    {PROC_Obj_Hami4,      "d_a_obj_hami4"},
    {PROC_Obj_Hbrf1,      "d_a_obj_hbrf1"},
    {PROC_Obj_Volcano,    "d_a_obj_volcano"},
    {PROC_Obj_Vmc,        "d_a_obj_vmc"},
    {PROC_Obj_Usovmc,     "d_a_obj_usovmc"},
    {PROC_Obj_Vfan,       "d_a_obj_vfan"},
    {PROC_Obj_Iceisland,  "d_a_obj_iceisland"},
    {PROC_Obj_Dragonhead, "d_a_obj_dragonhead"},
    {PROC_Obj_Pirateship, "d_a_obj_pirateship"},
    {PROC_Obj_Tousekiki,  "d_a_obj_tousekiki"},
    {PROC_Tag_Ret,        "d_a_tag_ret"},
    {PROC_Kaji,           "d_a_kaji"},
    {PROC_Canon,          "d_a_canon"},
    {PROC_MGBOARD,        "d_a_mgameboard"},
    {PROC_OBJ_CANON,      "d_a_obj_canon"},
    {PROC_OBJ_OTBLE,      "d_a_obj_otble"},
    {PROC_OBJ_WARPT,      "d_a_obj_warpt"},
    {PROC_OBJ_TORIPOST,   "d_a_obj_toripost"},
    {PROC_OBJ_IKADA,      "d_a_obj_ikada"},
    {PROC_OBJ_MJDOOR,     "d_a_obj_majyuu_door"},
    {PROC_OBJ_PFALL,      "d_a_obj_pfall"},
    {PROC_OBJ_HOLE,       "d_a_obj_hole"},
    {PROC_Obj_Stair,      "d_a_obj_stair"},
    {PROC_Obj_Lpalm,      "d_a_obj_lpalm"},
    {PROC_Obj_Mtest,      "d_a_obj_mtest"},
    {PROC_Obj_Mkie,       "d_a_obj_mkie"},
    {PROC_Obj_Mkiek,      "d_a_obj_mkiek"},
    {PROC_Obj_MknjD,      "d_a_obj_mknjd"},
    {PROC_Obj_Msdan,      "d_a_obj_msdan"},
    {PROC_Obj_MsdanSub,   "d_a_obj_msdan_sub"},
    {PROC_Obj_Msdan2,     "d_a_obj_msdan2"},
    {PROC_Obj_MsdanSub2,  "d_a_obj_msdan_sub2"},
    {PROC_Obj_Nest,       "d_a_obj_nest"},
    {PROC_Obj_Ojtree,     "d_a_obj_ojtree"},
    {PROC_Obj_Ospbox,     "d_a_obj_ospbox"},
    {PROC_Obj_Ladder,     "d_a_obj_ladder"},
    {PROC_Obj_Smplbg,     "d_a_obj_smplbg"},
    {PROC_Obj_Akabe,      "d_a_obj_akabe"},
    {PROC_Obj_Ashut,      "d_a_obj_ashut"},
    {PROC_BRIDGE,         "d_a_bridge"},
    {PROC_MSW,            "d_a_msw"},
    {PROC_MFLFT,          "d_a_mflft"},
    {PROC_KLFT,           "d_a_klft"},
    {PROC_ICE_LIFT,       "d_a_icelift"},
    {PROC_AMI_PROP,       "d_a_amiprop"},
    {PROC_PEDESTAL,       "d_a_pedestal"},
    {PROC_FLOOR,          "d_a_floor"},
    {PROC_KITA,           "d_a_kita"},
    {PROC_KOKIIE,         "d_a_kokiie"},
    {PROC_SHAND,          "d_a_shand"},
    {PROC_BITA,           "d_a_bita"},
    {PROC_SK,             "d_a_sk"},
    {PROC_SK2,            "d_a_sk2"},
    {PROC_SSK,            "d_a_ssk"},
    {PROC_WARPFLOWER,     "d_a_warpf"},
    {PROC_WARPFOUT,       "d_a_warpfout"},
    {PROC_WARPLIGHT,      "d_a_warpls"},
    {PROC_WARPHYRULE,     "d_a_warphr"},
    {PROC_WARPDEMO20,     "d_a_warpdm20"},
    {PROC_WARPGANON,      "d_a_warpgn"},
    {PROC_WARPMAJYUU,     "d_a_warpmj"},
    {PROC_Balancelift,    "d_a_obj_balancelift"},
    {PROC_SHUTTER,        "d_a_shutter"},
    {PROC_SHUTTER2,       "d_a_shutter2"},
    {PROC_WINDMILL,       "d_a_windmill"},
    {PROC_MBDOOR,         "d_a_mbdoor"},
    {PROC_NPC_DE1,        "d_a_npc_de1"},
    {PROC_NPC_NZ,         "d_a_npc_nz"},
    {PROC_NPC_SO,         "d_a_npc_so"},
    {PROC_FM,             "d_a_fm"},
    {PROC_LEAF_LIFT,      "d_a_leaflift"},
    {PROC_Obj_Roten,      "d_a_obj_roten"},
    {PROC_TOGE,           "d_a_toge"},
    {PROC_Obj_Ferris,     "d_a_obj_ferris"},
    {PROC_Obj_Xfuta,      "d_a_obj_xfuta"},
    {PROC_Obj_Gaship,     "d_a_obj_gaship"},
    {PROC_Obj_Rforce,     "d_a_obj_rforce"},
    {PROC_Obj_Gaship2,    "d_a_obj_gaship2"},
    {PROC_Obj_Light,      "d_a_obj_light"},
    {PROC_Obj_Homen,      "d_a_obj_homen"},
    {PROC_Obj_Homensmk,   "d_a_obj_homensmoke"},
    {PROC_Obj_Ftree,      "d_a_obj_ftree"},
    {PROC_Obj_Vds,        "d_a_obj_Vds"},
    {PROC_Obj_Vyasi,      "d_a_obj_vyasi"},
    {PROC_Obj_Ajav,       "d_a_obj_ajav"},
    {PROC_Obj_Trap,       "d_a_obj_trap"},
    {PROC_Obj_Hha,        "d_a_obj_hha"},
    {PROC_Obj_Htetu1,     "d_a_obj_htetu1"},
    {PROC_Obj_Gnntakis,   "d_a_obj_gnndemotakis"},
    {PROC_Obj_Gnntakie,   "d_a_obj_gnndemotakie"},
    {PROC_Obj_Gnnbtaki,   "d_a_obj_gnnbtltaki"},
    {PROC_Obj_Rcloud,     "d_a_obj_rcloud"},
    {PROC_Obj_Gryw00,     "d_a_obj_gryw00"},
    {PROC_Obj_AjavW,      "d_a_obj_AjavW"},
    {PROC_Obj_Leaves,     "d_a_obj_leaves"},
    {PROC_Obj_YLzou,      "d_a_obj_YLzou"},
    {PROC_Obj_Gbed,       "d_a_obj_ganonbed"},
    {PROC_Obj_Vteng,      "d_a_obj_Vteng"},
    {PROC_Obj_Hfuck1,     "d_a_obj_hfuck1"},
    {PROC_Obj_Ohatch,     "d_a_obj_ohatch"},
    {PROC_Obj_Hcbh,       "d_a_obj_hcbh"},
    {PROC_Obj_Ygush00,    "d_a_obj_Ygush00"},
    {PROC_Obj_Bscurtain,  "d_a_obj_bscurtain"},
    {PROC_Obj_Shmrgrd,    "d_a_obj_shmrgrd"},
    {PROC_Obj_Eayogn,     "d_a_obj_eayogn"},
    {PROC_Obj_Vmsms,      "d_a_obj_vmsms"},
    {PROC_Obj_Vmsdz,      "d_a_obj_vmsdz"},
    {PROC_Ygcwp,          "d_a_ygcwp"},
    {PROC_Obj_Vgnfd,      "d_a_obj_vgnfd"},
    {PROC_Obj_Kanoke,     "d_a_obj_kanoke"},
    {PROC_Obj_Eskban,     "d_a_obj_eskban"},
    {PROC_Obj_Ekskz,      "d_a_obj_ekskz"},
    {PROC_Obj_Ebomzo,     "d_a_obj_ebomzo"},
    {PROC_Obj_Kanat,      "d_a_obj_kanat"},
    {PROC_Obj_Aygr,       "d_a_obj_aygr"},
    {PROC_SHIP,           "d_a_ship"},
    {PROC_Obj_Jump,       "d_a_obj_jump"},
    {PROC_NPC_MK,         "d_a_npc_mk"},
    {PROC_SAIL,           "d_a_sail"},
    {PROC_PIRATE_FLAG,    "d_a_pirate_flag"},
    {PROC_MAJUU_FLAG,     "d_a_majuu_flag"},
    {PROC_Tori_Flag,      "d_a_tori_flag"},
    {PROC_Sie_Flag,       "d_a_sie_flag"},
    {PROC_SYAN,           "d_a_syan"},
    {PROC_AYUSH,          "d_a_ghostship"},
    {PROC_OSHIP,          "d_a_oship"},
    {PROC_RECTANGLE,      "d_a_rectangle"},
    {PROC_BB,             "d_a_bb"},
    {PROC_KANBAN,         "d_a_kanban"},
    {PROC_HITOBJ,         "d_a_hitobj"},
    {PROC_KT,             "d_a_kt"},
    {PROC_EP,             "d_a_ep"},
    {PROC_LAMP,           "d_a_lamp"},
    {PROC_FF,             "d_a_ff"},
    {PROC_MO2,            "d_a_mo2"},
    {PROC_BK,             "d_a_bk"},
    {PROC_ST,             "d_a_st"},
    {PROC_TN,             "d_a_tn"},
    {PROC_MANT,           "d_a_mant"},
    {PROC_KANTERA,        "d_a_kantera"},
    {PROC_KAMOME,         "d_a_kamome"},
    {PROC_NPC_KAM,        "d_a_npc_kamome"},
    {PROC_WBIRD,          "d_a_wbird"},
    {PROC_DEMO_KMM,       "d_a_demo_kmm"},
    {PROC_NZ,             "d_a_nz"},
    {PROC_NZG,            "d_a_nzg"},
    {PROC_KN,             "d_a_kn"},
    {PROC_DEMO_DK,        "d_a_demo_dk"},
    {PROC_AM,             "d_a_am"},
    {PROC_AM2,            "d_a_am2"},
    {PROC_GM,             "d_a_gm"},
    {PROC_KS,             "d_a_ks"},
    {PROC_CC,             "d_a_cc"},
    {PROC_BL,             "d_a_bl"},
    {PROC_WZ,             "d_a_wz"},
    {PROC_PH,             "d_a_ph"},
    {PROC_PZ,             "d_a_pz"},
    {PROC_BPW,            "d_a_bpw"},
    {PROC_PW,             "d_a_pw"},
    {PROC_JBO,            "d_a_jbo"},
    {PROC_BO,             "d_a_bo"},
    {PROC_KI,             "d_a_ki"},
    {PROC_MT,             "d_a_mt"},
    {PROC_BWD,            "d_a_bwd"},
    {PROC_BWDS,           "d_a_bwds"},
    {PROC_BWDG,           "d_a_bwdg"},
    {PROC_KB,             "d_a_kb"},
    {PROC_DR,             "d_a_dr"},
    {PROC_DR2,            "d_a_dr2"},
    {PROC_RD,             "d_a_rd"},
    {PROC_DAIOCTA,        "d_a_daiocta"},
    {PROC_DAIOCTA_EYE,    "d_a_daiocta_eye"},
    {PROC_OQ,             "d_a_oq"},
    {PROC_GY,             "d_a_gy"},
    {PROC_GY_CTRL,        "d_a_gy_ctrl"},
    {PROC_GY_CTRLB,       "d_a_gy_ctrl"},
    {PROC_Hot_Floor,      "d_a_hot_floor"},
    {PROC_Beam,           "d_a_beam"},
    {PROC_Bemos,          "d_a_obj_bemos"},
    {PROC_BTD,            "d_a_btd"},
    {PROC_BMD,            "d_a_bmd"},
    {PROC_BMDHAND,        "d_a_bmdhand"},
    {PROC_BMDFOOT,        "d_a_bmdfoot"},
    {PROC_DK,             "d_a_dk"},
    {PROC_BDK,            "d_a_bdk"},
    {PROC_BDKOBJ,         "d_a_bdkobj"},
    {PROC_BST,            "d_a_bst"},
    {PROC_FGANON,         "d_a_fganon"},
    {PROC_FGMAHOU,        "d_a_fgmahou"},
    {PROC_BGN,            "d_a_bgn"},
    {PROC_BGN2,           "d_a_bgn2"},
    {PROC_BGN3,           "d_a_bgn3"},
    {PROC_GND,            "d_a_gnd"},
    {PROC_PT,             "d_a_pt"},
    {PROC_SWTDOOR,        "d_a_swtdoor"},
    {PROC_MOZO,           "d_a_mozo"},
    {PROC_KUI,            "d_a_kui"},
    {PROC_SS,             "d_a_ss"},
    {PROC_SSS,            "d_a_sss"},
    {PROC_SITEM,          "d_a_sitem"},
    {PROC_MACHINE,        "d_a_machine"},
    {PROC_BOSSITEM,       "d_a_boss_item"},
    {PROC_Demo_Item,      "d_a_demo_item"},
    {PROC_RACEITEM,       "d_a_race_item"},
    {PROC_ShopItem,       "d_a_shop_item"},
    {PROC_DEKU_ITEM,      "d_a_deku_item"},
    {PROC_Obj_Paper,      "d_a_obj_paper"},
    {PROC_Obj_Demo_Barrel,"d_a_obj_demo_barrel"},
    {PROC_Obj_Dmgroom,    "d_a_obj_dmgroom"},
    {PROC_Obj_Doguu,      "d_a_obj_doguu"},
    {PROC_Obj_Wood,       "d_a_obj_wood"},
    {PROC_Obj_Flame,      "d_a_obj_flame"},
    {PROC_Obj_Buoyrace,   "d_a_obj_buoyrace"},
    {PROC_Obj_Coming,     "d_a_obj_coming"},
    {PROC_Coming2,        "d_a_coming2"},
    {PROC_Coming3,        "d_a_coming3"},
    {PROC_Obj_Mmrr,       "d_a_obj_mmrr"},
    {PROC_Obj_Pbka,       "d_a_obj_pbka"},
    {PROC_Obj_Plant,      "d_a_obj_plant"},
    {PROC_Obj_Gtaki,      "d_a_obj_gtaki"},
    {PROC_Obj_Yboil,      "d_a_obj_Yboil"},
    {PROC_Obj_Rflw,       "d_a_obj_rflw"},
    {PROC_Obj_Table,      "d_a_obj_table"},
    {PROC_Obj_Tenmado,    "d_a_obj_tenmado"},
    {PROC_Obj_Cafelmp,    "d_a_obj_cafelmp"},
    {PROC_Obj_Apzl,       "d_a_obj_apzl"},
    {PROC_Obj_Adnno,      "d_a_obj_adnno"},
    {PROC_Obj_Auzu,       "d_a_obj_auzu"},
    {PROC_Obj_Gong,       "d_a_obj_gong"},
    {PROC_Obj_Barrier,    "d_a_obj_barrier"},
    {PROC_Obj_Firewall,   "d_a_obj_firewall"},
    {PROC_Obj_TnTrap,     "d_a_obj_tntrap"},
    {PROC_Obj_Monument,   "d_a_obj_monument"},
    {PROC_Obj_Tapestry,   "d_a_obj_tapestry"},
    {PROC_Obj_HSH,        "d_a_obj_hsehi1"},
    {PROC_Goal_Flag,      "d_a_goal_flag"},
    {PROC_TBOX,           "d_a_tbox"},
    {PROC_SBOX,           "d_a_sbox"},
    {PROC_BOMB_FLOWER,    "d_a_bflower"},
    {PROC_ACORN_LEAF,     "d_a_acorn_leaf"},
    {PROC_SWC00,          "d_a_swc00"},
    {PROC_FAN,            "d_a_fan"},
    {PROC_DOOR10,         "d_a_door10"},
    {PROC_DOOR12,         "d_a_door12"},
    {PROC_ATDOOR,         "d_a_atdoor"},
    {PROC_MDOOR,          "d_a_mdoor"},
    {PROC_KDDOOR,         "d_a_kddoor"},
    {PROC_KNOB00,         "d_a_knob00"},
    {PROC_MTOGE,          "d_a_mtoge"},
    {PROC_ANDSW0,         "d_a_andsw0"},
    {PROC_ANDSW2,         "d_a_andsw2"},
    {PROC_DAI,            "d_a_dai"},
    {PROC_SW_ATTACK,      "d_a_swattack"},
    {PROC_SW_ITEM,        "d_a_switem"},
    {PROC_SW_TACT,        "d_a_swtact"},
    {PROC_NPC_OS,         "d_a_npc_os"},
    {PROC_NPC_YM1,        "d_a_npc_ym1"},
    {PROC_NPC_YM2,        "d_a_npc_ym1"},
    {PROC_NPC_YW1,        "d_a_npc_yw1"},
    {PROC_NPC_JI1,        "d_a_npc_ji1"},
    {PROC_NPC_KO1,        "d_a_npc_ko1"},
    {PROC_NPC_KO2,        "d_a_npc_ko1"},
    {PROC_NPC_LS1,        "d_a_npc_ls1"},
    {PROC_NPC_P1,         "d_a_npc_p1"},
    {PROC_NPC_P2,         "d_a_npc_p2"},
    {PROC_NPC_SARACE,     "d_a_npc_sarace"},
    {PROC_NPC_TC,         "d_a_npc_tc"},
    {PROC_NPC_BM1,        "d_a_npc_bm1"},
    {PROC_NPC_BM2,        "d_a_npc_bm1"},
    {PROC_NPC_BM3,        "d_a_npc_bm1"},
    {PROC_NPC_BM4,        "d_a_npc_bm1"},
    {PROC_NPC_BM5,        "d_a_npc_bm1"},
    {PROC_NPC_OB1,        "d_a_npc_ob1"},
    {PROC_NPC_AJ1,        "d_a_npc_aj1"},
    {PROC_NPC_KM1,        "d_a_npc_km1"},
    {PROC_NPC_CB1,        "d_a_npc_cb1"},
    {PROC_NPC_BA1,        "d_a_npc_ba1"},
    {PROC_NPC_BJ1,        "d_a_npc_bj1"},
    {PROC_NPC_BJ2,        "d_a_npc_bj1"},
    {PROC_NPC_BJ3,        "d_a_npc_bj1"},
    {PROC_NPC_BJ4,        "d_a_npc_bj1"},
    {PROC_NPC_BJ5,        "d_a_npc_bj1"},
    {PROC_NPC_BJ6,        "d_a_npc_bj1"},
    {PROC_NPC_BJ7,        "d_a_npc_bj1"},
    {PROC_NPC_BJ8,        "d_a_npc_bj1"},
    {PROC_NPC_BJ9,        "d_a_npc_bj1"},
    {PROC_NPC_BS1,        "d_a_npc_bs1"},
    {PROC_NPC_BMCON1,     "d_a_npc_bmcon1"},
    {PROC_NPC_BMS1,       "d_a_npc_bms1"},
    {PROC_NPC_BMSW,       "d_a_npc_bmsw"},
    {PROC_NPC_BTSW,       "d_a_npc_btsw"},
    {PROC_NPC_BTSW2,      "d_a_npc_btsw2"},
    {PROC_NPC_DS1,        "d_a_npc_ds1"},
    {PROC_NPC_RSH1,       "d_a_npc_rsh1"},
    {PROC_NPC_KK1,        "d_a_npc_kk1"},
    {PROC_NPC_PM1,        "d_a_npc_pm1"},
    {PROC_NPC_KP1,        "d_a_npc_kp1"},
    {PROC_NPC_PF1,        "d_a_npc_pf1"},
    {PROC_NPC_GP1,        "d_a_npc_gp1"},
    {PROC_NPC_JB1,        "d_a_npc_jb1"},
    {PROC_NPC_KF1,        "d_a_npc_kf1"},
    {PROC_NPC_AUCTION,    "d_a_npc_auction"},
    {PROC_NPC_KG1,        "d_a_npc_kg1"},
    {PROC_NPC_KG2,        "d_a_npc_kg2"},
    {PROC_NPC_TT,         "d_a_npc_tt"},
    {PROC_NPC_HR,         "d_a_npc_hr"},
    {PROC_NPC_HO,         "d_a_npc_ho"},
    {PROC_NPC_MD,         "d_a_npc_md"},
    {PROC_NPC_UK,         "d_a_npc_uk"},
    {PROC_BIGELF,         "d_a_bigelf"},
    {PROC_NPC_CO1,        "d_a_npc_co1"},
    {PROC_NPC_ZK1,        "d_a_npc_zk1"},
    {PROC_NPC_ROTEN,      "d_a_npc_roten"},
    {PROC_NPC_PEOPLE,     "d_a_npc_people"},
    {PROC_NPC_GK1,        "d_a_npc_gk1"},
    {PROC_NPC_PHOTO,      "d_a_npc_photo"},
    {PROC_NPC_AC1,        "d_a_npc_ac1"},
    {PROC_NPC_HI1,        "d_a_npc_hi1"},
    {PROC_NPC_SV,         "d_a_npc_sv"},
    {PROC_NPC_MT,         "d_a_npc_mt"},
    {PROC_NPC_MN,         "d_a_npc_mn"},
    {PROC_NPC_AH,         "d_a_npc_ah"},
    {PROC_AUCTION,        "d_a_auction"},
    {PROC_KYTAG00,        "d_a_kytag00"},
    {PROC_KYTAG01,        "d_a_kytag01"},
    {PROC_KYTAG02,        "d_a_kytag02"},
    {PROC_KYTAG03,        "d_a_kytag03"},
    {PROC_KYTAG04,        "d_a_kytag04"},
    {PROC_KYTAG05,        "d_a_kytag05"},
    {PROC_KYTAG06,        "d_a_kytag06"},
    {PROC_KYTAG07,        "d_a_kytag07"},
    {PROC_WindTag,        "d_a_wind_tag"},
    {PROC_YOUGAN,         "d_a_yougan"},
    {PROC_Mmusic,         "d_a_mmusic"},
    {PROC_Komore,         "d_a_komore"},
    {PROC_Tpota,          "d_a_tpota"},
    {PROC_Obj_Itnak,      "d_a_obj_Itnak"},
    {PROC_Obj_Zouk,       "d_a_obj_zouK"},
    {PROC_Ykgr,           "d_a_ykgr"},
    {PROC_SAKU,           "d_a_saku"},
    {PROC_Salvage,        "d_a_salvage"},
    {PROC_SALVAGE_TBOX,   "d_a_salvage_tbox"},
    {PROC_Kmon,           "d_a_kmon"},
    {PROC_OBJ_FIGURE,     "d_a_obj_figure"},
    {PROC_OBJ_HAT,        "d_a_obj_hat"},
    {PROC_Lwood,          "d_a_lwood"},
    {PROC_Dummy,          "d_a_dummy"},
    {PROC_TAG_EVENT,      "d_a_tag_event"},
    {PROC_TAG_HINT,       "d_a_tag_hint"},
    {PROC_TAG_MSG,        "d_a_tag_msg"},
    {PROC_TAG_ETC,        "d_a_tag_etc"},
    {PROC_TAG_ISLAND,     "d_a_tag_island"},
    {PROC_TAG_KF1,        "d_a_tag_kf1"},
    {PROC_TAG_KK1,        "d_a_tag_kk1"},
    {PROC_TAG_PHOTO,      "d_a_tag_photo"},
    {PROC_TAG_KB_ITEM,    "d_a_tag_kb_item"},
    {PROC_TAG_MK,         "d_a_tag_mk"},
    {PROC_TAG_MDCB,       "d_a_tag_md_cb"},
    {PROC_TAG_BA1,        "d_a_tag_ba1"},
    {PROC_TagRock,        "d_a_fallrock_tag"},
    {PROC_FallRock,       "d_a_fallrock"},
    {PROC_SteamTag,       "d_a_steam_tag"},
    {PROC_Fire,           "d_a_fire"},
    {PROC_BRANCH,         "d_a_branch"},
    {PROC_NPC_ZL1,        "d_a_npc_zl1"},
    {PROC_WATERFALL,      "d_a_waterfall"},
    {PROC_LIGHTBRIDGE,    "d_a_lbridge"},
    {PROC_LIGHTSTAIR,     "d_a_lstair"},
    {PROC_WALL,           "d_a_wall"},
    {PROC_SW_PROPELLER,   "d_a_swpropeller"},
    {PROC_IKARI,          "d_a_ikari"},
    {PROC_AGBSW0,         "d_a_agbsw0"},
    {PROC_MAGMA,          "d_a_magma"},
    {PROC_GRASS,          "d_a_grass"},
    {PROC_Obj_Tower,      "d_a_obj_tower"},
    {PROC_Obj_DoguuD,     "d_a_obj_doguu_demo"},
    {PROC_SPOTBOX,        "d_a_spotbox"},
    {PROC_TORNADO,        "d_a_tornado"},
    {PROC_TITLE,          "d_a_title"},
    {PROC_MP,             "d_a_movie_player"},
    {PROC_LODBG,          "d_a_lod_bg"},
    {PROC_HIMO3,          "d_a_himo3"},
    {PROC_ATT,            "d_a_att"},
    {PROC_Hys,            "d_a_hys"},
    {PROC_SWHIT0,         "d_a_swhit0"},
    {PROC_TAG_GSHIP,      "d_a_tag_ghostship"},
    {PROC_TSUBO,          "d_a_tsubo"},
    {PROC_STONE,          "d_a_stone"},
    {PROC_Stone2,         "d_a_stone2"},
    {PROC_Obj_Barrel,     "d_a_obj_barrel"},
    {PROC_Obj_Barrel2,    "d_a_obj_barrel2"},
    {PROC_Obj_Try,        "d_a_obj_try"},
    {PROC_Obj_Vtil,       "d_a_obj_vtil"},
    {PROC_Obj_Ice,        "d_a_obj_ice"},
    {PROC_Obj_Mshokki,    "d_a_obj_mshokki"},
    {PROC_BOKO,           "d_a_boko"},
    {PROC_TAMA,           "d_a_tama"},
    {PROC_Obj_Buoyflag,   "d_a_obj_buoyflag"},
    {PROC_Obj_Correct,    "d_a_obj_correct"},
    {PROC_Obj_Eff,        "d_a_obj_eff"},
    {PROC_Tag_Light,      "d_a_tag_light"},
    {PROC_Tag_Attention,  "d_a_tag_attention"},
    {PROC_Tag_Waterlevel, "d_a_tag_waterlevel"},
    {PROC_ARROW_ICEEFF,   "d_a_arrow_iceeff"},
    {PROC_ARROW_LIGHTEFF, "d_a_arrow_lighteff"},
    {PROC_Obj_Timer,      "d_a_obj_timer"},

    {0xFFFF, NULL},
};

/* 800227A0-800229E0       .text cCc_Init__Fv */
s32 cCc_Init() {
    JUT_ASSERT(0x2a, !DMC_initialized);

    JKRSolidHeap * pHeap = JKRSolidHeap::create(0x5648, mDoExt_getArchiveHeap(), false);
    JKRHeap * pOldHeap = pHeap->becomeCurrentHeap();
    memset(DMC, 0, sizeof(DMC));

    for (int i = 0; i < ARRAY_SIZE(DynamicNameTable); i++) {
        const DynamicNameTableEntry & d = DynamicNameTable[i];
        if (d.name == NULL)
            continue;

        JUT_ASSERT(0x39, d.mKey < (sizeof(DMC) / sizeof(DMC[0])));
        JUT_ASSERT(0x3a, DMC[d.mKey] == 0);

        for (int j = 0; j < ARRAY_SIZE(DMC); j++) {
            if (DMC[j] != NULL) {
                if (!strcmp(d.name, DMC[j]->getModuleName())) {
                    DMC[d.mKey] = DMC[j];
                    break;
                }
            }
        }

        if (DMC[d.mKey] == NULL)
            DMC[d.mKey] = new DynamicModuleControl(d.name);
    }

    pHeap->adjustSize();
    pOldHeap->becomeCurrentHeap();
    DMC_initialized = TRUE;
    return TRUE;
}

/* 800229E0-80022A80       .text cDyl_IsLinked__Fs */
s32 cDyl_IsLinked(s16 i_ProfName) {
    JUT_ASSERT(0xae, cDyl_Initialized);

    if (DMC[i_ProfName] != NULL)
        return DMC[i_ProfName]->isLinked();

    return TRUE;
}

/* 80022A80-80022B58       .text cDyl_Unlink__Fs */
s32 cDyl_Unlink(s16 i_ProfName) {
    JUT_ASSERT(0xc5, cDyl_Initialized);
    JUT_ASSERT(0xc6, i_ProfName < (sizeof(DMC) / sizeof(DMC[0])));

    if (DMC[i_ProfName] != NULL)
        return DMC[i_ProfName]->unlink();

    return 0;
}

static void dummy(s16 i_ProfName) {
    OSReport_Error("cDyl_Link i_ProfName=%d\n", i_ProfName);
    OSReport_Error("cDyl_LinkASync: リンクに失敗しました。諦めます\n");
}

/* 80022B58-80022CEC       .text cDyl_LinkASync__Fs */
s32 cDyl_LinkASync(s16 i_ProfName) {
    JUT_ASSERT(0x101, DMC_initialized);

    if (!cDyl_Initialized)
        return cPhs_INIT_e;

    if (i_ProfName >= ARRAY_SIZE(DMC)) {
        OSReport_Error("cDyl_Link i_ProfName=%d\n", i_ProfName);
        return cPhs_ERROR_e;
    }

    JUT_ASSERT(0x111, i_ProfName < (sizeof(DMC) / sizeof(DMC[0])));
    DynamicModuleControlBase * d = DMC[i_ProfName];
    if (d != NULL) {
        JUT_ASSERT(0x115, cDyl_Initialized);
        if (d->load_async()) {
            if (d->link()) {
                return cPhs_COMPLEATE_e;
            } else {
                OSReport_Error("cDyl_LinkASync: リンクに失敗しました。諦めます\n");
                return cPhs_ERROR_e;
            }
        }

        return cPhs_INIT_e;
    }

    return cPhs_COMPLEATE_e;
}

/* 80022CEC-80022DF8       .text cDyl_InitCallback__FPv */
BOOL cDyl_InitCallback(void*) {
    JUT_ASSERT(0x12f, !cDyl_Initialized);
    JKRFileLoader * pFileLoader = JKRFileCache::mount("/", mDoExt_getArchiveHeap(), NULL);
    DynamicModuleControl::initialize();
    void * pData = JKRFileLoader::getGlbResource("/dvd/framework.str");
    JKRFileLoader::detachResource(pData, pFileLoader);
    pFileLoader->unmount();
    OSSetStringTable(pData);

    DynamicModuleControl dmc("f_pc_profile_lst");
    dmc.link();
    cDyl_Initialized = TRUE;
    return TRUE;
}

/* 80022DF8-80022E70       .text cDyl_InitAsync__Fv */
void cDyl_InitAsync() {
    cCc_Init();

    JUT_ASSERT(0x145, cDyl_DVD == 0);
    cDyl_DVD = mDoDvdThd_callback_c::create((mDoDvdThd_callback_func) cDyl_InitCallback, NULL);
}

/* 80022E70-80022EDC       .text cDyl_InitAsyncIsDone__Fv */
int cDyl_InitAsyncIsDone() {
    if (cDyl_DVD == NULL)
        return TRUE;

    if (cDyl_DVD->sync()) {
        cDyl_DVD->destroy();
        cDyl_DVD = NULL;
        return TRUE;
    }

    return FALSE;
}

/* 80022EDC-80022EE4       .text phase_01__7cDylPhsFPv */
int cDylPhs::phase_01(void*) {
    return cPhs_NEXT_e;
}

/* 80022EE4-80022F1C       .text phase_02__7cDylPhsFPs */
int cDylPhs::phase_02(s16* pProf) {
    s32 ret = cDyl_LinkASync(*pProf);
    return ret == cPhs_COMPLEATE_e ? cPhs_NEXT_e : ret;
}

/* 80022F1C-80022F24       .text phase_03__7cDylPhsFPv */
int cDylPhs::phase_03(void*) {
    return cPhs_INIT_e;
}

/* 80022F24-80022F68       .text Link__7cDylPhsFP30request_of_phase_process_classs */
int cDylPhs::Link(request_of_phase_process_class* i_phase, s16 profName) {
    static cPhs__Handler l_method[] = {
        (cPhs__Handler) &cDylPhs::phase_01,
        (cPhs__Handler) &cDylPhs::phase_02,
        (cPhs__Handler) &cDylPhs::phase_03,
    };

    if (i_phase->id == cPhs_NEXT_e)
        return cPhs_COMPLEATE_e;

    return dComLbG_PhaseHandler(i_phase, l_method, &profName);
}

/* 80022F68-80023004       .text Unlink__7cDylPhsFP30request_of_phase_process_classs */
int cDylPhs::Unlink(request_of_phase_process_class* i_phase, s16 profName) {
    JUT_ASSERT(0x1a6, i_phase->id != 1);

    s32 ret;
    if (i_phase->id == cPhs_NEXT_e) {
        ret = cDyl_Unlink(profName);
        i_phase->id = cPhs_INIT_e;
    } else {
        ret = cPhs_INIT_e;
    }
    return ret;
}
