; --------------------------------------------------------------------------- _MEMORYSTATUS struc ; (sizeof=0x20, standard type) dwLength dd ? dwMemoryLoad dd ? dwTotalPhys dd ? dwAvailPhys dd ? dwTotalPageFile dd ? dwAvailPageFile dd ? dwTotalVirtual dd ? dwAvailVirtual dd ? _MEMORYSTATUS ends ; --------------------------------------------------------------------------- _tpidc struc ; (sizeof=0x30, variable size) tpDtt dd ? ; base 16 tpMask dw ? ; base 16 tpName dw ? ; base 16 bParent dd ? ; offset tpcFlags dd ? ; base 16 Size dw ? ; base 16 ExpDim dw ? ; base 16 mfnDel dd ? ; offset mfnMask dw ? ; base 16 mfnMaskArr dw ? ; base 16 mfnDelArr dd ? ; offset DtorCount dd ? ; base 10 DtorAltCount dd ? ; base 10 DtorAddr dd ? ; offset DtorMask dw ? ; base 16 DtorMemberOff dw ? ; base 16 Name db 0 dup(?) ; string(C) _tpidc ends ; Input MD5 : D23F9A7258F851F7833280F1C5A28B44 ; File Name : C:\SIERRA\ES2\ES.EXE ; Format : Portable executable for 80386 (PE) ; Imagebase : 400000 ; Section 1. (virtual address 00001000) ; Virtual size : 00002000 ( 8192.) ; Section size in file : 00001600 ( 5632.) ; Offset to raw data for section: 00000600 ; Flags 60000020: Text Executable Readable ; Alignment : default ; OS type : MS Windows ; Application type: Executable 32bit .686p .mmx .model flat ; =========================================================================== ; Segment type: Pure code ; Segment permissions: Read/Execute CODE segment para public 'CODE' use32 assume cs:CODE ;org 401000h assume es:nothing, ss:nothing, ds:CODE, fs:nothing, gs:nothing ; [0000006E BYTES: COLLAPSED FUNCTION start. PRESS KEYPAD "+" TO EXPAND] ; Exported entry 1. __GetExceptDLLinfo ; =============== S U B R O U T I N E ======================================= ; Attributes: library function thunk public __GetExceptDLLinfo __GetExceptDLLinfo proc near jmp __GetExceptDLLinfo_0 __GetExceptDLLinfo endp ; --------------------------------------------------------------------------- align 4 push ebp mov ebp, esp push ebx push esi push edi mov ebx, [ebp+8] mov esi, 2 movsx eax, byte ptr [ebx+1] cmp eax, 3Ah jz short loc_40108E add esi, 0FFFFFFFEh loc_40108E: ; CODE XREF: CODE:00401089j mov edx, [ebp+0Ch] xor eax, eax push esi mov edi, edx or ecx, 0FFFFFFFFh mov esi, offset unk_4036D0 repne scasb not ecx sub edi, ecx mov edx, ecx xchg esi, edi shr ecx, 2 mov eax, edi rep movsd mov ecx, edx and ecx, 3 rep movsb pop esi add esi, ebx push esi push offset unk_4036D0 call _strcat add esp, 8 mov eax, offset unk_4036D0 pop edi pop esi pop ebx pop ebp retn ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_4010D4(char *s, int) sub_4010D4 proc near ; CODE XREF: WinMain+50p var_8 = dword ptr -8 var_4 = dword ptr -4 s = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp add esp, 0FFFFFFF8h push ebx push esi mov [ebp+var_4], 1 mov ebx, [ebp+s] mov eax, [ebp+arg_4] mov dword ptr [eax], offset aDbsim_0 ; "dbsim" mov edx, [ebp+arg_4] lea ecx, [edx+4] mov [ebp+var_8], ecx jmp short loc_401159 ; --------------------------------------------------------------------------- loc_4010FA: ; CODE XREF: sub_4010D4+89j movsx eax, al cmp eax, 20h jz short loc_401158 push 20h ; c push ebx ; s call _strchr add esp, 8 test eax, eax jnz short loc_40111D push ebx ; s call _strlen pop ecx mov esi, eax inc esi jmp short loc_401122 ; --------------------------------------------------------------------------- loc_40111D: ; CODE XREF: sub_4010D4+3Bj mov esi, eax sub esi, ebx inc esi loc_401122: ; CODE XREF: sub_4010D4+47j inc esi push esi call @$bnwa$qui ; operator new[](uint) pop ecx mov edx, [ebp+var_8] mov [edx], eax add [ebp+var_8], 4 mov eax, [ebp+var_4] inc [ebp+var_4] mov ecx, [ebp+arg_4] mov edx, [ecx+eax*4] jmp short loc_401145 ; --------------------------------------------------------------------------- loc_401141: ; CODE XREF: sub_4010D4+7Dj mov [edx], al inc ebx inc edx loc_401145: ; CODE XREF: sub_4010D4+6Bj mov al, [ebx] test al, al jz short loc_401153 movsx ecx, al cmp ecx, 20h jnz short loc_401141 loc_401153: ; CODE XREF: sub_4010D4+75j mov byte ptr [edx], 0 jmp short loc_401159 ; --------------------------------------------------------------------------- loc_401158: ; CODE XREF: sub_4010D4+2Cj inc ebx loc_401159: ; CODE XREF: sub_4010D4+24j ; sub_4010D4+82j mov al, [ebx] test al, al jnz short loc_4010FA mov eax, [ebp+var_4] pop esi pop ebx pop ecx pop ecx pop ebp retn sub_4010D4 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __stdcall WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) WinMain proc near ; DATA XREF: DATA:00403044o var_2C8 = byte ptr -2C8h string = byte ptr -2C6h Buffer = _MEMORYSTATUS ptr -0C0h var_A0 = dword ptr -0A0h var_9C = byte ptr -9Ch dest = byte ptr -50h value = dword ptr -3Ch var_38 = dword ptr -38h var_34 = dword ptr -34h var_30 = word ptr -30h s = dword ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 hInstance = dword ptr 8 hPrevInstance = dword ptr 0Ch lpCmdLine = dword ptr 10h nShowCmd = dword ptr 14h push ebp ; 48: v46 = 0; mov ebp, esp add esp, 0FFFFFD38h xor eax, eax ; 49: v45 = 0; xor edx, edx ; 50: v44 = 0; xor ecx, ecx ; 47: v47 = 1; push ebx push esi push edi lea edi, [ebp+dest] mov [ebp+var_4], 1 mov [ebp+var_8], eax mov [ebp+var_C], edx mov [ebp+var_10], ecx ; 51: v43 = 0; xor eax, eax mov [ebp+var_14], eax ; 52: v42 = 0; xor edx, edx mov [ebp+var_18], edx ; 53: v41 = 0; xor ecx, ecx mov [ebp+var_1C], ecx ; 54: v40 = 0; xor eax, eax mov [ebp+var_20], eax ; 55: memcpy(&dest, &unk_403077, 0x14u); mov ecx, 5 mov esi, offset unk_403077 lea eax, [ebp+var_A0] rep movsd ; 56: v39 = sub_4010D4(lpCmdLine, (int)&v30); push eax ; int mov edx, [ebp+lpCmdLine] push edx ; s call sub_4010D4 add esp, 8 mov [ebp+var_24], eax ; 57: v5 = operator new__(4 * (v39 + 20)); mov ecx, [ebp+var_24] add ecx, 14h shl ecx, 2 push ecx call @$bnwa$qui ; operator new[](uint) pop ecx mov esi, eax ; 58: v38 = 1; mov [ebp+var_28], 1 ; 59: for ( i = &v31; v38 < v39; i += 4 ) lea edi, [ebp+var_9C] mov eax, [ebp+var_28] cmp eax, [ebp+var_24] jge loc_4012E3 ; 61: if ( **(_BYTE **)i == 45 ) loc_4011EE: ; CODE XREF: WinMain+175j mov ebx, [edi] movsx edx, byte ptr [ebx] cmp edx, 2Dh jnz loc_4012D1 ; 63: v7 = *(_DWORD *)i + 1; inc ebx ; 64: v6 = *(_BYTE *)v7; movsx ecx, byte ptr [ebx] cmp ecx, 58h ; 65: if ( v6 > 88 ) jg short loc_401223 ; 89: if ( v6 == 88 ) jz loc_4012AE ; 96: v8 = v6 - 68; sub ecx, 44h ; 97: if ( v8 ) jz loc_4012C3 ; 99: v9 = v8 - 8; sub ecx, 8 ; 100: if ( v9 ) jz short loc_401246 ; 102: if ( v9 == 7 ) sub ecx, 7 jz short loc_40127A jmp loc_4012D1 ; --------------------------------------------------------------------------- ; 67: v10 = v6 - 97; loc_401223: ; CODE XREF: WinMain+9Bj sub ecx, 61h ; 68: if ( v10 ) jz short loc_401255 ; 70: v11 = v10 - 17; sub ecx, 11h ; 71: if ( v11 ) jz short loc_401264 ; 73: if ( v11 == 1 ) dec ecx jnz loc_4012D1 ; 74: v46 = v46 == 0; cmp [ebp+var_8], 0 setz al and eax, 1 mov [ebp+var_8], eax jmp loc_4012D1 ; --------------------------------------------------------------------------- ; 131: v45 = v45 == 0; loc_401246: ; CODE XREF: WinMain+AFj cmp [ebp+var_C], 0 setz dl and edx, 1 mov [ebp+var_C], edx jmp short loc_4012D1 ; --------------------------------------------------------------------------- ; 84: v44 = v44 == 0; loc_401255: ; CODE XREF: WinMain+BEj cmp [ebp+var_10], 0 setz cl and ecx, 1 mov [ebp+var_10], ecx jmp short loc_4012D1 ; --------------------------------------------------------------------------- ; 78: v42 = 1; loc_401264: ; CODE XREF: WinMain+C3j mov [ebp+var_18], 1 ; 79: strcat(&dest, (const char *)v7); push ebx ; src lea eax, [ebp+dest] push eax ; dest call _strcat add esp, 8 jmp short loc_4012D1 ; --------------------------------------------------------------------------- ; 104: v12 = *(_DWORD *)i + 1; loc_40127A: ; CODE XREF: WinMain+B4j mov eax, ebx ; 105: v13 = (int)"SPRUNKNOWN"; mov edx, offset aSprunknown ; "SPRUNKNOWN" ; 106: while ( 1 ) ; 108: v14 = *(_BYTE *)v12; loc_401281: ; CODE XREF: WinMain+133j mov cl, [eax] ; 109: if ( *(_BYTE *)v12 != *(_BYTE *)v13 ) cmp cl, [edx] ; 110: break; jnz short loc_4012D1 ; 111: v15 = v14 == 0; test cl, cl ; 112: if ( v14 ) jz short loc_40129D ; 114: v16 = *(_BYTE *)(v12 + 1); mov cl, [eax+1] ; 115: if ( v16 != *(_BYTE *)(v13 + 1) ) cmp cl, [edx+1] ; 116: break; jnz short loc_4012D1 ; 117: v12 += 2; add eax, 2 ; 118: v13 += 2; add edx, 2 ; 119: v15 = v16 == 0; test cl, cl ; 120: if ( v16 ) ; 121: continue; jnz short loc_401281 ; 123: if ( v15 ) loc_40129D: ; CODE XREF: WinMain+121j jnz short loc_4012D1 ; 124: v41 = v41 == 0; cmp [ebp+var_1C], 0 setz al and eax, 1 mov [ebp+var_1C], eax ; 125: break; jmp short loc_4012D1 ; --------------------------------------------------------------------------- ; 91: if ( v41 ) loc_4012AE: ; CODE XREF: WinMain+9Dj cmp [ebp+var_1C], 0 jz short loc_4012D1 ; 92: v40 = v40 == 0; cmp [ebp+var_20], 0 setz dl and edx, 1 mov [ebp+var_20], edx jmp short loc_4012D1 ; --------------------------------------------------------------------------- ; 136: s = (char *)(*(_DWORD *)i + 2); loc_4012C3: ; CODE XREF: WinMain+A6j inc ebx mov [ebp+s], ebx ; 137: atol((const char *)(v7 + 1)); mov ecx, [ebp+s] push ecx ; s call _atol pop ecx ; 142: ++v38; loc_4012D1: ; CODE XREF: WinMain+8Ej WinMain+B6j ... inc [ebp+var_28] add edi, 4 mov eax, [ebp+var_28] cmp eax, [ebp+var_24] jl loc_4011EE ; 144: v17 = fopen("data\\language.cfg", "rb"); loc_4012E3: ; CODE XREF: WinMain+80j push offset mode ; "rb" push offset path ; "data\\language.cfg" call _fopen ; 145: v18 = v17; add esp, 8 mov ebx, eax ; 146: if ( v17 ) test ebx, ebx jz short loc_401327 ; 148: fread(&byte_403075, 1u, 1u, v17); push ebx ; stream push 1 ; n push 1 ; size push offset byte_403075 ; ptr call _fread ; 149: fclose(v18); add esp, 10h push ebx ; stream call _fclose ; 150: if ( byte_403075 == 69 ) pop ecx movsx eax, ds:byte_403075 cmp eax, 45h jnz short loc_401327 ; 151: byte_403075 = 0; mov ds:byte_403075, 0 ; 153: if ( (unsigned __int8)sub_401758((int)&unk_40369C, "error.str") ) loc_401327: ; CODE XREF: WinMain+191j WinMain+1B6j push offset aError_str ; "error.str" push offset unk_40369C ; int call sub_401758 add esp, 8 test al, al jz short loc_40136B ; 155: sub_4018AC((int)&unk_40369C, (int)&lpText, 6, 0); push 0 push 6 push offset lpText push offset unk_40369C call sub_4018AC ; 156: sub_4018AC((int)&unk_40369C, (int)&lpCaption, 3, 0); add esp, 10h push 0 push 3 push offset lpCaption push offset unk_40369C call sub_4018AC add esp, 10h jmp short loc_401385 ; --------------------------------------------------------------------------- ; 278: MessageBoxA(0, "Missing string resource: error.str.", "Error", 0x30u); loc_40136B: ; CODE XREF: WinMain+1D3j push 30h ; uType push offset Caption ; "Error" push offset Text ; "Missing string resource: error.str." push 0 ; hWnd call MessageBoxA ; 279: result = 0; xor eax, eax jmp loc_401675 ; --------------------------------------------------------------------------- ; 161: value = 0; loc_401385: ; CODE XREF: WinMain+201j mov edx, ds:dword_40308B xor ecx, ecx ; 157: v34 = dword_40308B; mov [ebp+var_38], edx ; 158: v35 = dword_40308F; mov edx, ds:dword_40308F mov [ebp+var_34], edx ; 159: v19 = 20000000; mov ebx, 1312D00h ; 160: v36 = word_403093; mov dx, ds:word_403093 mov [ebp+var_30], dx mov [ebp+value], ecx jmp short loc_4013B4 ; --------------------------------------------------------------------------- ; 167: v19 -= 200000; loc_4013AE: ; CODE XREF: WinMain+258j sub ebx, 30D40h ; 164: v21 = GlobalAlloc(0, v19); loc_4013B4: ; CODE XREF: WinMain+244j push ebx ; dwBytes push 0 ; uFlags call GlobalAlloc ; 162: while ( 1 ) mov edi, eax ; 166: break; test eax, eax ; 165: if ( v21 ) jz short loc_4013AE ; 169: GlobalMemoryStatus(&Buffer); lea edx, [ebp+Buffer] push edx ; lpBuffer call GlobalMemoryStatus ; 170: GlobalFree(v21); push edi ; hMem call GlobalFree ; 180: if ( (signed int)v22 > (signed int)(v19 + Buffer.dwAvailPageFile) ) mov edx, [ebp+Buffer.dwAvailPageFile] mov ecx, [ebp+Buffer.dwTotalPhys] add edx, ebx ; 172: if ( Buffer.dwTotalPhys < 0xDAC000 ) cmp ecx, 0DAC000h ; 171: v22 = 18000000; mov eax, 112A880h jnb short loc_4013F4 ; 173: v22 = 12000000; mov eax, 0B71B00h ; 174: if ( Buffer.dwTotalPhys >= 0x73A000 ) loc_4013F4: ; CODE XREF: WinMain+285j cmp ecx, 73A000h jnb short loc_40141C ; 200: MessageBoxA(0, lpText, lpCaption, 0x30u); push 30h ; uType mov edx, ds:lpCaption push edx ; lpCaption mov ecx, ds:lpText push ecx ; lpText push 0 ; hWnd call MessageBoxA ; 201: ::value = 0; xor eax, eax mov ds:value, eax jmp short loc_401493 ; --------------------------------------------------------------------------- ; 176: if ( Buffer.dwTotalPageFile ) loc_40141C: ; CODE XREF: WinMain+292j cmp [ebp+Buffer.dwTotalPageFile], 0 jnz short loc_401445 ; 194: MessageBoxA(0, dword_4036B0, lpCaption, 0x30u); push 30h ; uType mov edx, ds:lpCaption push edx ; lpCaption mov ecx, ds:dword_4036B0 push ecx ; lpText push 0 ; hWnd call MessageBoxA ; 195: ::value = 0; xor eax, eax mov ds:value, eax jmp short loc_401493 ; --------------------------------------------------------------------------- ; 178: if ( Buffer.dwTotalPageFile >= 0x7A1200 ) loc_401445: ; CODE XREF: WinMain+2BBj cmp [ebp+Buffer.dwTotalPageFile], 7A1200h jnb short loc_401471 ; 188: MessageBoxA(0, dword_4036B4, lpCaption, 0x30u); push 30h ; uType mov edx, ds:lpCaption push edx ; lpCaption mov ecx, ds:dword_4036B4 push ecx ; lpText push 0 ; hWnd call MessageBoxA ; 189: ::value = 0; xor eax, eax mov ds:value, eax jmp short loc_401493 ; --------------------------------------------------------------------------- loc_401471: ; CODE XREF: WinMain+2E7j cmp eax, edx jle short loc_401493 ; 182: MessageBoxA(0, dword_4036B4, lpCaption, 0x30u); push 30h ; uType mov edx, ds:lpCaption push edx ; lpCaption mov ecx, ds:dword_4036B4 push ecx ; lpText push 0 ; hWnd call MessageBoxA ; 183: ::value = 0; xor eax, eax mov ds:value, eax ; 203: memcpy(&v27, &unk_403095, 0x14u); loc_401493: ; CODE XREF: WinMain+2B2j WinMain+2DBj ... push esi mov esi, offset unk_403095 lea edi, [ebp+var_2C8] mov ecx, 5 rep movsd pop esi jmp loc_401666 ; --------------------------------------------------------------------------- ; 206: v23 = 0; loc_4014AC: ; CODE XREF: WinMain+505j xor edi, edi ; 207: if ( v40 ) cmp [ebp+var_20], 0 jz short loc_4014BE ; 208: ::value = 2; mov ds:value, 2 loc_4014BE: ; CODE XREF: WinMain+34Aj mov eax, ds:value cmp eax, 6 ; switch 7 cases ja loc_40165E ; default ; jumptable 004014CC case 0 ; 209: switch ( ::value ) jmp off_4014D3[eax*4] ; switch jump ; --------------------------------------------------------------------------- off_4014D3 dd offset loc_40165E ; DATA XREF: WinMain+364r dd offset loc_4014EF ; jump table for switch statement dd offset loc_401582 dd offset loc_4014EF dd offset loc_4014EF dd offset loc_40157D dd offset loc_4014EF ; --------------------------------------------------------------------------- ; 215: *(_DWORD *)v5 = "dummy"; loc_4014EF: ; CODE XREF: WinMain+364j ; DATA XREF: WinMain:off_4014D3o xor ebx, ebx ; jumptable 004014CC cases 1,3,4,6 mov dword ptr [esi+ebx*4], offset aDummy ; "dummy" ; 216: *(_DWORD *)(v5 + 4) = "-eggplant"; inc ebx mov dword ptr [esi+ebx*4], offset aEggplant ; "-eggplant" ; 217: itoa(::value, &string, 10); inc ebx push 0Ah ; radix lea eax, [ebp+string] push eax ; string mov edx, ds:value push edx ; value call _itoa ; 218: *(_DWORD *)(v5 + 8) = &v27; add esp, 0Ch lea ecx, [ebp+var_2C8] mov [esi+ebx*4], ecx ; 219: v24 = 3; inc ebx ; 220: if ( v46 ) cmp [ebp+var_8], 0 jz short loc_401531 ; 222: *(_DWORD *)(v5 + 12) = "-s"; mov dword ptr [esi+ebx*4], offset aS ; "-s" ; 223: v24 = 4; inc ebx ; 225: if ( v44 ) loc_401531: ; CODE XREF: WinMain+3BFj cmp [ebp+var_10], 0 jz short loc_40153F ; 226: *(_DWORD *)(v5 + 4 * v24++) = "-a"; mov dword ptr [esi+ebx*4], offset aA ; "-a" inc ebx ; 227: if ( v41 ) loc_40153F: ; CODE XREF: WinMain+3CDj cmp [ebp+var_1C], 0 jz short loc_40154D ; 228: *(_DWORD *)(v5 + 4 * v24++) = "-@"; mov dword ptr [esi+ebx*4], offset a@ ; "-@" inc ebx ; 229: if ( byte_403075 ) loc_40154D: ; CODE XREF: WinMain+3DBj cmp ds:byte_403075, 0 jz short loc_40155E ; 230: *(_DWORD *)(v5 + 4 * v24++) = &unk_403074; mov dword ptr [esi+ebx*4], offset unk_403074 inc ebx ; 231: *(_DWORD *)(v5 + 4 * v24) = 0; loc_40155E: ; CODE XREF: WinMain+3ECj xor eax, eax mov [esi+ebx*4], eax ; 232: ::value = spawnv(0, "vshell", (char *const *)v5); push esi ; argv push offset aVshell ; "vshell" push 0 ; mode call _spawnv add esp, 0Ch mov ds:value, eax ; 233: break; jmp loc_401666 ; --------------------------------------------------------------------------- ; 235: v23 = 1; ; 236: goto LABEL_59; loc_40157D: ; CODE XREF: WinMain+364j ; DATA XREF: WinMain:off_4014D3o mov edi, 1 ; jumptable 004014CC case 5 ; 238: LABEL_59: ; 239: *(_DWORD *)v5 = "dummy"; loc_401582: ; CODE XREF: WinMain+364j ; DATA XREF: WinMain:off_4014D3o xor ebx, ebx ; jumptable 004014CC case 2 mov dword ptr [esi+ebx*4], offset aDummy_0 ; "dummy" ; 240: *(_DWORD *)(v5 + 4) = "-eggplant"; inc ebx mov dword ptr [esi+ebx*4], offset aEggplant_0 ; "-eggplant" ; 241: itoa(::value, &string, 10); inc ebx push 0Ah ; radix lea eax, [ebp+string] push eax ; string mov edx, ds:value push edx ; value call _itoa ; 242: *(_DWORD *)(v5 + 8) = &v27; add esp, 0Ch lea ecx, [ebp+var_2C8] mov [esi+ebx*4], ecx ; 244: itoa(v26, (char *)&v34 + 2, 10); inc ebx push 0Ah ; radix ; 243: v26 = value++; lea eax, [ebp+var_38+2] push eax ; string mov edx, [ebp+value] inc [ebp+value] push edx ; value call _itoa ; 245: *(_DWORD *)(v5 + 12) = &v34; add esp, 0Ch lea ecx, [ebp+var_38] mov [esi+ebx*4], ecx ; 246: v25 = 4; inc ebx ; 247: if ( v46 ) cmp [ebp+var_8], 0 jz short loc_4015E0 ; 249: *(_DWORD *)(v5 + 16) = "-s"; mov dword ptr [esi+ebx*4], offset aS_0 ; "-s" ; 250: v25 = 5; inc ebx ; 252: if ( v43 ) loc_4015E0: ; CODE XREF: WinMain+46Ej cmp [ebp+var_14], 0 jz short loc_4015EE ; 253: *(_DWORD *)(v5 + 4 * v25++) = "-m"; mov dword ptr [esi+ebx*4], offset aM ; "-m" inc ebx ; 254: if ( v23 ) loc_4015EE: ; CODE XREF: WinMain+47Cj test edi, edi jz short loc_4015FA ; 255: *(_DWORD *)(v5 + 4 * v25++) = "-D"; mov dword ptr [esi+ebx*4], offset aD ; "-D" inc ebx ; 256: if ( !v47 ) loc_4015FA: ; CODE XREF: WinMain+488j cmp [ebp+var_4], 0 jnz short loc_401608 ; 257: *(_DWORD *)(v5 + 4 * v25++) = "-Z"; mov dword ptr [esi+ebx*4], offset aZ ; "-Z" inc ebx ; 258: if ( v45 ) loc_401608: ; CODE XREF: WinMain+496j cmp [ebp+var_C], 0 jz short loc_401616 ; 259: *(_DWORD *)(v5 + 4 * v25++) = "-l"; mov dword ptr [esi+ebx*4], offset asc_403163 ; "-l" inc ebx ; 260: if ( v42 ) loc_401616: ; CODE XREF: WinMain+4A4j cmp [ebp+var_18], 0 jz short loc_401623 ; 261: *(_DWORD *)(v5 + 4 * v25++) = &dest; lea eax, [ebp+dest] mov [esi+ebx*4], eax inc ebx ; 262: if ( v41 ) loc_401623: ; CODE XREF: WinMain+4B2j cmp [ebp+var_1C], 0 jz short loc_401631 ; 263: *(_DWORD *)(v5 + 4 * v25++) = "-SPRUNKNOWN"; mov dword ptr [esi+ebx*4], offset aSprunknown_0 ; "-SPRUNKNOWN" inc ebx ; 264: if ( byte_403075 ) loc_401631: ; CODE XREF: WinMain+4BFj cmp ds:byte_403075, 0 jz short loc_401642 ; 265: *(_DWORD *)(v5 + 4 * v25++) = &unk_403074; mov dword ptr [esi+ebx*4], offset unk_403074 inc ebx ; 266: *(_DWORD *)(v5 + 4 * v25) = 0; loc_401642: ; CODE XREF: WinMain+4D0j xor edx, edx mov [esi+ebx*4], edx ; 267: ::value = spawnv(0, "dbsim", (char *const *)v5); push esi ; argv push offset aDbsim ; "dbsim" push 0 ; mode call _spawnv add esp, 0Ch mov ds:value, eax ; 268: break; ; 269: default: jmp short loc_401666 ; --------------------------------------------------------------------------- ; 270: ::value = 0; loc_40165E: ; CODE XREF: WinMain+35Ej WinMain+364j ; DATA XREF: ... xor ecx, ecx ; default ; jumptable 004014CC case 0 ; 271: break; mov ds:value, ecx ; 204: while ( ::value ) loc_401666: ; CODE XREF: WinMain+33Fj WinMain+410j ... cmp ds:value, 0 jnz loc_4014AC ; 274: result = 0; xor eax, eax ; 281: return result; loc_401675: ; CODE XREF: WinMain+218j pop edi pop esi pop ebx mov esp, ebp pop ebp retn 10h WinMain endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_401680 proc near ; DATA XREF: DATA:00403486o var_20 = dword ptr -20h var_10 = word ptr -10h push ebp mov ebp, esp add esp, 0FFFFFFE0h mov eax, offset unk_4030B9 call @__InitExceptBlock mov [ebp+var_10], 8 push offset unk_40369C call sub_401704 pop ecx mov edx, [ebp+var_20] mov large fs:0, edx mov esp, ebp pop ebp retn sub_401680 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_4016B0 proc near ; DATA XREF: DATA:00403492o push 2 ; char push offset unk_40369C ; void * call sub_401728 add esp, 8 retn sub_4016B0 endp ; --------------------------------------------------------------------------- stru_4016C0 dd 10h ; tpDtt ; DATA XREF: DATA:off_4030A9o dw 3 ; tpMask dw 30h ; tpName dd 0FFFFFFFFh ; bParent dd 3 ; tpcFlags dw 38h ; Size dw 3Ch ; ExpDim dd 0 ; mfnDel dw 0 ; mfnMask dw 0 ; mfnMaskArr dd 0 ; mfnDelArr dd 1 ; DtorCount dd 1 ; DtorAltCount dd offset sub_401728 ; DtorAddr dw 1 ; DtorMask dw 40h ; DtorMemberOff db 'Strings',0 ; Name dd 0 dd 0 dd 0 ; end of tpid ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_401704 proc near ; CODE XREF: sub_401680+1Bp arg_0 = dword ptr 8 push ebp mov ebp, esp xor edx, edx xor ecx, ecx mov eax, [ebp+arg_0] mov [eax+4], edx mov [eax], edx mov [eax+8], ecx mov [eax+0Eh], cx mov [eax+0Ch], cx mov edx, ds:dword_4038F8 inc dword ptr [edx] pop ebp retn sub_401704 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_401728(void *, char) sub_401728 proc near ; CODE XREF: sub_4016B0+7p ; DATA XREF: CODE:stru_4016C0o arg_0 = dword ptr 8 arg_4 = byte ptr 0Ch push ebp mov ebp, esp mov eax, ds:dword_4038F8 push ebx mov ebx, [ebp+arg_0] dec dword ptr [eax] test ebx, ebx jz short loc_401754 mov eax, [ebx] test eax, eax jz short loc_401747 push eax ; void * call @$bdla$qpv ; operator delete[](void *) pop ecx loc_401747: ; CODE XREF: sub_401728+16j test [ebp+arg_4], 1 jz short loc_401754 push ebx ; void * call @$bdele$qpv ; operator delete(void *) pop ecx loc_401754: ; CODE XREF: sub_401728+10j ; sub_401728+23j pop ebx pop ebp retn sub_401728 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_401758(int, char *path) sub_401758 proc near ; CODE XREF: WinMain+1C9p var_2C = dword ptr -2Ch var_1C = word ptr -1Ch var_C = dword ptr -0Ch var_8 = dword ptr -8 arg_0 = dword ptr 8 path = dword ptr 0Ch push ebp mov ebp, esp add esp, 0FFFFFFD4h mov eax, offset unk_403188 push ebx mov ebx, [ebp+arg_0] call @__InitExceptBlock mov [ebp+var_1C], 8 mov edx, [ebp+path] push edx ; path lea ecx, [ebp+var_C] push ecx ; int call sub_401EA0 add esp, 8 cmp [ebp+var_8], 0 jnz short loc_4017B1 lea eax, [ebp+var_C] push eax push ebx call sub_4017D4 add esp, 8 lea edx, [ebp+var_C] push eax push 2 ; char push edx ; void * call sub_401ED8 add esp, 8 pop eax mov edx, [ebp+var_2C] mov large fs:0, edx jmp short loc_4017CD ; --------------------------------------------------------------------------- loc_4017B1: ; CODE XREF: sub_401758+2Ej xor eax, eax lea edx, [ebp+var_C] push eax push 2 ; char push edx ; void * call sub_401ED8 add esp, 8 pop eax mov edx, [ebp+var_2C] mov large fs:0, edx loc_4017CD: ; CODE XREF: sub_401758+57j pop ebx mov esp, ebp pop ebp retn sub_401758 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4017D4 proc near ; CODE XREF: sub_401758+35p arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ebx push esi push edi mov edi, [ebp+arg_4] mov ebx, [ebp+arg_0] lea eax, [ebx+8] push eax push 4 push edi mov edx, [edi] call dword ptr [edx+18h] add esp, 0Ch mov ecx, [ebx+8] push ecx call @$bnwa$qui ; operator new[](uint) pop ecx mov esi, eax mov [ebx], esi test esi, esi jz short loc_40181A mov eax, esi mov edx, [ebx+8] push eax push edx push edi mov ecx, [edi] call dword ptr [ecx+18h] add esp, 0Ch mov eax, [ebx] mov [ebx+4], eax mov al, 1 jmp short loc_40181C ; --------------------------------------------------------------------------- loc_40181A: ; CODE XREF: sub_4017D4+2Bj xor eax, eax loc_40181C: ; CODE XREF: sub_4017D4+44j pop edi pop esi pop ebx pop ebp retn sub_4017D4 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_401824 proc near ; CODE XREF: sub_4018AC+24p arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp push ebx push esi mov eax, [ebp+arg_0] mov edx, [eax+4] mov ecx, [eax] add ecx, [eax+8] cmp ecx, [eax+4] setnbe cl and ecx, 1 test cl, cl jnz short loc_401845 xor eax, eax jmp short loc_4018A5 ; --------------------------------------------------------------------------- loc_401845: ; CODE XREF: sub_401824+1Bj cmp word ptr [eax+0Ch], 0 jnz short loc_40185F mov cx, [edx] add edx, 2 mov [eax+0Ch], cx mov [eax+4], edx mov word ptr [eax+0Eh], 0 loc_40185F: ; CODE XREF: sub_401824+26j mov cx, [eax+0Eh] cmp cx, [eax+0Ch] jge short loc_401899 mov bx, [edx] mov esi, [ebp+arg_4] add edx, 2 mov [esi], edx mov ecx, edx movsx edx, bx add ecx, edx mov dl, [ecx] inc ecx cmp [ebp+arg_8], 0 jz short loc_40188E movsx edx, dl mov ebx, [ebp+arg_8] mov [ebx], ecx add ecx, edx loc_40188E: ; CODE XREF: sub_401824+5Ej mov [eax+4], ecx inc word ptr [eax+0Eh] mov al, 1 jmp short loc_4018A5 ; --------------------------------------------------------------------------- loc_401899: ; CODE XREF: sub_401824+43j xor ecx, ecx mov [eax+0Eh], cx mov [eax+0Ch], cx xor eax, eax loc_4018A5: ; CODE XREF: sub_401824+1Fj ; sub_401824+73j pop esi pop ebx pop ebp retn sub_401824 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4018AC proc near ; CODE XREF: WinMain+1E3p WinMain+1F9p var_2 = word ptr -2 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_C = dword ptr 14h push ebp mov ebp, esp push ecx push ebx push esi push edi mov eax, [ebp+arg_0] mov eax, [eax+4] mov dx, [eax] mov [ebp+var_2], dx mov esi, [ebp+arg_4] mov ebx, [ebp+arg_C] xor edi, edi jmp short loc_4018E3 ; --------------------------------------------------------------------------- loc_4018CA: ; CODE XREF: sub_4018AC+3Dj push ebx push esi mov eax, [ebp+arg_0] push eax call sub_401824 add esp, 0Ch test ebx, ebx jz short loc_4018DF add ebx, 4 loc_4018DF: ; CODE XREF: sub_4018AC+2Ej inc edi add esi, 4 loc_4018E3: ; CODE XREF: sub_4018AC+1Cj movsx edx, [ebp+var_2] cmp edi, edx jl short loc_4018CA mov ecx, [ebp+arg_0] mov word ptr [ecx+0Ch], 0 mov ax, [ebp+var_2] pop edi pop esi pop ebx pop ecx pop ebp retn sub_4018AC endp ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp mov eax, [ebp+8] mov edx, [eax] test edx, edx jz short loc_401916 mov eax, edx add eax, 2 add eax, 2 pop ebp retn ; --------------------------------------------------------------------------- loc_401916: ; CODE XREF: CODE:0040190Aj xor eax, eax pop ebp retn ; --------------------------------------------------------------------------- align 4 push ebp mov ebp, esp push ebx mov edx, [ebp+8] mov eax, [ebp+0Ch] mov ecx, eax mov ebx, [edx] add ebx, [edx+8] cmp ebx, eax setnbe dl and edx, 1 test dl, dl jz short loc_401952 sub ecx, 2 mov dx, [ecx] movsx ecx, dx add eax, ecx mov dl, [eax] inc eax movsx ecx, dl add ecx, 2 add eax, ecx pop ebx pop ebp retn ; --------------------------------------------------------------------------- loc_401952: ; CODE XREF: CODE:00401937j xor eax, eax pop ebx pop ebp retn ; --------------------------------------------------------------------------- align 4 push ebp mov ebp, esp push ebx mov edx, [ebp+8] mov eax, [ebp+0Ch] mov ecx, eax mov ebx, [edx] add ebx, [edx+8] cmp ebx, eax setnbe dl and edx, 1 test dl, dl jz short loc_40198A mov dx, [ecx-2] movsx ecx, dx add eax, ecx mov dl, [eax] inc eax test dl, dl jnz short loc_40198C xor eax, eax pop ebx pop ebp retn ; --------------------------------------------------------------------------- loc_40198A: ; CODE XREF: CODE:00401973j xor eax, eax loc_40198C: ; CODE XREF: CODE:00401983j pop ebx pop ebp retn ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_401990 proc near ; CODE XREF: sub_401AD4+1Bp arg_0 = dword ptr 8 push ebp mov ebp, esp push ebx mov ebx, [ebp+arg_0] push 0 ; buf push 0 ; int push 0 ; int push 1 ; int push 0 ; int call sub_401CAC add esp, 14h mov eax, ds:dword_4038F8 inc dword ptr [eax] mov eax, ebx pop ebx pop ebp retn sub_401990 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_4019B8(void *, char) sub_4019B8 proc near ; CODE XREF: sub_401B04+7p ; DATA XREF: CODE:stru_401B14o arg_0 = dword ptr 8 arg_4 = byte ptr 0Ch push ebp mov ebp, esp mov eax, ds:dword_4038F8 push ebx mov ebx, [ebp+arg_0] dec dword ptr [eax] test ebx, ebx jz short loc_4019E9 push 0 ; buf push 0 ; int push 0 ; int push 1 ; int push 1 ; int call sub_401CAC add esp, 14h test [ebp+arg_4], 1 jz short loc_4019E9 push ebx ; void * call @$bdele$qpv ; operator delete(void *) pop ecx loc_4019E9: ; CODE XREF: sub_4019B8+10j ; sub_4019B8+28j pop ebx pop ebp retn sub_4019B8 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4019EC proc near ; CODE XREF: CODE:00401A33p arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ebx push esi mov esi, [ebp+arg_4] mov ebx, ds:dword_4037A0 test ebx, ebx jz short loc_401A09 loc_4019FE: ; CODE XREF: sub_4019EC+1Bj push esi call dword ptr [ebx+4] pop ecx mov ebx, [ebx] test ebx, ebx jnz short loc_4019FE loc_401A09: ; CODE XREF: sub_4019EC+10j pop esi pop ebx pop ebp retn sub_4019EC endp ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp push ebx push esi push edi mov edi, [ebp+14h] mov esi, [ebp+10h] mov ebx, [ebp+0Ch] mov eax, [ebp+8] cmp ebx, 4 jz short loc_401A31 cmp ebx, 5 jz short loc_401A31 cmp ebx, 6 jnz short loc_401A6A loc_401A31: ; CODE XREF: CODE:00401A25j ; CODE:00401A2Aj push ebx push eax call sub_4019EC add esp, 8 mov eax, [ebp+1Ch] push eax mov edx, [ebp+18h] push edx push edi push esi push ebx call sub_401CAC add esp, 14h push 0 push 0 push 0 push 1 push 1 call sub_401CAC add esp, 14h push 1 call __exit ; --------------------------------------------------------------------------- pop ecx jmp short loc_401A7D ; --------------------------------------------------------------------------- loc_401A6A: ; CODE XREF: CODE:00401A2Fj mov ecx, [ebp+1Ch] push ecx mov eax, [ebp+18h] push eax push edi push esi push ebx call sub_401CAC add esp, 14h loc_401A7D: ; CODE XREF: CODE:00401A68j pop edi pop esi pop ebx pop ebp retn ; --------------------------------------------------------------------------- align 4 push ebp mov ebp, esp push ebx push 8 call @$bnew$qui ; operator new(uint) pop ecx mov ebx, eax test eax, eax jnz short loc_401AAD push offset _fputs push offset aAssertAssert_a ; "Assert::assert_abort_notify: Cannot all"... call _fputs add esp, 8 call _abort ; --------------------------------------------------------------------------- loc_401AAD: ; CODE XREF: CODE:00401A94j mov edx, ds:dword_4037A0 mov [ebx], edx mov ecx, [ebp+8] mov [ebx+4], ecx mov ds:dword_4037A0, ebx pop ebx pop ebp retn ; --------------------------------------------------------------------------- mov eax, ds:dword_403794 retn ; --------------------------------------------------------------------------- align 4 mov eax, ds:dword_403798 retn ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_401AD4 proc near ; DATA XREF: DATA:0040348Co var_20 = dword ptr -20h var_10 = word ptr -10h push ebp mov ebp, esp add esp, 0FFFFFFE0h mov eax, offset unk_4031AC call @__InitExceptBlock mov [ebp+var_10], 8 push offset unk_403790 call sub_401990 pop ecx mov edx, [ebp+var_20] mov large fs:0, edx mov esp, ebp pop ebp retn sub_401AD4 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_401B04 proc near ; DATA XREF: DATA:00403498o push 2 ; char push offset unk_403790 ; void * call sub_4019B8 add esp, 8 retn sub_401B04 endp ; --------------------------------------------------------------------------- stru_401B14 dd 1 ; tpDtt ; DATA XREF: DATA:off_40319Co dw 3 ; tpMask dw 30h ; tpName dd 0FFFFFFFFh ; bParent dd 3 ; tpcFlags dw 38h ; Size dw 3Ch ; ExpDim dd 0 ; mfnDel dw 0 ; mfnMask dw 0 ; mfnMaskArr dd 0 ; mfnDelArr dd 1 ; DtorCount dd 1 ; DtorAltCount dd offset sub_4019B8 ; DtorAddr dw 1 ; DtorMask dw 40h ; DtorMemberOff db 'Assert',0 ; Name align 4 dd 0 dd 0 dd 0 ; end of tpid ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_401B58(char *buffer, int, int, int, int) sub_401B58 proc near ; CODE XREF: sub_401CAC+62p ; sub_401CAC+A8p buffer = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h arg_10 = dword ptr 18h push ebp mov ebp, esp push ebx push esi mov esi, [ebp+arg_10] mov ebx, [ebp+buffer] mov eax, [ebp+arg_8] push eax mov edx, [ebp+arg_C] push edx mov ecx, [ebp+arg_4] mov eax, ds:off_4032AC[ecx*4] push eax push offset format ; "Assert::%s: Line %d in \"%s\"" push ebx ; buffer call _sprintf add esp, 14h test esi, esi jz short loc_401B99 push esi push offset aS_1 ; ": %s" add eax, ebx push eax ; buffer call _sprintf add esp, 0Ch loc_401B99: ; CODE XREF: sub_401B58+2Ej pop esi pop ebx pop ebp retn sub_401B58 endp ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp push esi push edi mov eax, [ebp+8] mov esi, offset unk_4037A4 mov edi, eax xor eax, eax or ecx, 0FFFFFFFFh repne scasb not ecx sub edi, ecx mov edx, ecx xchg esi, edi shr ecx, 2 mov eax, edi rep movsd mov ecx, edx and ecx, 3 rep movsb pop edi pop esi pop ebp retn ; =============== S U B R O U T I N E ======================================= sub_401BD0 proc near ; CODE XREF: sub_401C14+27p push esi push edi xor eax, eax or ecx, 0FFFFFFFFh mov edi, offset unk_4037A4 mov esi, offset dest repne scasb not ecx sub edi, ecx mov edx, ecx xchg esi, edi shr ecx, 2 mov eax, edi rep movsd mov ecx, edx and ecx, 3 rep movsb push offset src ; "assert.log" push offset dest ; dest call _strcat add esp, 8 mov eax, offset dest pop edi pop esi retn sub_401BD0 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_401C14(void *buf) sub_401C14 proc near ; CODE XREF: sub_401CAC+43p ; sub_401CAC+71p ... var_3 = word ptr -3 var_1 = byte ptr -1 buf = dword ptr 8 push ebp mov ebp, esp mov ax, ds:word_4032CC push ecx push ebx push esi mov esi, [ebp+buf] mov [ebp+var_3], ax mov al, ds:byte_4032CE mov [ebp+var_1], al push 180h push 901h ; access call sub_401BD0 push eax ; path call _open add esp, 0Ch mov ebx, eax test eax, eax jl short loc_401C9F cmp ds:dword_4032C8, 0 jz short loc_401C70 push 50h ; len push offset asc_403203 ; "---------------------------------------"... push ebx ; handle call _write add esp, 0Ch xor edx, edx mov ds:dword_4032C8, edx loc_401C70: ; CODE XREF: sub_401C14+42j mov eax, esi jmp short loc_401C75 ; --------------------------------------------------------------------------- loc_401C74: ; CODE XREF: sub_401C14+64j inc eax loc_401C75: ; CODE XREF: sub_401C14+5Ej cmp byte ptr [eax], 0 jnz short loc_401C74 sub eax, esi push eax ; len push esi ; buf push ebx ; handle call _write add esp, 0Ch lea edx, [ebp+var_3] push 2 ; len push edx ; buf push ebx ; handle call _write add esp, 0Ch push ebx ; handle call _close pop ecx jmp short loc_401CA4 ; --------------------------------------------------------------------------- loc_401C9F: ; CODE XREF: sub_401C14+39j call _abort ; --------------------------------------------------------------------------- loc_401CA4: ; CODE XREF: sub_401C14+89j pop esi pop ebx pop ecx pop ebp retn sub_401C14 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_401CAC(int, int, int, int, int buf) sub_401CAC proc near ; CODE XREF: sub_401990+11p ; sub_4019B8+1Cp ... buffer = byte ptr -200h arg_0 = dword ptr 8 arg_8 = dword ptr 10h arg_C = dword ptr 14h buf = dword ptr 18h push ebp mov ebp, esp add esp, 0FFFFFE00h mov eax, [ebp+arg_0] mov edx, eax cmp edx, 6 ; switch 7 cases ja loc_401D8C ; default ; jumptable 00401CC3 cases 0,1,5 jmp off_401CCA[edx*4] ; switch jump ; --------------------------------------------------------------------------- off_401CCA dd offset loc_401D8C ; DATA XREF: sub_401CAC+17r dd offset loc_401D8C ; jump table for switch statement dd offset loc_401CEB dd offset loc_401D3A dd offset loc_401CFA dd offset loc_401D8C dd offset loc_401D80 ; --------------------------------------------------------------------------- jmp loc_401D8C ; default ; jumptable 00401CC3 cases 0,1,5 ; --------------------------------------------------------------------------- loc_401CEB: ; CODE XREF: sub_401CAC+17j ; DATA XREF: sub_401CAC:off_401CCAo mov eax, [ebp+buf] ; jumptable 00401CC3 case 2 push eax ; buf call sub_401C14 pop ecx jmp loc_401D8C ; default ; jumptable 00401CC3 cases 0,1,5 ; --------------------------------------------------------------------------- loc_401CFA: ; CODE XREF: sub_401CAC+17j ; DATA XREF: sub_401CAC:off_401CCAo mov ecx, [ebp+buf] ; jumptable 00401CC3 case 4 push ecx ; int mov edx, [ebp+arg_C] push edx ; int mov ecx, [ebp+arg_8] push ecx ; int push eax ; int lea eax, [ebp+buffer] push eax ; buffer call sub_401B58 add esp, 14h lea eax, [ebp+buffer] push eax ; buf call sub_401C14 pop ecx push 0 ; uType push offset aError_0 ; "Error" lea edx, [ebp+buffer] push edx ; lpText push 0 ; hWnd call MessageBoxA jmp short loc_401D8C ; default ; jumptable 00401CC3 cases 0,1,5 ; --------------------------------------------------------------------------- loc_401D3A: ; CODE XREF: sub_401CAC+17j ; DATA XREF: sub_401CAC:off_401CCAo inc ds:dword_4038F4 ; jumptable 00401CC3 case 3 mov ecx, [ebp+buf] push ecx ; int mov edx, [ebp+arg_C] push edx ; int mov ecx, [ebp+arg_8] push ecx ; int push eax ; int lea eax, [ebp+buffer] push eax ; buffer call sub_401B58 add esp, 14h lea eax, [ebp+buffer] push 0 ; uType push offset aError_1 ; "Error" push eax ; lpText push 0 ; hWnd call MessageBoxA lea edx, [ebp+buffer] push edx ; buf call sub_401C14 pop ecx jmp short loc_401D8C ; default ; jumptable 00401CC3 cases 0,1,5 ; --------------------------------------------------------------------------- loc_401D80: ; CODE XREF: sub_401CAC+17j ; DATA XREF: sub_401CAC:off_401CCAo mov eax, offset aAssertBreakCtr ; jumptable 00401CC3 case 6 push eax ; buf call sub_401C14 pop ecx loc_401D8C: ; CODE XREF: sub_401CAC+11j ; sub_401CAC+17j ... mov esp, ebp ; default ; jumptable 00401CC3 cases 0,1,5 pop ebp retn sub_401CAC endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_401D90 proc near ; CODE XREF: CODE:00401E2Cp ; CODE:00401E64p ... arg_0 = dword ptr 8 push ebp mov ebp, esp xor edx, edx mov eax, [ebp+arg_0] mov dword ptr [eax], offset off_40334C mov [eax+4], edx mov ecx, ds:dword_4038F8 inc dword ptr [ecx] pop ebp retn sub_401D90 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_401DAC(void *, char) sub_401DAC proc near ; CODE XREF: sub_401ED8+22p ; DATA XREF: CODE:`__tpdsc__'[typeinfo]o ... arg_0 = dword ptr 8 arg_4 = byte ptr 0Ch push ebp mov ebp, esp mov eax, ds:dword_4038F8 push ebx mov ebx, [ebp+arg_0] dec dword ptr [eax] test ebx, ebx jz short loc_401DD8 mov dword ptr [ebx], offset off_40334C push ebx mov edx, [ebx] call dword ptr [edx+10h] test [ebp+arg_4], 1 pop ecx jz short loc_401DD8 push ebx ; void * call @$bdele$qpv ; operator delete(void *) pop ecx loc_401DD8: ; CODE XREF: sub_401DAC+10j ; sub_401DAC+23j pop ebx pop ebp retn sub_401DAC endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_401DDC proc near ; DATA XREF: DATA:00403358o arg_4 = dword ptr 0Ch push ebp mov ebp, esp mov eax, [ebp+arg_4] sub eax, 1 jb short loc_401DEE sub eax, 4 jb short loc_401DF2 jmp short loc_401DF6 ; --------------------------------------------------------------------------- loc_401DEE: ; CODE XREF: sub_401DDC+9j xor eax, eax pop ebp retn ; --------------------------------------------------------------------------- loc_401DF2: ; CODE XREF: sub_401DDC+Ej xor eax, eax pop ebp retn ; --------------------------------------------------------------------------- loc_401DF6: ; CODE XREF: sub_401DDC+10j xor eax, eax pop ebp retn sub_401DDC endp ; --------------------------------------------------------------------------- align 4 ; [00000007 BYTES: COLLAPSED FUNCTION __GetPolymorphicDTC(void *,uint). PRESS KEYPAD "+" TO EXPAND] align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_401E04 proc near ; DATA XREF: DATA:00403354o push ebp mov ebp, esp mov al, 1 pop ebp retn sub_401E04 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_401E0C proc near ; DATA XREF: DATA:0040335Co push ebp mov ebp, esp mov al, 1 pop ebp retn sub_401E0C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_401E14 proc near ; DATA XREF: DATA:00403360o push ebp mov ebp, esp mov al, 1 pop ebp retn sub_401E14 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_401E1C proc near ; DATA XREF: DATA:00403364o push ebp mov ebp, esp mov al, 1 pop ebp retn sub_401E1C endp ; --------------------------------------------------------------------------- align 4 push ebp mov ebp, esp push ebx mov ebx, [ebp+8] push ebx call sub_401D90 pop ecx mov dword ptr [ebx], offset off_403374 mov word ptr [ebx+8], 0FFFFh mov dword ptr [ebx+4], 5 mov byte ptr [ebx+0Ah], 0 mov eax, ds:dword_4038F8 inc dword ptr [eax] mov eax, ebx pop ebx pop ebp retn ; --------------------------------------------------------------------------- align 4 push ebp mov ebp, esp push ebx push esi mov esi, [ebp+0Ch] mov ebx, [ebp+8] push ebx call sub_401D90 pop ecx mov dword ptr [ebx], offset off_403374 mov [ebx+8], si push 1 push 0 movsx eax, si push eax call _lseek add esp, 0Ch inc eax jnz short loc_401E8E push ebx call sub_4020C0 pop ecx loc_401E8E: ; CODE XREF: CODE:00401E85j mov byte ptr [ebx+0Ah], 0 mov edx, ds:dword_4038F8 mov eax, ebx inc dword ptr [edx] pop esi pop ebx pop ebp retn ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_401EA0(int, char *path) sub_401EA0 proc near ; CODE XREF: sub_401758+22p arg_0 = dword ptr 8 path = dword ptr 0Ch push ebp mov ebp, esp push ebx mov ebx, [ebp+arg_0] push ebx call sub_401D90 pop ecx mov dword ptr [ebx], offset off_403374 mov word ptr [ebx+8], 0FFFFh mov byte ptr [ebx+0Ah], 0 mov eax, [ebp+path] push eax ; path push ebx ; int call sub_401FC8 add esp, 8 mov edx, ds:dword_4038F8 inc dword ptr [edx] mov eax, ebx pop ebx pop ebp retn sub_401EA0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_401ED8(void *, char) sub_401ED8 proc near ; CODE XREF: sub_401758+44p ; sub_401758+62p ; DATA XREF: ... arg_0 = dword ptr 8 arg_4 = byte ptr 0Ch push ebp mov ebp, esp mov eax, ds:dword_4038F8 push ebx mov ebx, [ebp+arg_0] dec dword ptr [eax] test ebx, ebx jz short loc_401F0F mov dword ptr [ebx], offset off_403374 push ebx call sub_401F88 pop ecx push 0 ; char push ebx ; void * call sub_401DAC add esp, 8 test [ebp+arg_4], 1 jz short loc_401F0F push ebx ; void * call @$bdele$qpv ; operator delete(void *) pop ecx loc_401F0F: ; CODE XREF: sub_401ED8+10j ; sub_401ED8+2Ej pop ebx pop ebp retn sub_401ED8 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_401F14 proc near ; DATA XREF: DATA:00403380o arg_4 = dword ptr 0Ch push ebp mov ebp, esp mov eax, [ebp+arg_4] sub eax, 1 jb short loc_401F2B jz short loc_401F39 dec eax sub eax, 2 jb short loc_401F32 jz short loc_401F39 jmp short loc_401F3D ; --------------------------------------------------------------------------- loc_401F2B: ; CODE XREF: sub_401F14+9j mov eax, 2 pop ebp retn ; --------------------------------------------------------------------------- loc_401F32: ; CODE XREF: sub_401F14+11j mov eax, 1 pop ebp retn ; --------------------------------------------------------------------------- loc_401F39: ; CODE XREF: sub_401F14+Bj ; sub_401F14+13j xor eax, eax pop ebp retn ; --------------------------------------------------------------------------- loc_401F3D: ; CODE XREF: sub_401F14+15j xor eax, eax pop ebp retn sub_401F14 endp ; --------------------------------------------------------------------------- align 4 push ebp mov ebp, esp push ebx push esi mov esi, [ebp+0Ch] mov ebx, [ebp+8] push ebx call sub_401F88 pop ecx mov [ebx+8], si mov byte ptr [ebx+0Ah], 0 push 1 push 0 movsx eax, si push eax call _lseek add esp, 0Ch inc eax jnz short loc_401F7A push ebx call sub_4020C0 pop ecx jmp short loc_401F81 ; --------------------------------------------------------------------------- loc_401F7A: ; CODE XREF: CODE:00401F6Fj push ebx call sub_4021E4 pop ecx loc_401F81: ; CODE XREF: CODE:00401F78j pop esi pop ebx pop ebp retn ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_401F88 proc near ; CODE XREF: sub_401ED8+19p ; CODE:00401F50p ... arg_0 = dword ptr 8 push ebp mov ebp, esp push ebx mov ebx, [ebp+arg_0] cmp byte ptr [ebx+0Ah], 0 jz short loc_401FB6 cmp word ptr [ebx+8], 0FFFFh jz short loc_401FB6 movsx eax, word ptr [ebx+8] push eax ; handle call _close pop ecx inc eax jnz short loc_401FB6 mov dword ptr [ebx+4], 3 xor eax, eax pop ebx pop ebp retn ; --------------------------------------------------------------------------- loc_401FB6: ; CODE XREF: sub_401F88+Bj ; sub_401F88+12j ... mov word ptr [ebx+8], 0FFFFh mov dword ptr [ebx+4], 5 mov al, 1 pop ebx pop ebp retn sub_401F88 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_401FC8(int, char *path) sub_401FC8 proc near ; CODE XREF: sub_401EA0+23p arg_0 = dword ptr 8 path = dword ptr 0Ch push ebp mov ebp, esp push ebx mov ebx, [ebp+arg_0] push ebx call sub_401F88 pop ecx push 8000h ; access mov eax, [ebp+path] push eax ; path call _open add esp, 8 mov [ebx+8], ax cmp ax, 0FFFFh jnz short loc_401FFD mov dword ptr [ebx+4], 1 xor eax, eax pop ebx pop ebp retn ; --------------------------------------------------------------------------- loc_401FFD: ; CODE XREF: sub_401FC8+27j push ebx call sub_4021E4 pop ecx mov al, 1 mov byte ptr [ebx+0Ah], 1 pop ebx pop ebp retn sub_401FC8 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_402010 proc near ; DATA XREF: DATA:00403378o arg_0 = dword ptr 8 push ebp mov ebp, esp mov eax, [ebp+arg_0] push 1 ; fromwhere push 0 ; offset movsx eax, word ptr [eax+8] push eax ; handle call _lseek add esp, 0Ch pop ebp retn sub_402010 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_40202C(int, __int32 offset) sub_40202C proc near ; DATA XREF: DATA:0040337Co arg_0 = dword ptr 8 offset = dword ptr 0Ch push ebp mov ebp, esp push ebx mov ebx, [ebp+arg_0] cmp dword ptr [ebx+4], 2 jnz short loc_40203E xor eax, eax mov [ebx+4], eax loc_40203E: ; CODE XREF: sub_40202C+Bj cmp dword ptr [ebx+4], 0 jz short loc_402049 xor eax, eax pop ebx pop ebp retn ; --------------------------------------------------------------------------- loc_402049: ; CODE XREF: sub_40202C+16j push 0 ; fromwhere mov edx, [ebp+offset] push edx ; offset movsx ecx, word ptr [ebx+8] push ecx ; handle call _lseek add esp, 0Ch inc eax jnz short loc_402069 push ebx call sub_4020C0 pop ecx pop ebx pop ebp retn ; --------------------------------------------------------------------------- loc_402069: ; CODE XREF: sub_40202C+31j mov al, 1 pop ebx pop ebp retn sub_40202C endp ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp push ebx push esi push edi mov ebx, [ebp+8] mov eax, [ebx+4] test eax, eax jz short loc_402085 cmp eax, 2 jnz short loc_4020AF loc_402085: ; CODE XREF: CODE:0040207Ej push ebx mov edx, [ebx] call dword ptr [edx+4] pop ecx mov esi, eax push 2 push 0 movsx eax, word ptr [ebx+8] push eax call _lseek add esp, 0Ch mov edi, eax push esi push ebx mov eax, [ebx] call dword ptr [eax+8] add esp, 8 mov eax, edi jmp short loc_4020B1 ; --------------------------------------------------------------------------- loc_4020AF: ; CODE XREF: CODE:00402083j xor eax, eax loc_4020B1: ; CODE XREF: CODE:004020ADj pop edi pop esi pop ebx pop ebp retn ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4020B8 proc near ; DATA XREF: DATA:00403384o push ebp mov ebp, esp mov al, 1 pop ebp retn sub_4020B8 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4020C0 proc near ; CODE XREF: CODE:00401E88p ; CODE:00401F72p ... arg_0 = dword ptr 8 push ebp mov ebp, esp mov eax, [ebp+arg_0] cmp dword ptr _errno, 0 jz short loc_4020D8 mov dword ptr [eax+4], 1 jmp short loc_4020DF ; --------------------------------------------------------------------------- loc_4020D8: ; CODE XREF: sub_4020C0+Dj mov dword ptr [eax+4], 3 loc_4020DF: ; CODE XREF: sub_4020C0+16j xor eax, eax pop ebp retn sub_4020C0 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4020E4 proc near ; DATA XREF: DATA:00403388o arg_0 = dword ptr 8 push ebp mov ebp, esp mov eax, [ebp+arg_0] mov dword ptr [eax+4], 4 xor eax, eax pop ebp retn sub_4020E4 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_4020F8(int, unsigned int len, void *buf) sub_4020F8 proc near ; DATA XREF: DATA:0040338Co arg_0 = dword ptr 8 len = dword ptr 0Ch buf = dword ptr 10h push ebp mov ebp, esp push ebx push esi push edi mov esi, [ebp+len] mov ebx, [ebp+arg_0] cmp dword ptr [ebx+4], 0 jz short loc_40210E xor eax, eax jmp short loc_402143 ; --------------------------------------------------------------------------- loc_40210E: ; CODE XREF: sub_4020F8+10j test esi, esi jz short loc_402141 push esi ; len mov edx, [ebp+buf] push edx ; buf movsx ecx, word ptr [ebx+8] push ecx ; handle call _read add esp, 0Ch mov edi, eax inc eax jnz short loc_402132 push ebx call sub_4020C0 pop ecx jmp short loc_402143 ; --------------------------------------------------------------------------- loc_402132: ; CODE XREF: sub_4020F8+2Fj cmp esi, edi jz short loc_402141 mov dword ptr [ebx+4], 2 xor eax, eax jmp short loc_402143 ; --------------------------------------------------------------------------- loc_402141: ; CODE XREF: sub_4020F8+18j ; sub_4020F8+3Cj mov al, 1 loc_402143: ; CODE XREF: sub_4020F8+14j ; sub_4020F8+38j ... pop edi pop esi pop ebx pop ebp retn sub_4020F8 endp ; --------------------------------------------------------------------------- stru_402148 dd 0Bh ; tpDtt ; DATA XREF: DATA:off_403178o ; DATA:00403368o dw 3 ; tpMask dw 30h ; tpName dd 0 ; bParent dd 77h ; tpcFlags dw 3Ch ; Size dw 4Ch ; ExpDim dd 0 ; mfnDel dw 0 ; mfnMask dw 0 ; mfnMaskArr dd 0 ; mfnDelArr dd 2 ; DtorCount dd 2 ; DtorAltCount dd offset sub_401ED8 ; DtorAddr dw 1 ; DtorMask dw 50h ; DtorMemberOff db 'FileRStream',0 ; Name dd offset @$xt$8typeinfo ; Parent dd 0, 3, 0 dd 0 dd 0 ; end of tpid ; `__tpdsc__'[typeinfo] @$xt$8typeinfo dd 8 ; tpDtt ; DATA XREF: CODE:00402184o ; DATA:00403340o dw 3 ; tpMask dw 30h ; tpName dd 0 ; bParent dd 73h ; tpcFlags dw 3Ch ; Size dw 40h ; ExpDim dd 0 ; mfnDel dw 0 ; mfnMask dw 0 ; mfnMaskArr dd 0 ; mfnDelArr dd 1 ; DtorCount dd 1 ; DtorAltCount dd offset sub_401DAC ; DtorAddr dw 1 ; DtorMask dw 44h ; DtorMemberOff db 'StreamIO',0 ; Name align 4 dd 0 dd 0 dd 0 ; end of tpid ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4021E4 proc near ; CODE XREF: CODE:00401F7Bp ; sub_401FC8+36p arg_0 = dword ptr 8 push ebp mov ebp, esp mov eax, [ebp+arg_0] xor edx, edx mov [eax+4], edx pop ebp retn sub_4021E4 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: library function @__InitExceptBlock proc near ; CODE XREF: sub_401680+Bp ; sub_401758+Fp ... arg_0 = byte ptr 4 push ebx mov ebx, ebp add ebx, [eax+4] mov [ebx+8], eax lea eax, [esp+4+arg_0] mov [ebx+0Ch], eax mov dword ptr [ebx+4], offset __ExceptionHandler mov dword ptr [ebx+10h], 0 mov dword ptr [ebx+12h], 0 mov eax, ds:dword_4038F8 mov eax, [eax] mov [ebx+1Ch], eax mov eax, fs:0 mov [ebx], eax mov fs:0, ebx pop ebx retn @__InitExceptBlock endp ; --------------------------------------------------------------------------- align 4 ; [00000005 BYTES: COLLAPSED FUNCTION j__abort. PRESS KEYPAD "+" TO EXPAND] ; --------------------------------------------------------------------------- retn ; --------------------------------------------------------------------------- push ebp mov ebp, esp mov edx, [ebp+8] mov eax, large fs:4 mov ecx, [eax-8] test edx, edx mov eax, [ecx+8] jz short loc_40225D mov ecx, large fs:4 mov ecx, [ecx-8] mov [ecx+8], edx loc_40225D: ; CODE XREF: CODE:0040224Ej pop ebp retn ; =============== S U B R O U T I N E ======================================= ; Attributes: noreturn bp-based frame sub_40225F proc near ; CODE XREF: sub_4022AFp var_10 = word ptr -10h push ebp mov ebp, esp add esp, 0FFFFFFE0h mov eax, offset unk_403454 push ebx push esi push edi call @__InitExceptBlock call _flushall mov edx, large fs:4 mov ecx, [edx-8] mov eax, [ecx+8] mov [ebp+var_10], 8 call eax mov [ebp+var_10], 0 jmp short loc_402299 ; --------------------------------------------------------------------------- loc_402294: ; DATA XREF: DATA:0040343Co call @_CatchCleanup$qv ; _CatchCleanup(void) loc_402299: ; CODE XREF: sub_40225F+33j call _abort sub_40225F endp ; --------------------------------------------------------------------------- mov edx, [ebp-20h] mov large fs:0, edx pop edi pop esi pop ebx mov esp, ebp pop ebp retn ; =============== S U B R O U T I N E ======================================= ; Attributes: noreturn thunk sub_4022AF proc near ; DATA XREF: sub_40230D+21o ; DATA:0040339Co call sub_40225F sub_4022AF endp ; --------------------------------------------------------------------------- retn ; --------------------------------------------------------------------------- push ebp mov ebp, esp mov edx, [ebp+8] mov eax, large fs:4 mov ecx, [eax-8] test edx, edx mov eax, [ecx+0Ch] jz short loc_4022D8 mov ecx, large fs:4 mov ecx, [ecx-8] mov [ecx+0Ch], edx loc_4022D8: ; CODE XREF: CODE:004022C9j pop ebp retn ; --------------------------------------------------------------------------- mov eax, large fs:4 mov edx, [eax-8] mov eax, [edx+0Ch] call eax call _abort ; --------------------------------------------------------------------------- retn ; [0000001F BYTES: COLLAPSED FUNCTION __GetPolymorphicDTC(void *,uint). PRESS KEYPAD "+" TO EXPAND] ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40230D proc near ; CODE XREF: start+50p var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp add esp, 0FFFFFFF8h push ebx push esi push edi mov ebx, [ebp+arg_0] test ebx, ebx setnz al and eax, 1 test ebx, ebx mov esi, eax jz short loc_402337 mov dword ptr [ebx+8], offset j__abort mov dword ptr [ebx+0Ch], offset sub_4022AF jmp short loc_40238B ; --------------------------------------------------------------------------- loc_402337: ; CODE XREF: sub_40230D+18j cmp ds:byte_403058, 0 jz short loc_40237A xor edi, edi push 0 ; lpModuleName call GetModuleHandleA test eax, eax jz short loc_40235A push offset ProcName ; "__GetExceptDLLinfo" push eax ; hModule call GetProcAddress mov edi, eax loc_40235A: ; CODE XREF: sub_40230D+3Ej test edi, edi jz short loc_40237A lea eax, [ebp+var_8] push eax call edi cmp [ebp+var_8], 82727349h pop ecx jb short loc_40237A cmp [ebp+var_8], 82727359h ja short loc_40237A mov ebx, [ebp+var_4] loc_40237A: ; CODE XREF: sub_40230D+31j ; sub_40230D+4Fj ... test ebx, ebx jnz short loc_40238B lea eax, [ebp+var_8] push eax call __GetExceptDLLinfo_0 pop ecx mov ebx, [ebp+var_4] loc_40238B: ; CODE XREF: sub_40230D+28j ; sub_40230D+6Fj mov eax, large fs:4 mov [eax-8], ebx test esi, esi jnz short loc_4023A8 mov edx, large fs:4 add edx, 0FFFFFFFCh mov ds:dword_4038F8, edx loc_4023A8: ; CODE XREF: sub_40230D+89j mov ecx, large fs:4 xor eax, eax mov [ecx-4], eax mov edx, large fs:4 mov ecx, [edx-8] xor eax, eax mov [ecx+4], eax pop edi pop esi pop ebx pop ecx pop ecx pop ebp retn sub_40230D endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame __GetExceptDLLinfo_0 proc near ; CODE XREF: __GetExceptDLLinfoj ; sub_40230D+75p arg_0 = dword ptr 8 push ebp mov ebp, esp mov eax, [ebp+arg_0] mov edx, large fs:4 mov ecx, [edx-8] add ecx, 24h mov ds:dword_4033AC, ecx mov dword ptr [eax], 82727349h mov dword ptr [eax+4], offset unk_403390 pop ebp retn __GetExceptDLLinfo_0 endp ; --------------------------------------------------------------------------- align 8 ; [0000002A BYTES: COLLAPSED FUNCTION __matherr. PRESS KEYPAD "+" TO EXPAND] align 4 ; [0000002E BYTES: COLLAPSED FUNCTION __matherrl. PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION _strchr. PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION _sprintf. PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION _write. PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION _strlen. PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION _strcat. PRESS KEYPAD "+" TO EXPAND] ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk ; void __cdecl operator delete(void *) @$bdele$qpv proc near ; CODE XREF: sub_401728+26p ; sub_4019B8+2Bp ... jmp ds:__imp_@$bdele$qpv ; operator delete(void *) @$bdele$qpv endp ; [00000006 BYTES: COLLAPSED FUNCTION operator delete[](void *). PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION operator new(uint). PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION operator new[](uint). PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION _CatchCleanup(void). PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION __ExceptionHandler. PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION __exit. PRESS KEYPAD "+" TO EXPAND] ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR start loc_40249A: ; CODE XREF: start+69j jmp ds:__startup ; END OF FUNCTION CHUNK FOR start ; --------------------------------------------------------------------------- jmp ds:__streams ; [00000006 BYTES: COLLAPSED FUNCTION _abort. PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION _atol. PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION _close. PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION _errno. PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION _fclose. PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION _flushall. PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION _fopen. PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION _fputs. PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION _fread. PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION _itoa. PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION _lseek. PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION _open. PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION _read. PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION _spawnv. PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION GlobalAlloc. PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION GetModuleHandleA. PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION GlobalMemoryStatus. PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION GlobalFree. PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION GetProcAddress. PRESS KEYPAD "+" TO EXPAND] ; [00000006 BYTES: COLLAPSED FUNCTION MessageBoxA. PRESS KEYPAD "+" TO EXPAND] align 10h dd 38h dup(0) dd 280h dup(?) CODE ends ; Section 2. (virtual address 00003000) ; Virtual size : 00001000 ( 4096.) ; Section size in file : 00000600 ( 1536.) ; Offset to raw data for section: 00001C00 ; Flags C0000040: Data Readable Writable ; Alignment : default ; =========================================================================== ; Segment type: Pure data ; Segment permissions: Read/Write DATA segment para public 'DATA' use32 assume cs:DATA ;org 403000h aBorlandCCopyri db 'Borland C++ - Copyright 1995 Borland Intl.',0 align 4 off_40302C dd offset unk_403484 ; DATA XREF: start+56o dd offset unk_403490 dd offset unk_403490 dd offset unk_40349C db 1 db 0 db 0 db 0 db 0 db 0 db 0 db 0 dd offset WinMain dd offset __matherr dd offset __matherrl db 0 db 0 db 0 db 0 dd offset unk_403480 byte_403058 db 0 ; DATA XREF: sub_40230D:loc_402337r dword_403059 dd 0 ; DATA XREF: startr dword_40305D dd 0 ; DATA XREF: start+8w dword_403061 dd 0 ; DATA XREF: start+2Fw dword_403065 dd 0 ; DATA XREF: start+37w db 1 dword_40306A dd 0 ; DATA XREF: start+62w align 10h ; int value value dd 1 ; DATA XREF: WinMain+2ADw WinMain+2D6w ... unk_403074 db 2Dh ; - ; DATA XREF: WinMain+3EEo WinMain+4D2o byte_403075 db 0 ; DATA XREF: WinMain+198o WinMain+1ACr ... db 0 unk_403077 db 2Dh ; - ; DATA XREF: WinMain+3Eo db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 dword_40308B dd 522Dh ; DATA XREF: WinMain:loc_401385r dword_40308F dd 0 ; DATA XREF: WinMain+228r word_403093 dw 0 ; DATA XREF: WinMain+236r unk_403095 db 2Dh ; - ; DATA XREF: WinMain+32Co db 58h ; X db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 off_4030A9 dd offset stru_4016C0 ; DATA XREF: DATA:004030C9o db 0 db 0 db 0 db 0 dd offset unk_40369C db 0 db 0 db 0 db 0 unk_4030B9 db 0 ; DATA XREF: sub_401680+6o db 0 db 0 db 0 db 0E0h ; à db 0FFh db 0FFh db 0FFh db 0 db 0 db 5 db 0 db 0 db 0 db 0 db 0 dd offset off_4030A9 aDbsim_0 db 'dbsim',0 ; DATA XREF: sub_4010D4+15o aSprunknown db 'SPRUNKNOWN',0 ; DATA XREF: WinMain+114o ; char path[] path db 'data\language.cfg',0 ; DATA XREF: WinMain+180o ; char mode[] mode db 'rb',0 ; DATA XREF: WinMain:loc_4012E3o ; char aError_str[] aError_str db 'error.str',0 ; DATA XREF: WinMain:loc_401327o ; char Text[] Text db 'Missing string resource: error.str.',0 ; DATA XREF: WinMain+20Ao ; char Caption[] Caption db 'Error',0 ; DATA XREF: WinMain+205o aDummy db 'dummy',0 ; DATA XREF: WinMain+389o aEggplant db '-eggplant',0 ; DATA XREF: WinMain+391o aS db '-s',0 ; DATA XREF: WinMain+3C1o aA db '-a',0 ; DATA XREF: WinMain+3CFo a@ db '-@',0 ; DATA XREF: WinMain+3DDo ; char aVshell[] aVshell db 'vshell',0 ; DATA XREF: WinMain+3FCo aDummy_0 db 'dummy',0 ; DATA XREF: WinMain+41Co aEggplant_0 db '-eggplant',0 ; DATA XREF: WinMain+424o aS_0 db '-s',0 ; DATA XREF: WinMain+470o aM db '-m',0 ; DATA XREF: WinMain+47Eo aD db '-D',0 ; DATA XREF: WinMain+48Ao aZ db '-Z',0 ; DATA XREF: WinMain+498o asc_403163 db '-l',0 ; DATA XREF: WinMain+4A6o aSprunknown_0 db '-SPRUNKNOWN',0 ; DATA XREF: WinMain+4C1o ; char aDbsim[] aDbsim db 'dbsim',0 ; DATA XREF: WinMain+4E0o off_403178 dd offset stru_402148 ; DATA XREF: DATA:00403198o db 4 db 0 db 0 db 0 db 0F4h ; ô db 0FFh db 0FFh db 0FFh db 0 db 0 db 0 db 0 unk_403188 db 0 ; DATA XREF: sub_401758+6o db 0 db 0 db 0 db 0D4h ; Ô db 0FFh db 0FFh db 0FFh db 0 db 0 db 5 db 0 db 0 db 0 db 0 db 0 dd offset off_403178 off_40319C dd offset stru_401B14 ; DATA XREF: DATA:004031BCo db 0 db 0 db 0 db 0 dd offset unk_403790 db 0 db 0 db 0 db 0 unk_4031AC db 0 ; DATA XREF: sub_401AD4+6o db 0 db 0 db 0 db 0E0h ; à db 0FFh db 0FFh db 0FFh db 0 db 0 db 5 db 0 db 0 db 0 db 0 db 0 dd offset off_40319C aAssertAssert_a db 'Assert::assert_abort_notify: Cannot allocate memory.',0 ; DATA XREF: CODE:00401A9Bo align 4 ; char src[] src db 'assert.log',0 ; DATA XREF: sub_401BD0+29o asc_403203 db '-----------------------------------------------------------------' ; DATA XREF: sub_401C14+46o db '-------------',0Dh,0Ah,0 aInternalErrorP db 'Internal Error:',0Ah db 'Please call Sierra customer support with the following informatio' db 'n:',0Ah,0 align 4 off_4032AC dd offset aInit ; DATA XREF: sub_401B58+16r ; "init" dd offset aExit ; "exit" dd offset aMsg ; "msg" dd offset aWrn ; "wrn" dd offset aErr ; "err" dd offset aSys ; "sys" dd offset aBrk ; "brk" dword_4032C8 dd 1 ; DATA XREF: sub_401C14+3Br ; sub_401C14+56w word_4032CC dw 0A0Dh ; DATA XREF: sub_401C14+3r byte_4032CE db 0 ; DATA XREF: sub_401C14+14r aInit db 'init',0 ; DATA XREF: DATA:off_4032ACo aExit db 'exit',0 ; DATA XREF: DATA:004032B0o aMsg db 'msg',0 ; DATA XREF: DATA:004032B4o aWrn db 'wrn',0 ; DATA XREF: DATA:004032B8o aErr db 'err',0 ; DATA XREF: DATA:004032BCo aSys db 'sys',0 ; DATA XREF: DATA:004032C0o aBrk db 'brk',0 ; DATA XREF: DATA:004032C4o ; char format[] format db 'Assert::%s: Line %d in "%s"',0 ; DATA XREF: sub_401B58+1Eo ; char aS_1[] aS_1 db ': %s',0 ; DATA XREF: sub_401B58+31o ; char aError_0[] aError_0 db 'Error',0 ; DATA XREF: sub_401CAC+79o ; char aError_1[] aError_1 db 'Error',0 ; DATA XREF: sub_401CAC+B8o aAssertBreakCtr db 'Assert::break: Ctrl-C / Ctrl-Break',0 ; DATA XREF: sub_401CAC:loc_401D80o align 10h dd offset @$xt$8typeinfo ; `__tpdsc__'[typeinfo] db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 off_40334C dd offset sub_401DAC ; DATA XREF: sub_401D90+8o ; sub_401DAC+12o dd offset @__GetPolymorphicDTC$qpvui ; __GetPolymorphicDTC(void *,uint) dd offset sub_401E04 dd offset sub_401DDC dd offset sub_401E0C dd offset sub_401E14 dd offset sub_401E1C dd offset stru_402148 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 off_403374 dd offset sub_401ED8 ; DATA XREF: CODE:00401E32o ; CODE:00401E6Ao ... dd offset sub_402010 dd offset sub_40202C dd offset sub_401F14 dd offset sub_4020B8 dd offset sub_4020E4 dd offset sub_4020F8 unk_403390 db 0 ; DATA XREF: __GetExceptDLLinfo_0+1Fo db 0 db 0 db 0 db 0 db 0 db 0 db 0 dd offset j__abort dd offset sub_4022AF db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 dword_4033AC dd 0 ; DATA XREF: __GetExceptDLLinfo_0+13w db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 unk_403434 db 0 ; DATA XREF: DATA:00403460o db 0 db 0 db 0 db 0 db 0 db 0 db 0 dd offset loc_402294 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 unk_403454 db 0 ; DATA XREF: sub_40225F+6o db 0 db 0 db 0 db 0E0h ; à db 0FFh db 0FFh db 0FFh db 0 db 0 db 3 db 0 dd offset unk_403434 db 0 db 0 db 4 db 0 db 0A4h ; ¤ db 0 db 0 db 0 ; char ProcName[] ProcName db '__GetExceptDLLinfo',0 ; DATA XREF: sub_40230D+40o align 10h unk_403480 db 0 ; DATA XREF: DATA:00403054o db 40h ; @ db 0 db 0 unk_403484 db 0 ; DATA XREF: DATA:off_40302Co db 20h dd offset sub_401680 db 0 db 20h dd offset sub_401AD4 unk_403490 db 0 ; DATA XREF: DATA:00403030o ; DATA:00403034o db 20h dd offset sub_4016B0 db 0 db 20h dd offset sub_401B04 unk_40349C db 0 ; DATA XREF: start+11o DATA:00403038o db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; unk_40369C db ? ; ; DATA XREF: WinMain+1C4o WinMain+1DEo ... db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; ; LPCSTR lpText lpText dd ? ; DATA XREF: WinMain+1D9o WinMain+29Dr ; LPCSTR dword_4036B0 dword_4036B0 dd ? ; DATA XREF: WinMain+2C6r ; LPCSTR dword_4036B4 dword_4036B4 dd ? ; DATA XREF: WinMain+2F2r WinMain+316r db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; ; LPCSTR lpCaption lpCaption dd ? ; DATA XREF: WinMain+1EFo WinMain+296r ... align 10h unk_4036D0 db ? ; ; DATA XREF: CODE:00401099o ; CODE:004010BAo ... db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; unk_403790 db ? ; ; DATA XREF: sub_401AD4+16o ; sub_401B04+2o ... db ? ; db ? ; db ? ; dword_403794 dd ? ; DATA XREF: CODE:00401AC4r dword_403798 dd ? ; DATA XREF: CODE:00401ACCr align 10h dword_4037A0 dd ? ; DATA XREF: sub_4019EC+8r ; CODE:loc_401AADr ... unk_4037A4 db ? ; ; DATA XREF: CODE:00401BA8o ; sub_401BD0+7o db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; ; char dest[80] dest db 50h dup(?) ; DATA XREF: sub_401BD0+Co ; sub_401BD0+2Eo ... dword_4038F4 dd ? ; DATA XREF: sub_401CAC:loc_401D3Aw dword_4038F8 dd ? ; DATA XREF: start+3Fw sub_401704+1Ar ... unk_4038FC db ? ; ; DATA XREF: start+16o db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; db ? ; DATA ends ; Section 3. (virtual address 00004000) ; Virtual size : 00001000 ( 4096.) ; Section size in file : 00000400 ( 1024.) ; Offset to raw data for section: 00002200 ; Flags C0000040: Data Readable Writable ; Alignment : default ; =========================================================================== ; Segment type: Externs ; _idata ; ; Imports from cw3220.DLL ; ; char *__cdecl _strchr(const char *s, int c) extrn __imp__strchr:dword ; DATA XREF: _strchrr ; int _sprintf(char *buffer, const char *format, ...) extrn __imp__sprintf:dword ; DATA XREF: _sprintfr ; int __cdecl _write(int handle, const void *buf, unsigned int len) extrn __imp__write:dword ; DATA XREF: _writer ; size_t __cdecl _strlen(const char *s) extrn __imp__strlen:dword ; DATA XREF: _strlenr ; char *__cdecl _strcat(char *dest, const char *src) extrn __imp__strcat:dword ; DATA XREF: _strcatr ; __declspec(dllimport) operator delete(void *) extrn __imp_@$bdele$qpv:dword ; DATA XREF: operator delete(void *)r ; __declspec(dllimport) operator delete[](void *) extrn __imp_@$bdla$qpv:dword ; DATA XREF: operator delete[](void *)r ; __declspec(dllimport) operator new(unsigned int) extrn __imp_@$bnew$qui:dword ; DATA XREF: operator new(uint)r ; __declspec(dllimport) operator new[](unsigned int) extrn __imp_@$bnwa$qui:dword ; DATA XREF: operator new[](uint)r ; __declspec(dllimport) _CatchCleanup(void) extrn __imp_@_CatchCleanup$qv:dword ; DATA XREF: _CatchCleanup(void)r extrn __imp___ExceptionHandler:dword ; DATA XREF: __ExceptionHandlerr ; void __cdecl __exit(int status) extrn __imp___exit:dword ; DATA XREF: __exitr extrn __startup:dword ; DATA XREF: start:loc_40249Ar ; FILE _streams[] extrn __streams:dword ; DATA XREF: CODE:004024A0r ; void _abort(void) extrn __imp__abort:dword ; DATA XREF: _abortr ; __int32 __cdecl _atol(const char *s) extrn __imp__atol:dword ; DATA XREF: _atolr ; int __cdecl _close(int handle) extrn __imp__close:dword ; DATA XREF: _closer ; int _errno extrn __imp__errno:dword ; DATA XREF: _errnor ; int __cdecl _fclose(FILE *stream) extrn __imp__fclose:dword ; DATA XREF: _fcloser ; int _flushall(void) extrn __imp__flushall:dword ; DATA XREF: _flushallr ; FILE *__cdecl _fopen(const char *path, const char *mode) extrn __imp__fopen:dword ; DATA XREF: _fopenr ; int __cdecl _fputs(const char *s, FILE *stream) extrn __imp__fputs:dword ; DATA XREF: _fputsr ; size_t __cdecl _fread(void *ptr, size_t size, size_t n, FILE *stream) extrn __imp__fread:dword ; DATA XREF: _freadr ; char *__cdecl _itoa(int value, char *string, int radix) extrn __imp__itoa:dword ; DATA XREF: _itoar ; __int32 __cdecl _lseek(int handle, __int32 offset, int fromwhere) extrn __imp__lseek:dword ; DATA XREF: _lseekr ; int _open(const char *path, int access, ...) extrn __imp__open:dword ; DATA XREF: _openr ; int __cdecl _read(int handle, void *buf, unsigned int len) extrn __imp__read:dword ; DATA XREF: _readr ; int __cdecl _spawnv(int mode, const char *path, char *const *argv) extrn __imp__spawnv:dword ; DATA XREF: _spawnvr ; ; Imports from KERNEL32.dll ; ; HGLOBAL __stdcall GlobalAlloc(UINT uFlags, SIZE_T dwBytes) extrn __imp_GlobalAlloc:dword ; DATA XREF: GlobalAllocr ; HMODULE __stdcall GetModuleHandleA(LPCSTR lpModuleName) extrn __imp_GetModuleHandleA:dword ; DATA XREF: GetModuleHandleAr ; void __stdcall GlobalMemoryStatus(LPMEMORYSTATUS lpBuffer) extrn __imp_GlobalMemoryStatus:dword ; DATA XREF: GlobalMemoryStatusr ; HGLOBAL __stdcall GlobalFree(HGLOBAL hMem) extrn __imp_GlobalFree:dword ; DATA XREF: GlobalFreer ; FARPROC __stdcall GetProcAddress(HMODULE hModule, LPCSTR lpProcName) extrn __imp_GetProcAddress:dword ; DATA XREF: GetProcAddressr ; ; Imports from USER32.dll ; ; int __stdcall MessageBoxA(HWND hWnd, LPCSTR lpText, LPCSTR lpCaption, UINT uType) extrn __imp_MessageBoxA:dword ; DATA XREF: MessageBoxAr ; Section 6. (virtual address 00007000) ; Virtual size : 00001000 ( 4096.) ; Section size in file : 00000400 ( 1024.) ; Offset to raw data for section: 00002A00 ; Flags D0000040: Data Shareable Readable Writable ; Alignment : default ; =========================================================================== ; Segment type: Pure data ; Segment permissions: Read/Write _rsrc segment para public 'DATA' use32 assume cs:_rsrc ;org 407000h db 0 db 0 db 0 db 0 db 2 db 79h ; y db 3Ch ; < db 31h ; 1 db 0 db 0 db 0 db 0 db 0 db 0 db 2 db 0 db 3 db 0 db 0 db 0 db 20h db 0 db 0 db 80h ; € db 0Eh db 0 db 0 db 0 db 38h ; 8 db 0 db 0 db 80h ; € db 0 db 0 db 0 db 0 db 2 db 79h ; y db 3Ch ; < db 31h ; 1 db 0 db 0 db 0 db 0 db 0 db 0 db 1 db 0 db 1 db 0 db 0 db 0 db 50h ; P db 0 db 0 db 80h ; € db 0 db 0 db 0 db 0 db 2 db 79h ; y db 3Ch ; < db 31h ; 1 db 0 db 0 db 0 db 0 db 1 db 0 db 0 db 0 db 0A0h ;   db 0 db 0 db 80h ; € db 68h ; h db 0 db 0 db 80h ; € db 0 db 0 db 0 db 0 db 2 db 79h ; y db 3Ch ; < db 31h ; 1 db 0 db 0 db 0 db 0 db 0 db 0 db 1 db 0 db 0 db 0 db 0 db 0 db 80h ; € db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 2 db 79h ; y db 3Ch ; < db 31h ; 1 db 0 db 0 db 0 db 0 db 0 db 0 db 1 db 0 db 0 db 0 db 0 db 0 db 90h ;  db 0 db 0 db 0 db 0B0h ; ° db 70h ; p db 0 db 0 db 0E8h ; è db 2 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 98h ; ˜ db 73h ; s db 0 db 0 db 14h db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 6 db 0 db 4Dh ; M db 0 db 59h ; Y db 0 db 49h ; I db 0 db 43h ; C db 0 db 4Fh ; O db 0 db 4Eh ; N db 0 db 0 db 0 db 28h ; ( db 0 db 0 db 0 db 20h db 0 db 0 db 0 db 40h ; @ db 0 db 0 db 0 db 1 db 0 db 4 db 0 db 0 db 0 db 0 db 0 db 80h ; € db 2 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 80h ; € db 0 db 0 db 80h ; € db 0 db 0 db 0 db 80h ; € db 80h ; € db 0 db 80h ; € db 0 db 0 db 0 db 80h ; € db 0 db 80h ; € db 0 db 80h ; € db 80h ; € db 0 db 0 db 0C0h ; À db 0C0h ; À db 0C0h ; À db 0 db 80h ; € db 80h ; € db 80h ; € db 0 db 0 db 0 db 0FFh db 0 db 0 db 0FFh db 0 db 0 db 0 db 0FFh db 0FFh db 0 db 0FFh db 0 db 0 db 0 db 0FFh db 0 db 0FFh db 0 db 0FFh db 0FFh db 0 db 0 db 0FFh db 0FFh db 0FFh db 0 db 0 db 1 db 1 db 90h ;  db 0 db 0 db 91h ; ‘ db 11h db 11h db 19h db 0 db 0 db 9 db 10h db 10h db 0 db 0 db 10h db 11h db 90h ;  db 0 db 0 db 91h ; ‘ db 11h db 11h db 19h db 0 db 0 db 9 db 11h db 11h db 0 db 1 db 1 db 19h db 1Bh db 0 db 0 db 91h ; ‘ db 11h db 1Bh db 19h db 0 db 0 db 0B1h ; ± db 11h db 91h ; ‘ db 0 db 0 db 11h db 11h db 11h db 0B0h ; ° db 0 db 99h ; ™ db 19h db 19h db 19h db 0 db 0Bh db 11h db 11h db 11h db 10h db 1 db 19h db 19h db 19h db 90h ;  db 0 db 11h db 91h ; ‘ db 91h ; ‘ db 90h ;  db 0 db 9 db 19h db 19h db 11h db 10h db 0 db 11h db 91h ; ‘ db 91h ; ‘ db 90h ;  db 0 db 19h db 99h ; ™ db 9Bh ; › db 90h ;  db 0 db 9 db 91h ; ‘ db 91h ; ‘ db 19h db 11h db 1 db 19h db 19h db 19h db 99h ; ™ db 0 db 19h db 99h ; ™ db 9Bh ; › db 91h ; ‘ db 0 db 0B9h ; ¹ db 99h ; ™ db 19h db 9Bh ; › db 10h db 11h db 11h db 99h ; ™ db 99h ; ™ db 19h db 0 db 19h db 99h ; ™ db 9Bh ; › db 91h ; ‘ db 0 db 0B9h ; ¹ db 99h ; ™ db 99h ; ™ db 0B1h ; ± db 10h db 1 db 99h ; ™ db 91h ; ‘ db 0B9h ; ¹ db 99h ; ™ db 1 db 9Bh ; › db 99h ; ™ db 0BBh ; » db 99h ; ™ db 10h db 0B9h ; ¹ db 99h ; ™ db 9Bh ; › db 19h db 11h db 11h db 19h db 99h ; ™ db 99h ; ™ db 0B0h ; ° db 1 db 99h ; ™ db 0B9h ; ¹ db 0BBh ; » db 0BBh ; » db 10h db 0Bh db 9Bh ; › db 0B1h ; ± db 11h db 10h db 1 db 99h ; ™ db 99h ; ™ db 9Bh ; › db 10h db 1 db 0B9h ; ¹ db 0BBh ; » db 0BBh ; » db 0BBh ; » db 10h db 1 db 0BFh ; ¿ db 0B1h ; ± db 91h ; ‘ db 11h db 11h db 0BBh ; » db 91h ; ‘ db 99h ; ™ db 10h db 1 db 0BBh ; » db 0 db 0 db 0BBh ; » db 10h db 1 db 0FBh ; û db 99h ; ™ db 19h db 10h db 1 db 99h ; ™ db 0BBh ; » db 9Bh ; › db 10h db 1 db 0B0h ; ° db 0 db 0 db 0Bh db 10h db 1 db 0FBh ; û db 91h ; ‘ db 91h ; ‘ db 11h db 11h db 19h db 9Bh ; › db 0BBh ; » db 10h db 1 db 10h db 0 db 0 db 1 db 10h db 1 db 0B9h ; ¹ db 0B9h ; ¹ db 19h db 11h db 1 db 99h ; ™ db 19h db 0BFh ; ¿ db 10h db 1 db 10h db 0 db 0 db 1 db 10h db 1 db 9Bh ; › db 99h ; ™ db 91h ; ‘ db 10h db 11h db 19h db 99h ; ™ db 9Bh ; › db 0F1h ; ñ db 11h db 0B1h ; ± db 0 db 0 db 1Bh db 11h db 1Bh db 0B9h ; ¹ db 0B9h ; ¹ db 0B1h ; ± db 11h db 11h db 99h ; ™ db 99h ; ™ db 0B9h ; ¹ db 0BBh ; » db 0BFh ; ¿ db 0F1h ; ñ db 11h db 11h db 1Bh db 0FFh db 0BBh ; » db 9Bh ; › db 99h ; ™ db 91h ; ‘ db 11h db 19h db 11h db 11h db 9Bh ; › db 0BBh ; » db 0FBh ; û db 0F1h ; ñ db 0 db 0 db 1Fh db 0FFh db 0FBh ; û db 0B9h ; ¹ db 11h db 11h db 91h ; ‘ db 19h db 0 db 1 db 0BBh ; » db 0B1h ; ± db 11h db 0F1h ; ñ db 0 db 0 db 1Fh db 11h db 1Bh db 0BBh ; » db 10h db 0 db 91h ; ‘ db 19h db 0Dh db 1 db 9Bh ; › db 10h db 0 db 11h db 0 db 0 db 11h db 0 db 1 db 0B9h ; ¹ db 10h db 0D0h ; Ð db 91h ; ‘ db 19h db 0 db 1 db 0BBh ; » db 0 db 0 db 10h db 4 db 0C0h ; À db 1 db 0 db 0 db 0B9h ; ¹ db 10h db 0 db 91h ; ‘ db 11h db 90h ;  db 0Bh db 0BBh ; » db 0 db 0 db 0 db 0CFh ; Ï db 0C4h ; Ä db 0 db 0 db 0 db 0BBh ; » db 90h ;  db 9 db 10h db 19h db 19h db 0 db 0 db 0 db 0 db 70h ; p db 0CEh ; Î db 0C4h ; Ä db 0Ch db 0 db 0 db 0 db 0 db 91h ; ‘ db 11h db 1 db 99h ; ™ db 0B0h ; ° db 8 db 0 db 0 db 0C0h ; À db 0Ch db 0C0h ; À db 0Ch db 0 db 0 db 0 db 9 db 91h ; ‘ db 10h db 11h db 1Bh db 0B9h ; ¹ db 0B0h ; ° db 0 db 0 db 0Ch db 0 db 0 db 40h ; @ db 0 db 0 db 0Bh db 91h ; ‘ db 91h ; ‘ db 10h db 1 db 91h ; ‘ db 91h ; ‘ db 99h ; ™ db 0B0h ; ° db 0 db 0 db 0 db 0 db 0 db 0 db 9 db 0BBh ; » db 0B9h ; ¹ db 91h ; ‘ db 11h db 11h db 19h db 19h db 19h db 99h ; ™ db 90h ;  db 0 db 99h ; ™ db 0BBh ; » db 0 db 9 db 99h ; ™ db 99h ; ™ db 9Bh ; › db 91h ; ‘ db 10h db 1 db 1Bh db 0 db 0 db 0 db 0 db 9 db 0 db 0 db 90h ;  db 0 db 0 db 0 db 0 db 0B1h ; ± db 10h db 1 db 99h ; ™ db 0Dh db 0 db 0D0h ; Ð db 9 db 91h ; ‘ db 0 db 0 db 19h db 90h ;  db 0Dh db 0 db 0D0h ; Ð db 91h ; ‘ db 0 db 0 db 19h db 0 db 0 db 0 db 91h ; ‘ db 19h db 91h ; ‘ db 9Bh ; › db 91h ; ‘ db 19h db 0 db 0 db 0 db 91h ; ‘ db 10h db 1 db 11h db 99h ; ™ db 99h ; ™ db 99h ; ™ db 19h db 11h db 11h db 19h db 11h db 11h db 99h ; ™ db 99h ; ™ db 99h ; ™ db 11h db 0 db 0 db 1 db 11h db 11h db 11h db 11h db 11h db 11h db 11h db 11h db 11h db 11h db 11h db 11h db 10h db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 1 db 0 db 1 db 0 db 20h db 20h db 10h db 0 db 1 db 0 db 4 db 0 db 0E8h ; è db 2 db 0 db 0 db 1 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 db 0 align 1000h _rsrc ends end start