Skip to content

Instantly share code, notes, and snippets.

@mloc
Created May 27, 2012 18:42
Show Gist options
  • Save mloc/2815458 to your computer and use it in GitHub Desktop.
Save mloc/2815458 to your computer and use it in GitHub Desktop.
DM Compiler
__size32 puts = 0x375e;// 4 bytes
__size32 ?IsFile@@YADPBD@Z = 0x33c4;// 4 bytes
void proc1();
void proc2();
void proc3();
void proc4();
void proc5();
// address: 0x401040
int main(int argc, char *argv[], char *envp[]) {
unsigned char al; // r8
unsigned int cl; // r9
__size8 cl_1; // r9
unsigned int dl; // r10
__size8 dl_1; // r10
int eax; // r24
union { unsigned int * x73; __size8 * x74; unsigned int x81; } eax_1; // r24
union { unsigned int * x103; __size8 * x104; unsigned int x108; } eax_10; // r24
union { unsigned int * x103; __size8 * x104; } eax_11; // r24
union { unsigned int * x109; __size8 * x110; unsigned int x115; } eax_12; // r24
union { unsigned int * x109; __size8 * x110; } eax_13; // r24
__size32 eax_14; // r24{400}
unsigned char *eax_15; // r24{408}
__size32 eax_16; // r24{639}
char *eax_17; // r24{631}
__size8 *eax_18; // r24{238}
int eax_19; // r24{560}
union { unsigned int * x73; __size8 * x74; } eax_2; // r24
__size32 eax_20; // r24{5}
int eax_3; // r24
union { unsigned int * x82; __size8 * x83; unsigned int x90; } eax_4; // r24
union { unsigned int * x82; __size8 * x83; } eax_5; // r24
union { unsigned int * x91; __size8 * x92; unsigned int x96; } eax_6; // r24
union { unsigned int * x91; __size8 * x92; } eax_7; // r24
union { unsigned int * x97; __size8 * x98; unsigned int x102; } eax_8; // r24
union { unsigned int * x97; __size8 * x98; } eax_9; // r24
int ebp; // r29
int ebp_1; // r29{408}
__size32 *ebx; // r27
__size32 *ebx_1; // r27{408}
__size32 ecx; // r25
void *ecx_1; // r25
int edi; // r31
int edi_1; // r31{233}
int edi_10; // r31{1011}
int edi_11; // r31{731}
int edi_2; // r31{285}
int edi_3; // r31{23}
int edi_4; // r31{78}
int edi_5; // r31{129}
int edi_6; // r31{181}
int edi_7; // r31{874}
int edi_8; // r31{825}
int edi_9; // r31{776}
__size32 edx; // r26
void *edx_1; // r26
unsigned int *esi; // r30
unsigned int esi_1; // r30
unsigned int *esi_10; // r30{159}
unsigned int *esi_11; // r30{136}
unsigned int *esi_12; // r30{211}
unsigned int *esi_13; // r30{188}
unsigned int *esi_14; // r30{787}
unsigned int *esi_15; // r30{738}
unsigned int *esi_16; // r30{693}
unsigned int *esi_17; // r30{942}
unsigned int *esi_18; // r30{885}
unsigned int *esi_19; // r30{836}
unsigned int *esi_2; // r30{240}
unsigned int *esi_3; // r30{263}
unsigned int *esi_4; // r30{320}
unsigned int *esi_5; // r30{297}
unsigned int *esi_6; // r30{57}
unsigned int *esi_7; // r30{34}
unsigned int *esi_8; // r30{107}
unsigned int *esi_9; // r30{84}
int esp; // r28
unsigned int *esp_1; // r28{408}
void *esp_10; // r28{544}
void *esp_11; // r28{386}
void *esp_12; // r28{410}
void *esp_13; // r28{495}
__size32 esp_14; // r28{536}
unsigned int *esp_15; // r28{432}
__size32 esp_16; // r28{493}
void *esp_17; // r28{455}
void *esp_18; // r28{434}
void *esp_19; // r28{538}
void *esp_2; // r28{658}
void *esp_20; // r28{1024}
void *esp_21; // r28{1037}
void *esp_22; // r28{1008}
void *esp_3; // r28{652}
void *esp_4; // r28{646}
void *esp_5; // r28{448}
void *esp_6; // r28{573}
void *esp_7; // r28{598}
__size32 esp_8; // r28{571}
void *esp_9; // r28{555}
unsigned int local0; // m[esp - 108]
__size32 local1; // m[esp - 104]
__size8 local10; // m[esp - 65]
int local100; // %ZF{658}
int local101; // %ZF{1064}
int local102; // %ZF{658}
int local103; // %ZF{658}
int local104; // %ZF{652}
int local105; // %ZF{646}
int local106; // %ZF{290}
int local107; // %ZF{338}
int local108; // %CF{658}
int local109; // %CF{658}
__size8 local11; // m[esp - 64]
int local110; // %CF{1065}
int local111; // %CF{658}
union { bool x151; unsigned int x152; } local112; // %CF{967}
int local113; // %CF{658}
int local114; // %CF{658}
int local115; // %CF{658}
union { unsigned int x21; unsigned int * x22; } local116; // %CF{910}
int local117; // %CF{658}
int local118; // %CF{658}
union { unsigned int x15; unsigned int * x16; } local119; // %CF{861}
__size8 local12; // m[esp - 63]
int local120; // %CF{658}
int local121; // %CF{658}
union { unsigned int x9; unsigned int * x10; } local122; // %CF{812}
int local123; // %CF{658}
int local124; // %CF{658}
union { bool x122; unsigned int x123; } local125; // %CF{763}
int local126; // %CF{658}
int local127; // %CF{658}
unsigned int local128; // %CF{718}
int local129; // %CF{658}
__size8 local13; // m[esp - 62]
int local130; // %CF{658}
int local131; // %CF{652}
int local132; // %CF{646}
unsigned int local133; // %CF{256}
unsigned int local134; // %CF{246}
unsigned int local135; // %CF{313}
unsigned int local136; // %CF{303}
int local137; // %CF{290}
unsigned int local138; // %CF{50}
union { bool x122; unsigned int x123; } local139; // %CF{763}
__size8 local14; // m[esp - 61]
union { unsigned int x9; unsigned int * x10; } local140; // %CF{812}
union { unsigned int x15; unsigned int * x16; } local141; // %CF{861}
union { unsigned int x21; unsigned int * x22; } local142; // %CF{910}
union { bool x151; unsigned int x152; } local143; // %CF{967}
unsigned int local144; // %CF{40}
unsigned int local145; // %CF{100}
unsigned int local146; // %CF{90}
unsigned int local147; // %CF{152}
unsigned int local148; // %CF{142}
int local149; // %CF{338}
__size32 local15; // m[esp - 12]
unsigned int local150; // %CF{204}
unsigned int local151; // %CF{194}
union { unsigned int * x73; __size8 * x74; unsigned int x81; } local152; // eax_1{690}
unsigned int *local153; // esi_16{693}
unsigned int local154; // local128{718}
int local155; // edi_11{731}
union { unsigned int * x82; __size8 * x83; unsigned int x90; } local156; // eax_4{735}
unsigned int *local157; // esi_15{738}
union { bool x122; unsigned int x123; } local158; // local125{763}
int local159; // edi_9{776}
int local16; // m[esp - 8]
union { unsigned int * x91; __size8 * x92; unsigned int x96; } local160; // eax_6{784}
unsigned int *local161; // esi_14{787}
union { unsigned int x9; unsigned int * x10; } local162; // local122{812}
int local163; // edi_8{825}
union { unsigned int * x97; __size8 * x98; unsigned int x102; } local164; // eax_8{833}
unsigned int *local165; // esi_19{836}
union { unsigned int x15; unsigned int * x16; } local166; // local119{861}
int local167; // edi_7{874}
union { unsigned int * x103; __size8 * x104; unsigned int x108; } local168; // eax_10{882}
unsigned int *local169; // esi_18{885}
int local17; // m[esp - 4]
union { unsigned int x21; unsigned int * x22; } local170; // local116{910}
int local171; // edi_10{930}
union { unsigned int * x109; __size8 * x110; unsigned int x115; } local172; // eax_12{939}
unsigned int *local173; // esi_17{942}
union { bool x151; unsigned int x152; } local174; // local112{967}
void *local175; // esp_22{1008}
int local176; // edi_10{1011}
void *local177; // esp_20{1024}
void *local178; // esp_21{1045}
int local179; // local92{1063}
int local18; // m[esp + 4]
int local180; // local101{1064}
int local181; // local110{1065}
__size32 *local19; // m[esp + 8]
unsigned int local2; // m[esp - 100]
int local20; // m[esp + 12]
int local21; // m[esp + 4]{408}
int local22; // m[esp + 4]{658}
int local23; // m[esp + 8]{408}
int local24; // m[esp + 8]{658}
int local25; // m[esp + 12]{408}
int local26; // m[esp + 12]{658}
void *local27; // m[esp_17 - 12]{566}
unsigned int local28; // m[esp_17 - 12]{475}
unsigned int local29; // m[esp_17 - 16]{569}
int local3; // m[esp - 96]
void *local30; // m[esp_17 - 16]{488}
unsigned int local31; // m[esp_17 - 20]{491}
void *local32; // m[esp_17 - 20]{531}
__size32 local33; // m[esp - 4]{1094}
int local34; // m[esp - 4]{658}
int local35; // m[esp - 8]{408}
int local36; // m[esp - 8]{658}
__size32 local37; // m[esp - 8]{1095}
int local38; // m[esp - 12]{408}
int local39; // m[esp - 12]{658}
int local4; // m[esp - 92]
__size32 local40; // m[esp - 12]{1096}
int local41; // m[esp - 61]{408}
int local42; // m[esp - 61]{658}
__size8 local43; // m[esp - 61]{1097}
int local44; // m[esp - 62]{408}
int local45; // m[esp - 62]{658}
__size8 local46; // m[esp - 62]{1098}
int local47; // m[esp - 63]{408}
int local48; // m[esp - 63]{658}
__size8 local49; // m[esp - 63]{1099}
int local5; // m[esp - 88]
int local50; // m[esp - 64]{408}
int local51; // m[esp - 64]{658}
__size8 local52; // m[esp - 64]{1100}
int local53; // m[esp - 65]{408}
int local54; // m[esp - 65]{658}
__size8 local55; // m[esp - 65]{1101}
int local56; // m[esp - 72]{408}
int local57; // m[esp - 72]{658}
__size32 local58; // m[esp - 72]{1102}
int local59; // m[esp - 76]{408}
__size32 local6; // m[esp - 84]
int local60; // m[esp - 76]{658}
__size32 local61; // m[esp - 76]{1103}
int local62; // m[esp - 80]{408}
int local63; // m[esp - 80]{658}
__size32 local64; // m[esp - 80]{1104}
int local65; // m[esp - 84]{408}
int local66; // m[esp - 84]{658}
__size32 local67; // m[esp - 84]{1105}
int local68; // m[esp - 88]{408}
int local69; // m[esp - 88]{658}
__size32 local7; // m[esp - 80]
__size32 local70; // m[esp - 88]{1106}
int local71; // m[esp - 92]{408}
int local72; // m[esp - 92]{658}
unsigned int local73; // m[esp - 92]{1107}
int local74; // m[esp - 96]{408}
int local75; // m[esp - 96]{658}
unsigned int local76; // m[esp - 96]{1108}
int local77; // m[esp - 100]{408}
int local78; // m[esp - 100]{658}
unsigned int local79; // m[esp - 100]{1109}
__size32 local8; // m[esp - 76]
int local80; // m[esp - 104]{408}
int local81; // m[esp - 104]{658}
int local82; // m[esp - 104]{1110}
int local83; // m[esp - 108]{408}
int local84; // m[esp - 108]{658}
int local85; // m[esp - 108]{1111}
__size32 local86; // m[0]{619}
union { void * x285; int x286; } local87; // m[0]{9}
union { void * x285; int x286; } local88; // m[0]{9}
__size32 local89; // m[0]{672}
__size32 local9; // m[esp - 72]
int local90; // %flags{658}
int local91; // %flags{658}
int local92; // %flags{1063}
int local93; // %flags{658}
int local94; // %flags{658}
int local95; // %flags{652}
int local96; // %flags{646}
int local97; // %flags{290}
int local98; // %flags{338}
int local99; // %ZF{658}
local87 = esp - 12;
ebx_1 = argv;
ebp_1 = argc;
edi_3 = 1;
local155 = edi_3;
local171 = edi_3;
if (argc > 1) {
eax = *(argv + 4);
esi_7 = 0x4040fc;
local152 = eax;
local153 = esi_7;
do {
eax_1 = local152;
esi_16 = local153;
dl = *eax_1;
edx = edx >> 8 & 0xffffff | (dl);
cl = dl;
ecx = ecx >> 8 & 0xffffff | (dl);
tmpb = dl - *esi_16;
flags = SUBFLAGS8(dl, *esi_16, tmpb);
local154 = local144;
if (dl != *esi_16) {
L104:
local128 = local154;
eax_3 = 1 - local128 + (eax_1 < 0 - local128);
goto L103;
}
if (dl == 0) {
break;
}
dl = *(eax_1 + 1);
edx = edx >> 8 & 0xffffff | (dl);
cl = dl;
ecx = ecx >> 8 & 0xffffff | (dl);
tmpb = dl - *(esi_16 + 1);
flags = SUBFLAGS8(dl, *(esi_16 + 1), tmpb);
local154 = local138;
if (dl != *(esi_16 + 1)) {
goto L104;
}
eax_2 = eax_1 + 2;
esi_6 = esi_16 + 2;
local152 = eax_2;
local153 = esi_6;
} while (dl != 0);
eax_3 = 0;
L103:
if (eax_3 == 0) {
edi_4 = 2;
local155 = edi_4;
}
edi_11 = local155;
local159 = edi_11;
local171 = edi_11;
if (edi_11 < argc) {
eax = *(argv + edi_11 * 4);
esi_9 = 0x4040f8;
local156 = eax;
local157 = esi_9;
do {
eax_4 = local156;
esi_15 = local157;
dl = *eax_4;
edx = edx >> 8 & 0xffffff | (dl);
cl = dl;
ecx = ecx >> 8 & 0xffffff | (dl);
tmpb = dl - *esi_15;
flags = SUBFLAGS8(dl, *esi_15, tmpb);
local158 = local146;
if (dl != *esi_15) {
L94:
local125 = local158;
eax_3 = 1 - local125 + (eax_4 < 0 - local125);
goto L93;
}
if (dl == 0) {
break;
}
dl = *(eax_4 + 1);
edx = edx >> 8 & 0xffffff | (dl);
cl = dl;
ecx = ecx >> 8 & 0xffffff | (dl);
tmpb = dl - *(esi_15 + 1);
flags = SUBFLAGS8(dl, *(esi_15 + 1), tmpb);
local158 = local145;
if (dl != *(esi_15 + 1)) {
goto L94;
}
eax_5 = eax_4 + 2;
esi_8 = esi_15 + 2;
local156 = eax_5;
local157 = esi_8;
} while (dl != 0);
eax_3 = 0;
L93:
if (eax_3 == 0) {
edi_5 = edi_11 + 1;
local159 = edi_5;
}
edi_9 = local159;
local163 = edi_9;
local171 = edi_9;
if (edi_9 < argc) {
eax = *(argv + edi_9 * 4);
esi_11 = 0x4040ec;
local160 = eax;
local161 = esi_11;
do {
eax_6 = local160;
esi_14 = local161;
dl = *eax_6;
edx = edx >> 8 & 0xffffff | (dl);
cl = dl;
ecx = ecx >> 8 & 0xffffff | (dl);
tmpb = dl - *esi_14;
flags = SUBFLAGS8(dl, *esi_14, tmpb);
local162 = local148;
if (dl != *esi_14) {
L84:
local122 = local162;
eax_3 = 1 - local122 + (eax_6 < 0 - local122);
goto L83;
}
if (dl == 0) {
break;
}
dl = *(eax_6 + 1);
edx = edx >> 8 & 0xffffff | (dl);
cl = dl;
ecx = ecx >> 8 & 0xffffff | (dl);
tmpb = dl - *(esi_14 + 1);
flags = SUBFLAGS8(dl, *(esi_14 + 1), tmpb);
local162 = local147;
if (dl != *(esi_14 + 1)) {
goto L84;
}
eax_7 = eax_6 + 2;
esi_10 = esi_14 + 2;
local160 = eax_7;
local161 = esi_10;
} while (dl != 0);
eax_3 = 0;
L83:
if (eax_3 == 0) {
edi_6 = edi_9 + 1;
local163 = edi_6;
}
edi_8 = local163;
local167 = edi_8;
local171 = edi_8;
if (edi_8 < argc) {
eax = *(argv + edi_8 * 4);
esi_13 = 0x4040e0;
local164 = eax;
local165 = esi_13;
do {
eax_8 = local164;
esi_19 = local165;
dl = *eax_8;
edx = edx >> 8 & 0xffffff | (dl);
cl = dl;
ecx = ecx >> 8 & 0xffffff | (dl);
tmpb = dl - *esi_19;
flags = SUBFLAGS8(dl, *esi_19, tmpb);
local166 = local151;
if (dl != *esi_19) {
L74:
local119 = local166;
eax_3 = 1 - local119 + (eax_8 < 0 - local119);
goto L73;
}
if (dl == 0) {
break;
}
dl = *(eax_8 + 1);
edx = edx >> 8 & 0xffffff | (dl);
cl = dl;
ecx = ecx >> 8 & 0xffffff | (dl);
tmpb = dl - *(esi_19 + 1);
flags = SUBFLAGS8(dl, *(esi_19 + 1), tmpb);
local166 = local150;
if (dl != *(esi_19 + 1)) {
goto L74;
}
eax_9 = eax_8 + 2;
esi_12 = esi_19 + 2;
local164 = eax_9;
local165 = esi_12;
} while (dl != 0);
eax_3 = 0;
L73:
if (eax_3 == 0) {
edi_1 = edi_8 + 1;
local167 = edi_1;
}
edi_7 = local167;
local171 = edi_7;
local171 = edi_7;
if (edi_7 < argc) {
eax_18 = *(argv + edi_7 * 4);
esi_2 = 0x4040dc;
local168 = eax_18;
local169 = esi_2;
do {
eax_10 = local168;
esi_18 = local169;
dl = *eax_10;
edx = edx >> 8 & 0xffffff | (dl);
cl = dl;
ecx = ecx >> 8 & 0xffffff | (dl);
tmpb = dl - *esi_18;
flags = SUBFLAGS8(dl, *esi_18, tmpb);
local170 = local134;
if (dl != *esi_18) {
L64:
local116 = local170;
eax_3 = 1 - local116 + (eax_10 < 0 - local116);
goto L63;
}
if (dl == 0) {
break;
}
dl = *(eax_10 + 1);
edx = edx >> 8 & 0xffffff | (dl);
cl = dl;
ecx = ecx >> 8 & 0xffffff | (dl);
tmpb = dl - *(esi_18 + 1);
flags = SUBFLAGS8(dl, *(esi_18 + 1), tmpb);
local170 = local133;
if (dl != *(esi_18 + 1)) {
goto L64;
}
eax_11 = eax_10 + 2;
esi_3 = esi_18 + 2;
local168 = eax_11;
local169 = esi_3;
} while (dl != 0);
eax_3 = 0;
L63:
if (eax_3 == 0) {
edi_2 = edi_7 + 1;
local171 = edi_2;
}
}
}
}
}
}
edi_10 = local171;
al = (unsigned char) edi_10 + 1;
local97 = SUBFLAGS32(argc, edi_10 + 1, argc - edi_10 - 1);
local176 = edi_10;
local179 = local97;
local180 = local106;
local181 = local137;
if (argc != edi_10 + 1) {
L7:
local92 = local179;
local101 = local180;
local110 = local181;
eax = *argv;
?GetFileName@@YAPBDPBD@Z();
printf("%s [options] sourcefile[.dme]\n", eax_17);
(*puts)(local0, pc, 0x40408c, 0x40409c, eax_17, eax, edi, esi, ebp, ebx, local10, local11, local12, local13, local14, eax_20, 0x4026c8, -1, argc, argv, envp, (unsigned char) eax, cl, dl, eax_16, ecx, edx, argv, argc, puts, edi_10, local92, local101, local110);
*(__size32*)(esp_4 - 4) = 0x404070;
(*esi)(local0, local1, local2, local3, local4, local5, local6, local7, local8, local9, local10, local11, local12, local13, local14, local15, local16, local17, local18, local19, local20, al, cl_1, dl_1, eax, ecx, edx, ebx, ebp, esi, edi, <all>, local96, local105, local132);
*(__size32*)(esp_3 - 4) = 0x404044;
(*esi)(local0, local1, local2, local3, local4, local5, local6, local7, local8, local9, local10, local11, local12, local13, local14, local15, local16, local17, local18, local19, local20, al, cl_1, dl_1, eax, ecx, edx, ebx, ebp, esi, edi, <all>, local95, local104, local131);
*(__size32*)(esp_2 - 4) = 0x404020;
(*esi)(local84, local81, local78, local75, local72, local69, local66, local63, local60, local57, local54, local51, local48, local45, local42, local39, local36, local34, local22, local24, local26, al, cl_1, dl_1, eax, ecx, edx, ebx, ebp, esi, edi, <all>, local90, local99, local108);
ecx = *(esp + 100);
eax = 1;
local89 = ecx;
} else {
if (edi_10 >= argc) {
L51:
?Init@ByondLib@@QAEHW4ByondServerType@@@Z();
esi_1 = *(argv + edi_10 * 4);
?GetPathPart@@YAPADPBD@Z();
if (eax != 0) {
_chdir();
?GetFileName@@YAPBDPBD@Z();
esi_1 = eax;
}
?GetFileExt@@YAPBDPBD@Z();
cl = *eax_15;
esp_11 = esp - 88;
flags = LOGICALFLAGS8(cl);
local175 = esp_11;
if (cl == 0) {
?ExtCat@@YAPADPBD00@Z();
(*?IsFile@@YADPBD@Z)(pc, eax_14, esi_1, 0x4041c8, 0x4040d0, 0, edi, esi, ebp, ebx, local10, local11, local12, local13, local14, eax_20, 0x4026c8, -1, argc, argv, envp, al, cl, dl, eax_14, ecx, edx, argv, ?IsFile@@YADPBD@Z, esi_1, eax_14, LOGICALFLAGS8(cl), LOGICALFLAGS8(cl), LOGICALFLAGS8(cl));
local176 = edi;
esp_12 = esp_1 + 16;
flags = LOGICALFLAGS8(al);
local175 = esp_12;
if (al == 0) {
*(__size32*)(esp_1 + 12) = esi;
*(__size32*)(esp_1 + 8) = 0x4040c8;
*(int*)(esp_1 + 4) = edi;
sprintf(*(esp_1 + 4), *(esp_1 + 8));
*(unsigned int*)esp_1 = edi;
(*ebp_1)(local83, local80, local77, local74, local71, local68, local65, local62, local59, local56, local53, local50, local47, local44, local41, local38, local35, local17, local21, local23, local25, al, cl, dl, eax, ecx, edx, ebx_1, ebp_1, esi, edi, <all>, LOGICALFLAGS8(al), LOGICALFLAGS8(al), LOGICALFLAGS8(al));
local176 = edi;
local176 = edi;
esp_18 = esp_15 + 16;
flags = LOGICALFLAGS8(al);
local175 = esp_18;
if (al == 0) {
*(int*)(esp_15 + 12) = edi;
free(*(esp_15 + 12));
esp_5 = esp_15 + 16;
flags = ADDFLAGS32(esp_15 + 12, 4, esp_15 + 16);
local175 = esp_5;
} else {
esi_1 = edi;
}
} else {
esi_1 = edi;
}
}
esp_22 = local175;
edi_10 = local176;
dl_1 = proc1(local85, local82, local79, local76, local73, local70, local67, local64, local61, local58, local55, local52, local49, local46, local43, local40, local37, local33, argc, argv, envp, al, (unsigned char) esp_22 + 24, dl, eax_15, esp_22 + 24, edx, ebx_1, ebp_1, esi_1, edi_10, flags, ZF, CF); /* Warning: also results in ebx, esp_17, ebp, esi, edi */
al = *(esp_17 + 19);
*(__size32*)(esp_17 + 80) = 0;
if (al == 0) {
al = *(esp_17 + 20);
*(__size32*)(esp_17 - 4) = esi;
if (al == 0) {
?LoadDB@DungBuilder@@QAEDPBD@Z();
local178 = esp_10;
flags = LOGICALFLAGS8(al);
if (al != 0) {
*(__size32*)(esp_17 - 8) = esi;
?SaveDB@DungBuilder@@QAEDPBD@Z();
local177 = esp_9;
local178 = esp_9;
flags = LOGICALFLAGS8(al);
if (al != 0) {
al = *(esp_17 + 13);
eax_19 = eax >> 8 & 0xffffff | (al);
if (al != 0) {
local27 = esp_17 + 16;
dl_1 = proc5(local0, local1, local2, local3, local4, local5, local6, local7, local8, local9, local10, local11, local12, local13, local14, local15, local16, local17, local18, local19, local20, al, (unsigned char) esp_17 + 20, (unsigned char) esp_17 + 16, eax >> 8 & 0xffffff | (al), ecx, esp_17 + 16, ebx, ebp, esi, edi, <all>, LOGICALFLAGS8(al), LOGICALFLAGS8(al), LOGICALFLAGS8(al)); /* Warning: also results in eax_19, edx, ebx, esp_8, ebp, esi, edi */
esp_6 = esp_8 + 4;
local177 = esp_6;
}
esp_20 = local177;
al = *(esp_20 + 22);
eax = eax_19 >> 8 & 0xffffff | (al);
if (al != 0) {
?MakeIncludeFile@DungBuilder@@QAEHXZ();
}
esp_21 = esp_20;
al = *(esp_20 + 23);
eax = eax >> 8 & 0xffffff | (al);
flags = LOGICALFLAGS8(al);
local178 = esp_21;
if (al != 0) {
*(__size32*)(esp_20 - 4) = 0x4040bc;
?SaveDMP@DungBuilder@@QAEDPBD@Z();
local178 = esp_7;
}
}
}
} else {
?LoadDB@DungBuilder@@QAEDPBD@Z();
*(__size32*)(esp_17 - 8) = esi;
?GenDB@DungBuilder@@QAEDPBD@Z();
?ProbeCdRoot@DungBuilder@@QAEDXZ();
*(__size32*)(esp_17 - 12) = 0;
*(__size32*)(esp_17 - 16) = 0;
local32 = esp_17 + 16;
al = proc3(local0, local1, local2, local3, local4, local5, local6, local7, local8, local9, local10, local11, local12, local13, local14, local15, local16, local17, local18, local19, local20, al, (unsigned char) esp_17 + 16, dl_1, eax, esp_17 + 16, edx, ebx, ebp, esi, edi, <all>, LOGICALFLAGS8(al), LOGICALFLAGS8(al), LOGICALFLAGS8(al)); /* Warning: also results in dl_1, eax, edx, ebx, esp_14, ebp, esi, edi */
esp_19 = esp_14 + 12;
flags = ADDFLAGS32(esp_14, 12, esp_14 + 12);
local178 = esp_19;
}
} else {
*(__size32*)(esp_17 - 4) = esi;
?LoadDB@DungBuilder@@QAEDPBD@Z();
*(__size32*)(esp_17 - 8) = esi;
?GenDB@DungBuilder@@QAEDPBD@Z();
?ProbeCdRoot@DungBuilder@@QAEDXZ();
*(__size32*)(esp_17 - 12) = 0;
local30 = esp_17 + 16;
al = proc2(local0, local1, local2, local3, local4, local5, local6, local7, local8, local9, local10, local11, local12, local13, local14, local15, local16, local17, local18, local19, local20, (unsigned char) esp_17 + 16, (unsigned char) esp_17 + 16, dl_1, esp_17 + 16, ecx, edx, ebx, ebp, esi, edi, <all>, LOGICALFLAGS8(al), LOGICALFLAGS8(al), LOGICALFLAGS8(al)); /* Warning: also results in dl_1, eax, edx, ebx, esp_16, ebp, esi, edi */
esp_13 = esp_16 + 8;
flags = ADDFLAGS32(esp_16, 8, esp_16 + 8);
local178 = esp_13;
}
esp_21 = local178;
*(__size32*)(esp_21 + 80) = -1;
esp = proc4(local0, local1, local2, local3, local4, local5, local6, local7, local8, local9, local10, local11, local12, local13, local14, local15, local16, local17, local18, local19, local20, al, (unsigned char) esp_21 + 24, dl_1, eax, esp_21 + 24, edx, ebx, ebp, esi, edi, <all>, flags, ZF, CF);
eax = 0;
ecx = *(esp + 72);
local86 = ecx;
} else {
eax = *(argv + edi_10 * 4);
esi_5 = 0x4040d8;
local172 = eax;
local173 = esi_5;
do {
eax_12 = local172;
esi_17 = local173;
dl = *eax_12;
edx = edx >> 8 & 0xffffff | (dl);
cl = dl;
ecx = ecx >> 8 & 0xffffff | (dl);
tmpb = dl - *esi_17;
flags = SUBFLAGS8(dl, *esi_17, tmpb);
local174 = local136;
if (dl != *esi_17) {
L53:
local112 = local174;
eax_3 = 1 - local112 + (eax_12 < 0 - local112);
al = (unsigned char) eax_3;
goto L52;
}
if (dl == 0) {
break;
}
dl = *(eax_12 + 1);
edx = edx >> 8 & 0xffffff | (dl);
cl = dl;
ecx = ecx >> 8 & 0xffffff | (dl);
tmpb = dl - *(esi_17 + 1);
flags = SUBFLAGS8(dl, *(esi_17 + 1), tmpb);
local174 = local135;
if (dl != *(esi_17 + 1)) {
goto L53;
}
eax_13 = eax_12 + 2;
esi_4 = esi_17 + 2;
local172 = eax_13;
local173 = esi_4;
} while (dl != 0);
eax_3 = 0;
al = 0;
L52:
local98 = LOGICALFLAGS32(eax_3);
local179 = local98;
local180 = local107;
local181 = local149;
if (eax_3 == 0) {
goto L7;
} else {
goto L51;
}
}
}
return eax;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment