; --------------------------------------------------------------------------- _OSVERSIONINFOA struc ; (sizeof=0x94, standard type) dwOSVersionInfoSize dd ? dwMajorVersion dd ? dwMinorVersion dd ? dwBuildNumber dd ? dwPlatformId dd ? szCSDVersion db 128 dup(?) _OSVERSIONINFOA ends ; --------------------------------------------------------------------------- _STARTUPINFOA struc ; (sizeof=0x44, standard type) cb dd ? lpReserved dd ? ; offset lpDesktop dd ? ; offset lpTitle dd ? ; offset dwX dd ? dwY dd ? dwXSize dd ? dwYSize dd ? dwXCountChars dd ? dwYCountChars dd ? dwFillAttribute dd ? dwFlags dd ? wShowWindow dw ? cbReserved2 dw ? lpReserved2 dd ? ; offset hStdInput dd ? ; offset hStdOutput dd ? ; offset hStdError dd ? ; offset _STARTUPINFOA ends ; --------------------------------------------------------------------------- _cpinfo struc ; (sizeof=0x14, standard type) MaxCharSize dd ? DefaultChar db 2 dup(?) LeadByte db 12 dup(?) _padding db 2 dup(?) _cpinfo ends ; --------------------------------------------------------------------------- FILE struc ; (sizeof=0x18, standard type) curp dd ? ; offset buffer dd ? ; offset level dd ? bsize dd ? istemp dw ? flags dw ? hold dw ? fd db ? token db ? FILE ends ; --------------------------------------------------------------------------- _RTL_CRITICAL_SECTION struc ; (sizeof=0x18, standard type) DebugInfo dd ? ; offset LockCount dd ? RecursionCount dd ? OwningThread dd ? ; offset LockSemaphore dd ? ; offset SpinCount dd ? _RTL_CRITICAL_SECTION ends ; --------------------------------------------------------------------------- _SECURITY_ATTRIBUTES struc ; (sizeof=0xC, standard type) nLength dd ? lpSecurityDescriptor dd ? ; offset bInheritHandle dd ? _SECURITY_ATTRIBUTES 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 ; --------------------------------------------------------------------------- _tpidp struc ; (sizeof=0xC, variable size) tpDtt dd ? ; base 16 tpMask dw ? ; base 16 tpName dw ? ; base 16 BaseType dd ? ; offset Name db 0 dup(?) ; string(C) _tpidp ends ; --------------------------------------------------------------------------- _excHdr struc ; (sizeof=0x8) _unk dd ? ; base 16 spoff dd ? ; base 10 _excHdr ends ; --------------------------------------------------------------------------- _excInfo struc ; (sizeof=0xC) RttiPtr dd ? ; offset Flags dd ? ; base 16 spoff dd ? ; base 10 _excInfo ends ; --------------------------------------------------------------------------- _excData struc ; (sizeof=0xC) Flags dd ? ; base 16 _unk dd ? ; base 16 InfoPtr dd ? ; offset _excData ends ; --------------------------------------------------------------------------- _excInfo2 struc ; (sizeof=0x20) spoff dd ? ; base 10 _unk dd ? ; base 16 finEntry dd ? ; offset RttiInfo dd ? ; offset zArg dd 4 dup(?) _excInfo2 ends ; --------------------------------------------------------------------------- _excData2 struc ; (sizeof=0xC) Flags dd ? ; base 16 InitPtr dd ? ; offset Flags2 dd ? ; base 16 _excData2 ends ; --------------------------------------------------------------------------- struct_0 struc ; (sizeof=0xA) db ? ; undefined db ? ; undefined db ? ; undefined db ? ; undefined anonymous_0 dd ? anonymous_1 dw ? struct_0 ends ; --------------------------------------------------------------------------- struct_1 struc ; (sizeof=0xA) db ? ; undefined db ? ; undefined db ? ; undefined db ? ; undefined anonymous_0 dd ? anonymous_1 dw ? struct_1 ends ; --------------------------------------------------------------------------- struct_2 struc ; (sizeof=0xA) db ? ; undefined db ? ; undefined db ? ; undefined db ? ; undefined anonymous_0 dd ? anonymous_1 dw ? struct_2 ends ; --------------------------------------------------------------------------- struct_3 struc ; (sizeof=0xA) db ? ; undefined db ? ; undefined db ? ; undefined db ? ; undefined anonymous_0 dd ? anonymous_1 dw ? struct_3 ends ; --------------------------------------------------------------------------- struct_4 struc ; (sizeof=0xA) db ? ; undefined db ? ; undefined db ? ; undefined db ? ; undefined anonymous_0 dd ? anonymous_1 dw ? struct_4 ends ; --------------------------------------------------------------------------- struct_5 struc ; (sizeof=0xA) db ? ; undefined db ? ; undefined db ? ; undefined db ? ; undefined anonymous_0 dd ? anonymous_1 dw ? struct_5 ends ; --------------------------------------------------------------------------- struct_6 struc ; (sizeof=0xA) db ? ; undefined db ? ; undefined db ? ; undefined db ? ; undefined anonymous_0 dd ? anonymous_1 dw ? struct_6 ends ; --------------------------------------------------------------------------- struct_7 struc ; (sizeof=0xA) db ? ; undefined db ? ; undefined db ? ; undefined db ? ; undefined anonymous_0 dd ? anonymous_1 dw ? struct_7 ends ; ; +-------------------------------------------------------------------------+ ; | This file is generated by The Interactive Disassembler (IDA) | ; | Copyright (c) 2007 by DataRescue sa/nv, | ; | Licensed to: Development license | ; +-------------------------------------------------------------------------+ ; ; Input MD5 : F1A8BA2D18B207D18975095276AC165A ; File Name : Z:\idasrc\current\bin\stm.exe ; Format : Portable executable for 80386 (PE) ; Imagebase : 400000 ; Section 1. (virtual address 00001000) ; Virtual size : 0000C000 ( 49152.) ; Section size in file : 0000BC00 ( 48128.) ; Offset to raw data for section: 00000600 ; Flags 60000020: Text Executable Readable ; Alignment : default ; OS type : MS Windows ; Application type: Executable 32bit unicode macro page,string,zero irpc c, db '&c', page endm ifnb dw zero endif endm .686p .mmx .model flat ; =========================================================================== ; Segment type: Pure code ; Segment permissions: Read/Execute _text segment para public 'CODE' use32 assume cs:_text ;org 401000h assume es:nothing, ss:nothing, ds:_data, fs:nothing, gs:nothing byte_401000 db 2 dup(0) ; DATA XREF: .data:off_40D034o dd offset sub_402410 dw 2000h dd offset sub_40241C db 0, 1 dd offset __init_lock dw 2000h dd offset sub_403464 db 0, 20h dd offset unknown_libname_3 ; BCC v4.x/5.x & BCB v1.0/v7.0 BDS2006 win32 runtime dw 2000h dd offset sub_404097 db 2 dup(0) dd offset loc_40473C align 4 dd offset loc_4049CC db 0, 5 dd offset __init_streams dw 400h dd offset __init_handles db 0, 0Ah dd offset __cvt_init dw 0A00h dd offset loc_408BBC db 0, 0Ah dd offset __cvt_initw dw 0A00h dd offset __scan_initw db 0, 1 dd offset __initMBCSTable dw 100h dd offset unknown_libname_18 ; BCC v4.x/5.x & BCB v1.0/v7.0 BDS2006 win32 runtime db 0, 3 dd offset __setargv dw 200h dd offset unknown_libname_19 ; BCC v4.x/5.x & BCB v1.0/v7.0 BDS2006 win32 runtime db 0, 3 dd offset loc_40A488 dw 600h dd offset loc_40A9BC db 0, 1 dd offset __init_tls dw 100h dd offset loc_40AD6C db 2 dup(0) dd offset loc_40AEF0 align 4 dd offset loc_40AF08 byte_401090 db 0, 20h ; DATA XREF: .data:0040D038o ; .data:0040D03Co dd offset sub_40245C align 4 dd offset loc_402718 db 0, 20h dd offset sub_4034D8 dw 2000h dd offset sub_403728 db 0, 1 dd offset sub_403D3B dw 2000h dd offset sub_4040C2 db 2 dup(0) dd offset loc_4049E4 align 4 dd offset __exit_streams db 0, 3 dd offset __exitargv dw 200h dd offset loc_40A2D8 db 0, 3 dd offset loc_40A308 dw 200h dd offset sub_40AD80 unk_4010D8 db 0 ; DATA XREF: .data:0040D040o db 0 db 0 db 0 db 0 db 0 db 0 db 0 ; [00000059 BYTES: COLLAPSED FUNCTION start. PRESS KEYPAD "+" TO EXPAND] ; Exported entry 1. __GetExceptDLLinfo ; [00000005 BYTES: COLLAPSED FUNCTION __GetExceptDLLinfo. PRESS KEYPAD "+" TO EXPAND] ; --------------------------------------------------------------------------- __isDLL: xor eax, eax mov al, byte_40D07D retn ; --------------------------------------------------------------------------- __getHInstance: mov eax, dword_40D093 retn ; =============== S U B R O U T I N E ======================================= ; Attributes: noreturn sub_40114C proc near ; CODE XREF: .text:00401170p ; .text:00401191p ... pusha mov ebx, 0BCB05000h push ebx push 0BADh retn sub_40114C endp ; --------------------------------------------------------------------------- loc_401159: ; CODE XREF: .text:004011C6j mov ecx, 0A4h or ecx, ecx jz short locret_4011AF cmp TlsIndex, 0 jnb short loc_401175 mov eax, 0FEh call sub_40114C ; --------------------------------------------------------------------------- loc_401175: ; CODE XREF: .text:00401169j mov ecx, 0A4h push ecx push 8 call GetProcessHeap push eax call HeapAlloc or eax, eax jnz short loc_401196 mov eax, 0FDh call sub_40114C ; --------------------------------------------------------------------------- loc_401196: ; CODE XREF: .text:0040118Aj push eax push eax push TlsIndex call ___CRTL_TLS_SetValue push TlsIndex call ___CRTL_TLS_InitThread pop edi locret_4011AF: ; CODE XREF: .text:00401160j retn ; --------------------------------------------------------------------------- mov ecx, 0A4h or ecx, ecx jz short locret_4011D2 call ___CRTL_TLS_Alloc mov TlsIndex, eax cmp eax, 0 jnb short loc_401159 mov eax, 0FCh call sub_40114C ; --------------------------------------------------------------------------- locret_4011D2: ; CODE XREF: .text:004011B7j retn ; =============== S U B R O U T I N E ======================================= sub_4011D3 proc near ; CODE XREF: .text:0040120Fp cmp TlsIndex, 0 jb short locret_401204 push TlsIndex ; dwTlsIndex call ___CRTL_TLS_GetValue or eax, eax jz short locret_401204 push eax ; lpMem push 8 ; dwFlags call GetProcessHeap push eax ; hHeap call HeapFree push TlsIndex call ___CRTL_TLS_ExitThread locret_401204: ; CODE XREF: sub_4011D3+7j ; sub_4011D3+16j retn sub_4011D3 endp ; --------------------------------------------------------------------------- retn ; --------------------------------------------------------------------------- cmp TlsIndex, 0 jb short locret_40121F call sub_4011D3 push TlsIndex call ___CRTL_TLS_Free locret_40121F: ; CODE XREF: .text:0040120Dj retn ; [0000000F BYTES: COLLAPSED FUNCTION Sysinit::__linkproc__ GetTls(void). PRESS KEYPAD "+" TO EXPAND] align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_401230(char *format, char arglist) sub_401230 proc near ; CODE XREF: sub_401A04+29p ; sub_401A04+11Ap ... format = dword ptr 8 arglist = byte ptr 0Ch push ebp mov ebp, esp lea eax, [ebp+arglist] push eax ; arglist push [ebp+format] ; format push dword_410A9C ; stream call _vfprintf add esp, 0Ch pop ebp retn sub_401230 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_40124C(char *format, char arglist) sub_40124C proc near ; CODE XREF: sub_401A04+42p ; sub_401F5C+27p format = dword ptr 8 arglist = byte ptr 0Ch push ebp mov ebp, esp lea eax, [ebp+arglist] push eax ; arglist push [ebp+format] ; format push dword_410AA0 ; stream call _vfprintf add esp, 0Ch pop ebp retn sub_40124C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_401268 proc near ; CODE XREF: sub_401268+5j ; sub_401274+Ep mov dl, [eax] inc eax test dl, dl jnz short sub_401268 dec eax retn sub_401268 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_401274 proc near ; CODE XREF: _main+1A9p var_4 = dword ptr -4 push ebp mov ebp, esp push ecx push ebx push esi push edi mov [ebp+var_4], edx mov esi, eax mov eax, esi call sub_401268 mov ebx, eax mov edi, ebx cmp esi, ebx ja short loc_4012CF loc_40128F: ; CODE XREF: sub_401274+59j movsx eax, byte ptr [ebx] cmp eax, 5Ch jz short loc_4012CF movsx edx, byte ptr [ebx] cmp edx, 2Eh jnz short loc_4012CA mov eax, [ebp+var_4] inc ebx mov edi, eax xor eax, eax push esi or ecx, 0FFFFFFFFh repne scasb not ecx sub edi, ecx mov esi, ebx xchg esi, edi mov edx, ecx mov eax, edi shr ecx, 2 rep movsd mov ecx, edx and ecx, 3 rep movsb pop esi mov eax, esi jmp short loc_4012FD ; --------------------------------------------------------------------------- loc_4012CA: ; CODE XREF: sub_401274+29j dec ebx cmp esi, ebx jbe short loc_40128F loc_4012CF: ; CODE XREF: sub_401274+19j ; sub_401274+21j mov byte ptr [edi], 2Eh inc edi mov edx, [ebp+var_4] push esi push edi mov esi, edi xor eax, eax mov edi, edx 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 mov eax, esi loc_4012FD: ; CODE XREF: sub_401274+54j pop edi pop esi pop ebx pop ecx pop ebp retn sub_401274 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; int __fastcall sub_401304(size_t size) sub_401304 proc near ; CODE XREF: sub_402010+5p push ebx push eax ; size call _malloc pop ecx mov ebx, eax test ebx, ebx jnz short loc_40132C push offset aNoMemory ; "\n\n\aNo memory !!!\n" push offset stru_40EBC4 ; stream call _fprintf add esp, 8 push 1 ; status call _exit ; --------------------------------------------------------------------------- pop ecx loc_40132C: ; CODE XREF: sub_401304+Cj mov eax, ebx pop ebx retn sub_401304 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl main(int argc, const char **argv, const char *envp) _main proc near ; DATA XREF: .data:0040D04Co argc = dword ptr 8 argv = dword ptr 0Ch envp = dword ptr 10h push ebp mov ebp, esp push ebx push esi push edi mov ebx, [ebp+argv] mov esi, [ebp+argc] push dword_40D0A8 push arglist push offset format ; "Symbol Table Maker v%d.%02d. Copyright "... call _printf add esp, 0Ch cmp esi, 3 jle loc_40142F loc_40135E: ; CODE XREF: _main+F9j mov eax, [ebx+4] movsx edx, byte ptr [eax] cmp edx, 2Dh jnz loc_40142F mov ecx, [ebx+4] movsx eax, byte ptr [ecx+1] cmp eax, 61h jg short loc_40138F jz short loc_4013D5 sub eax, 3Fh jz short loc_4013EE sub eax, 9 jz short loc_4013EE dec eax jz short loc_4013AD sub eax, 7 jz short loc_4013BB jmp short loc_401403 ; --------------------------------------------------------------------------- loc_40138F: ; CODE XREF: _main+47j sub eax, 68h jz short loc_4013EE dec eax jz short loc_4013A3 sub eax, 4 jz short loc_4013C7 sub eax, 6 jz short loc_4013E2 jmp short loc_401403 ; --------------------------------------------------------------------------- loc_4013A3: ; CODE XREF: _main+65j mov dword_40D0CC, 1 loc_4013AD: ; CODE XREF: _main+56j mov edx, [ebx+4] add edx, 2 mov dword_40D0C8, edx jmp short loc_401422 ; --------------------------------------------------------------------------- loc_4013BB: ; CODE XREF: _main+5Bj mov off_40D0BC, offset aHpp ; "hpp" jmp short loc_401422 ; --------------------------------------------------------------------------- loc_4013C7: ; CODE XREF: _main+6Aj mov ecx, [ebx+4] add ecx, 2 mov off_40D0C0, ecx jmp short loc_401422 ; --------------------------------------------------------------------------- loc_4013D5: ; CODE XREF: _main+49j mov eax, [ebx+4] add eax, 2 mov off_40D0C4, eax jmp short loc_401422 ; --------------------------------------------------------------------------- loc_4013E2: ; CODE XREF: _main+6Fj mov dword_40D0D0, 1 jmp short loc_401422 ; --------------------------------------------------------------------------- loc_4013EE: ; CODE XREF: _main+4Ej _main+53j ... push offset aUsageStmIinclI ; "Usage: stm [-Iincl] [-iincl] [-P] [-aac"... call _printf pop ecx mov eax, 1 jmp loc_40161A ; --------------------------------------------------------------------------- loc_401403: ; CODE XREF: _main+5Dj _main+71j mov edx, [ebx+4] movsx ecx, byte ptr [edx+1] push ecx push offset aBadSwitchC ; "Bad switch '%c'\n" call _printf add esp, 8 mov eax, 1 jmp loc_40161A ; --------------------------------------------------------------------------- loc_401422: ; CODE XREF: _main+89j _main+95j ... dec esi add ebx, 4 cmp esi, 3 jg loc_40135E loc_40142F: ; CODE XREF: _main+28j _main+37j cmp esi, 3 jnz short loc_4013EE push offset mode ; "r" push dword ptr [ebx+4] ; path call _fopen add esp, 8 mov stream, eax mov edx, stream test edx, edx jnz short loc_40146B push dword ptr [ebx+4] push offset aCanTOpenInputF ; "Can't open input file %s\n" call _printf add esp, 8 push 1 ; status call _exit ; --------------------------------------------------------------------------- pop ecx loc_40146B: ; CODE XREF: _main+121j push offset aW ; "w" push dword ptr [ebx+8] ; path call _fopen add esp, 8 mov dword_410A9C, eax mov ecx, dword_410A9C test ecx, ecx jnz short loc_4014A2 push dword ptr [ebx+8] push offset aCanTOpenOutput ; "Can't open output file %s\n" call _printf add esp, 8 push 1 ; status call _exit ; --------------------------------------------------------------------------- pop ecx loc_4014A2: ; CODE XREF: _main+158j mov eax, [ebx+8] mov esi, offset unk_410AA4 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 mov eax, offset unk_410AA4 and ecx, 3 rep movsb push offset aW ; "w" mov edx, off_40D0BC call sub_401274 push eax ; path call _fopen add esp, 8 mov dword_410AA0, eax mov ecx, dword_410AA0 test ecx, ecx jnz short loc_401510 push offset unk_410AA4 push offset aCanTOpenHeader ; "Can't open header file %s\n" call _printf add esp, 8 push 1 ; status call _exit ; --------------------------------------------------------------------------- pop ecx loc_401510: ; CODE XREF: _main+1C4j push 0 ; int mov edx, offset aAny ; "any" mov eax, offset unk_40D0D4 ; int mov ecx, 3 ; int call sub_402034 push 1 ; int mov edx, offset aNext ; "next" mov eax, offset unk_40D0D4 ; int mov ecx, 3 ; int call sub_402034 push 2 ; int mov edx, offset aThis ; "this" mov eax, offset unk_40D0D4 ; int mov ecx, 3 ; int call sub_402034 push 3 ; int mov edx, offset aStart ; "start" mov eax, offset unk_40D0D4 ; int mov ecx, 3 ; int call sub_402034 push 0FFFFFFFFh ; int mov edx, offset aError ; "error" mov eax, offset unk_40D0D4 ; int mov ecx, 3 ; int call sub_402034 push 5 ; int mov edx, offset aEnd ; "end" mov eax, offset unk_40D0D4 ; int mov ecx, 3 ; int call sub_402034 push 4 ; int mov edx, offset a0 ; "0" mov eax, offset unk_40D0D4 ; int mov ecx, 3 ; int call sub_402034 call sub_4016EC call sub_401800 push stream ; stream call _rewind pop ecx xor eax, eax mov dword_40D0AC, eax loc_4015C7: ; CODE XREF: _main+2A5j _main+2B1j ... call sub_401620 mov edx, offset aEot ; "EOT" loc_4015D1: ; CODE XREF: _main+2BBj mov cl, [eax] cmp cl, [edx] jnz short loc_4015C7 test cl, cl jz short loc_4015ED mov cl, [eax+1] cmp cl, [edx+1] jnz short loc_4015C7 add eax, 2 add edx, 2 test cl, cl jnz short loc_4015D1 loc_4015ED: ; CODE XREF: _main+2A9j jnz short loc_4015C7 call sub_401A04 push stream ; stream call _fclose pop ecx push dword_410A9C ; stream call _fclose pop ecx push dword_410AA0 ; stream call _fclose pop ecx xor eax, eax loc_40161A: ; CODE XREF: _main+CEj _main+EDj pop edi pop esi pop ebx pop ebp retn _main endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_401620 proc near ; CODE XREF: _main:loc_4015C7p ; sub_4016EC+14p ... push ebx jmp short loc_401656 ; --------------------------------------------------------------------------- loc_401623: ; CODE XREF: sub_401620+40j push stream ; stream push 100h ; n push offset byte_40D0E8 ; s call _fgets add esp, 0Ch test eax, eax jnz short loc_401646 mov eax, offset aL_eof ; "**l_eof**" pop ebx retn ; --------------------------------------------------------------------------- loc_401646: ; CODE XREF: sub_401620+1Dj inc dword_40D0AC mov s1, offset byte_40D0E8 loc_401656: ; CODE XREF: sub_401620+1j ; sub_401620+67j ... mov edx, s1 mov cl, [edx] test cl, cl jz short loc_401623 jmp short loc_40166A ; --------------------------------------------------------------------------- loc_401664: ; CODE XREF: sub_401620+5Bj inc s1 loc_40166A: ; CODE XREF: sub_401620+42j mov eax, s1 movsx edx, byte ptr [eax] push edx ; c call _isspace pop ecx test eax, eax jnz short loc_401664 mov ecx, s1 mov al, [ecx] test al, al jz short loc_401656 mov ebx, s1 jmp short loc_401697 ; --------------------------------------------------------------------------- loc_401691: ; CODE XREF: sub_401620+88j inc s1 loc_401697: ; CODE XREF: sub_401620+6Fj mov eax, s1 movsx edx, byte ptr [eax] push edx ; c call _isspace pop ecx test eax, eax jz short loc_401691 mov ecx, s1 mov al, [ecx] test al, al jz short loc_4016C5 mov edx, s1 mov byte ptr [edx], 0 inc s1 loc_4016C5: ; CODE XREF: sub_401620+94j push 2 ; maxlen push offset s2 ; "//" push ebx ; s1 call _strncmp add esp, 0Ch test eax, eax jnz short loc_4016E7 mov ecx, s1 mov byte ptr [ecx], 0 jmp loc_401656 ; --------------------------------------------------------------------------- loc_4016E7: ; CODE XREF: sub_401620+B7j mov eax, ebx pop ebx retn sub_401620 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_4016EC proc near ; CODE XREF: _main+27Ap push ebx push esi push edi jmp loc_4017B3 ; --------------------------------------------------------------------------- loc_4016F4: ; CODE XREF: sub_4016EC+D7j ; sub_4016EC+E7j ... cmp esi, offset aL_eof ; "**l_eof**" jz loc_4017B3 call sub_401620 movsx edx, byte ptr [eax] cmp edx, 27h jnz short loc_40173D inc eax movsx ebx, byte ptr [eax] inc eax movsx edx, byte ptr [eax] cmp edx, 27h jz short loc_401722 shl ebx, 8 movsx ecx, byte ptr [eax] add ebx, ecx loc_401722: ; CODE XREF: sub_4016EC+2Cj inc eax movsx edx, byte ptr [eax] cmp edx, 3Dh jnz short loc_401730 add ebx, 3Dh jmp short loc_401746 ; --------------------------------------------------------------------------- loc_401730: ; CODE XREF: sub_4016EC+3Dj movsx eax, byte ptr [eax] cmp eax, 2Eh jnz short loc_401746 add ebx, 2Eh jmp short loc_401746 ; --------------------------------------------------------------------------- loc_40173D: ; CODE XREF: sub_4016EC+1Fj push eax ; s call _atoi_0 pop ecx mov ebx, eax loc_401746: ; CODE XREF: sub_4016EC+42j ; sub_4016EC+4Aj ... mov eax, offset unk_40D0D4 mov ecx, ebx mov edx, 1 call sub_402140 mov edi, eax test eax, eax jz short loc_40177C push dword ptr [edi+8] push esi push dword_40D0AC push offset aTermCodeErrorA ; "Term Code Error at line %d: %s and %s\n" call _printf add esp, 10h push 1 ; status call _exit ; --------------------------------------------------------------------------- pop ecx loc_40177C: ; CODE XREF: sub_4016EC+6Fj push ebx ; int mov eax, offset unk_40D0D4 ; int mov ecx, 1 ; int mov edx, esi ; s call sub_402034 mov eax, dword_410AF4 test eax, eax jz short loc_4017B3 push esi push dword_40D0AC push offset aTermRedeclarat ; "Term Redeclaration Error at line %d (%s"... call _printf add esp, 0Ch push 1 ; status call _exit ; --------------------------------------------------------------------------- pop ecx loc_4017B3: ; CODE XREF: sub_4016EC+3j ; sub_4016EC+Ej ... call sub_401620 mov esi, eax mov edx, offset aEot ; "EOT" loc_4017BF: ; CODE XREF: sub_4016EC+F5j mov cl, [eax] cmp cl, [edx] jnz loc_4016F4 test cl, cl jz short loc_4017E3 mov cl, [eax+1] cmp cl, [edx+1] jnz loc_4016F4 add eax, 2 add edx, 2 test cl, cl jnz short loc_4017BF loc_4017E3: ; CODE XREF: sub_4016EC+DFj jnz loc_4016F4 pop edi pop esi pop ebx retn sub_4016EC endp ; --------------------------------------------------------------------------- align 10h ; [0000000E BYTES: COLLAPSED FUNCTION _atoi_0. PRESS KEYPAD "+" TO EXPAND] align 10h ; =============== S U B R O U T I N E ======================================= sub_401800 proc near ; CODE XREF: _main+27Fp push ebx push esi push edi loc_401803: ; CODE XREF: sub_401800+E8j call sub_401620 mov ebx, eax cmp ebx, offset aL_eof ; "**l_eof**" jz loc_4019FF mov eax, ebx mov edx, offset aSymbol ; "symbol" loc_40181D: ; CODE XREF: sub_401800+37j mov cl, [eax] cmp cl, [edx] jnz short loc_401839 test cl, cl jz short loc_401856 mov cl, [eax+1] cmp cl, [edx+1] jnz short loc_401839 add eax, 2 add edx, 2 test cl, cl jnz short loc_40181D loc_401839: ; CODE XREF: sub_401800+21j ; sub_401800+2Dj jz short loc_401856 push dword_40D0AC push offset aSymbolErrorAtL ; "Symbol Error at line %d\n" call _printf add esp, 8 push 1 ; status call _exit ; --------------------------------------------------------------------------- pop ecx loc_401856: ; CODE XREF: sub_401800+25j ; sub_401800:loc_401839j call sub_401620 mov ebx, eax push dword_40D1EC ; int mov eax, offset unk_40D0D4 ; int mov ecx, 2 ; int mov edx, ebx ; s call sub_402034 mov edx, dword_40D1EC mov dword_40D5F0[edx*4], eax inc dword_40D1EC mov eax, dword_410AF4 test eax, eax jz short loc_4018AC push ebx push dword_40D0AC push offset aMetaRedeclarat ; "Meta Redeclaration Error at line %d (%s"... call _printf add esp, 0Ch push 1 ; status call _exit ; --------------------------------------------------------------------------- pop ecx loc_4018AC: ; CODE XREF: sub_401800+8Ej or edi, 0FFFFFFFFh loc_4018AF: ; CODE XREF: sub_401800+1A8j ; sub_401800+1FAj inc edi call sub_401620 mov ebx, eax mov edx, offset aEos ; "EOS" mov eax, ebx loc_4018BE: ; CODE XREF: sub_401800+D8j mov cl, [eax] cmp cl, [edx] jnz short loc_4018ED test cl, cl jz short loc_4018DA mov cl, [eax+1] cmp cl, [edx+1] jnz short loc_4018ED add eax, 2 add edx, 2 test cl, cl jnz short loc_4018BE loc_4018DA: ; CODE XREF: sub_401800+C6j jnz short loc_4018ED mov eax, dword_40D1EC mov dword_40D1EC[eax*4], edi jmp loc_401803 ; --------------------------------------------------------------------------- loc_4018ED: ; CODE XREF: sub_401800+C2j ; sub_401800+CEj ... call sub_401620 mov esi, eax jmp short loc_40193B ; --------------------------------------------------------------------------- loc_4018F6: ; CODE XREF: sub_401800+14Aj ; sub_401800:loc_40195Ej push edi ; int mov eax, offset unk_40D0D4 ; int mov ecx, 5 ; int mov edx, ebx ; s call sub_402034 mov eax, dword_410AF4 test eax, eax jz short loc_40192D push ebx push dword_40D0AC push offset aLabelRedeclara ; "Label Redeclaration Error at line %d (%"... call _printf add esp, 0Ch push 1 ; status call _exit ; --------------------------------------------------------------------------- pop ecx loc_40192D: ; CODE XREF: sub_401800+10Fj call sub_401620 mov ebx, eax call sub_401620 mov esi, eax loc_40193B: ; CODE XREF: sub_401800+F4j mov eax, esi mov edx, offset asc_40DFDA ; ":" loc_401942: ; CODE XREF: sub_401800+15Cj mov cl, [eax] cmp cl, [edx] jnz short loc_40195E test cl, cl jz short loc_4018F6 mov cl, [eax+1] cmp cl, [edx+1] jnz short loc_40195E add eax, 2 add edx, 2 test cl, cl jnz short loc_401942 loc_40195E: ; CODE XREF: sub_401800+146j ; sub_401800+152j jz short loc_4018F6 mov eax, offset unk_40D0D4 mov edx, ebx call sub_4020E0 mov esi, eax test esi, esi jnz short loc_40198E push ebx push dword_40D0AC push offset aUndefinedTermA ; "Undefined term at line %d (%s)\n" call _printf add esp, 0Ch push 1 ; status call _exit ; --------------------------------------------------------------------------- pop ecx loc_40198E: ; CODE XREF: sub_401800+170j call sub_401620 call sub_401620 mov ebx, eax mov eax, offset unk_40D0D4 mov edx, ebx call sub_4020E0 test eax, eax jnz loc_4018AF mov ecx, [esi+0Ch] inc ecx jnz short loc_4019D0 push ebx push dword_40D0AC push offset aIllegalUseOfAc ; "Illegal use of action at line %d (%s)\n" call _printf add esp, 0Ch push 1 ; status call _exit ; --------------------------------------------------------------------------- pop ecx loc_4019D0: ; CODE XREF: sub_401800+1B2j push dword_40D9F0 ; int mov eax, offset unk_40D0D4 ; int mov ecx, 4 ; int mov edx, ebx ; s call sub_402034 mov edx, dword_40D9F0 mov dword_40D9F4[edx*4], eax inc dword_40D9F0 jmp loc_4018AF ; --------------------------------------------------------------------------- loc_4019FF: ; CODE XREF: sub_401800+10j pop edi pop esi pop ebx retn sub_401800 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_401A04 proc near ; CODE XREF: _main+2BFp 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 arglist = byte ptr -4 push ebp mov ebp, esp add esp, 0FFFFFFDCh xor eax, eax xor edx, edx xor ecx, ecx push ebx push esi push edi mov [ebp+var_18], eax mov [ebp+var_1C], edx mov [ebp+var_20], ecx push dword_40D0A8 push arglist ; arglist push offset aThisFileIsGene ; "\n/*\tThis file is generated by Symbol Ta"... call sub_401230 add esp, 0Ch push dword_40D0A8 push arglist ; arglist push offset aThisFileIsGe_0 ; "/*\n\tThis file is generated by Symbol Ta"... call sub_40124C add esp, 0Ch call sub_401F5C loc_401A53: ; CODE XREF: sub_401A04+18Aj call sub_401620 mov ebx, eax cmp ebx, offset aL_eof ; "**l_eof**" jnz short loc_401A6C call sub_401EE4 jmp loc_401EDC ; --------------------------------------------------------------------------- loc_401A6C: ; CODE XREF: sub_401A04+5Cj mov eax, ebx mov edx, offset aSymbol ; "symbol" loc_401A73: ; CODE XREF: sub_401A04+89j mov cl, [eax] cmp cl, [edx] jnz short loc_401A8F test cl, cl jz short loc_401AAC mov cl, [eax+1] cmp cl, [edx+1] jnz short loc_401A8F add eax, 2 add edx, 2 test cl, cl jnz short loc_401A73 loc_401A8F: ; CODE XREF: sub_401A04+73j ; sub_401A04+7Fj jz short loc_401AAC push dword_40D0AC push offset aSymbolErrorAtL ; "Symbol Error at line %d\n" call _printf add esp, 8 push 1 ; status call _exit ; --------------------------------------------------------------------------- pop ecx loc_401AAC: ; CODE XREF: sub_401A04+77j ; sub_401A04:loc_401A8Fj call sub_401620 mov ebx, eax mov eax, offset unk_40D0D4 mov edx, ebx call sub_4020E0 mov esi, eax test esi, esi jnz short loc_401AE1 push ebx push dword_40D0AC push offset aMetaNotFoundAt ; "Meta not found at line %d (%s)\n" call _printf add esp, 0Ch push 1 ; status call _exit ; --------------------------------------------------------------------------- pop ecx loc_401AE1: ; CODE XREF: sub_401A04+BFj mov eax, [ebp+var_20] mov edx, dword_40D1F0[eax*4] test edx, edx jnz short loc_401B07 push dword ptr [esi+8] push offset aSymbolSIsEmpty ; "Symbol %s is empty !\n" call _printf add esp, 8 push 1 ; status call _exit ; --------------------------------------------------------------------------- pop ecx loc_401B07: ; CODE XREF: sub_401A04+E9j mov ecx, [ebp+var_20] push dword_40D1F0[ecx*4] push dword ptr [esi+8] push offset aPsymbol_t ; "psymbol_t" push offset aStaticConstSSD ; "static const %s %s[%d] =\n{\n" call sub_401230 add esp, 10h inc [ebp+var_20] mov dword ptr [ebp+arglist], 0FFFFFFFFh loc_401B30: ; CODE XREF: sub_401A04+4D3j inc dword ptr [ebp+arglist] call sub_401620 mov edi, eax mov edx, offset aEos ; "EOS" mov eax, edi loc_401B41: ; CODE XREF: sub_401A04+157j mov cl, [eax] cmp cl, [edx] jnz short loc_401B93 test cl, cl jz short loc_401B5D mov cl, [eax+1] cmp cl, [edx+1] jnz short loc_401B93 add eax, 2 add edx, 2 test cl, cl jnz short loc_401B41 loc_401B5D: ; CODE XREF: sub_401A04+145j jnz short loc_401B93 mov eax, [ebp+var_1C] test eax, eax jnz short loc_401B83 mov edx, dword_40D0AC dec edx push edx push offset aBadLastChoiceA ; "Bad last choice at line %d\n" call _printf add esp, 8 push 1 ; status call _exit ; --------------------------------------------------------------------------- pop ecx loc_401B83: ; CODE XREF: sub_401A04+160j push offset asc_40E1EF ; "\n};\n\n" call sub_401230 pop ecx jmp loc_401A53 ; --------------------------------------------------------------------------- loc_401B93: ; CODE XREF: sub_401A04+141j ; sub_401A04+14Dj ... call sub_401620 mov ebx, eax jmp short loc_401BAA ; --------------------------------------------------------------------------- loc_401B9C: ; CODE XREF: sub_401A04+1B5j ; sub_401A04:loc_401BCDj call sub_401620 mov edi, eax call sub_401620 mov ebx, eax loc_401BAA: ; CODE XREF: sub_401A04+196j mov eax, ebx mov edx, offset asc_40DFDA ; ":" loc_401BB1: ; CODE XREF: sub_401A04+1C7j mov cl, [eax] cmp cl, [edx] jnz short loc_401BCD test cl, cl jz short loc_401B9C mov cl, [eax+1] cmp cl, [edx+1] jnz short loc_401BCD add eax, 2 add edx, 2 test cl, cl jnz short loc_401BB1 loc_401BCD: ; CODE XREF: sub_401A04+1B1j ; sub_401A04+1BDj jz short loc_401B9C mov eax, offset unk_40D0D4 mov edx, edi call sub_4020E0 mov esi, eax mov eax, offset unk_40D0D4 mov edx, ebx call sub_4020E0 mov [ebp+var_8], eax call sub_401620 mov edx, eax mov eax, offset unk_40D0D4 call sub_4020E0 mov [ebp+var_C], eax test esi, esi jnz short loc_401C20 push edi push dword_40D0AC push offset aUndefinedTermA ; "Undefined term at line %d (%s)\n" call _printf add esp, 0Ch push 1 ; status call _exit ; --------------------------------------------------------------------------- pop ecx loc_401C20: ; CODE XREF: sub_401A04+1FEj mov ecx, [esi+0Ch] mov [ebp+var_10], ecx mov eax, [esi+10h] cmp eax, 3 jnz short loc_401C3D mov edx, [esi+0Ch] test edx, edx jz short loc_401C67 mov ecx, [esi+0Ch] inc ecx jnz short loc_401C4B jmp short loc_401C67 ; --------------------------------------------------------------------------- loc_401C3D: ; CODE XREF: sub_401A04+228j mov eax, [esi+10h] dec eax jnz short loc_401C4B mov edx, [esi+0Ch] mov [ebp+var_10], edx jmp short loc_401C67 ; --------------------------------------------------------------------------- loc_401C4B: ; CODE XREF: sub_401A04+235j ; sub_401A04+23Dj push edi push dword_40D0AC push offset aTermMismatchAt ; "Term mismatch at line %d (%s)\n" call _printf add esp, 0Ch push 1 ; status call _exit ; --------------------------------------------------------------------------- pop ecx loc_401C67: ; CODE XREF: sub_401A04+22Fj ; sub_401A04+237j ... mov ecx, [esi+0Ch] inc ecx jz short loc_401CDF mov eax, [ebp+var_8] test eax, eax jnz short loc_401C90 push ebx push dword_40D0AC push offset aUndefinedMetaA ; "Undefined meta at line %d (%s)\n" call _printf add esp, 0Ch push 1 ; status call _exit ; --------------------------------------------------------------------------- pop ecx loc_401C90: ; CODE XREF: sub_401A04+26Ej mov edx, [ebp+var_8] mov ecx, [edx+0Ch] mov [ebp+var_18], ecx mov eax, [ebp+var_8] mov edx, [eax+10h] cmp edx, 3 jnz short loc_401CB8 mov ecx, [ebp+var_8] mov eax, [ecx+0Ch] cmp eax, 4 jnz short loc_401CB8 mov [ebp+var_18], 0FFFFFFFFh jmp short loc_401CDF ; --------------------------------------------------------------------------- loc_401CB8: ; CODE XREF: sub_401A04+29Ej ; sub_401A04+2A9j mov edx, [ebp+var_8] mov ecx, [edx+10h] cmp ecx, 2 jz short loc_401CDF push ebx push dword_40D0AC push offset aMetaMismatchAt ; "Meta mismatch at line %d (%s)\n" call _printf add esp, 0Ch push 1 ; status call _exit ; --------------------------------------------------------------------------- pop ecx loc_401CDF: ; CODE XREF: sub_401A04+267j ; sub_401A04+2B2j ... mov eax, [ebp+var_C] test eax, eax jnz short loc_401D01 push dword_40D0AC push offset aUndefinedNextL ; "Undefined next label at line %d\n" call _printf add esp, 8 push 1 ; status call _exit ; --------------------------------------------------------------------------- pop ecx loc_401D01: ; CODE XREF: sub_401A04+2E0j mov edx, [ebp+var_C] mov ecx, [edx+10h] cmp ecx, 3 jz short loc_401D35 mov eax, [ebp+var_C] mov edx, [eax+10h] cmp edx, 5 jz short loc_401D35 push [ebp+var_C] push dword_40D0AC push offset aNextLabelIsDef ; "Next label is defined as term or meta a"... call _printf add esp, 0Ch push 1 ; status call _exit ; --------------------------------------------------------------------------- pop ecx loc_401D35: ; CODE XREF: sub_401A04+306j ; sub_401A04+311j mov ecx, [ebp+var_C] mov eax, [ecx+10h] cmp eax, 5 jnz short loc_401D4B mov edx, [ebp+var_C] mov ecx, [edx+0Ch] mov [ebp+var_14], ecx jmp short loc_401D9E ; --------------------------------------------------------------------------- loc_401D4B: ; CODE XREF: sub_401A04+33Aj mov eax, [ebp+var_C] mov edx, [eax+0Ch] dec edx jz short loc_401D6B dec edx jz short loc_401D7B dec edx jz short loc_401D74 dec edx sub edx, 2 jb short loc_401D62 jmp short loc_401D83 ; --------------------------------------------------------------------------- loc_401D62: ; CODE XREF: sub_401A04+35Aj mov [ebp+var_14], 0FFFFFFFFh jmp short loc_401D9E ; --------------------------------------------------------------------------- loc_401D6B: ; CODE XREF: sub_401A04+34Ej mov ecx, dword ptr [ebp+arglist] inc ecx mov [ebp+var_14], ecx jmp short loc_401D9E ; --------------------------------------------------------------------------- loc_401D74: ; CODE XREF: sub_401A04+354j xor eax, eax mov [ebp+var_14], eax jmp short loc_401D9E ; --------------------------------------------------------------------------- loc_401D7B: ; CODE XREF: sub_401A04+351j mov edx, dword ptr [ebp+arglist] mov [ebp+var_14], edx jmp short loc_401D9E ; --------------------------------------------------------------------------- loc_401D83: ; CODE XREF: sub_401A04+35Cj mov ecx, [ebp+var_C] push dword ptr [ecx+0Ch] push offset aUnknownSystemL ; "Unknown system label type %d\n" call _printf add esp, 8 push 1 ; status call _exit ; --------------------------------------------------------------------------- pop ecx loc_401D9E: ; CODE XREF: sub_401A04+345j ; sub_401A04+365j ... call sub_401620 mov edx, eax mov eax, offset unk_40D0D4 call sub_4020E0 mov edi, eax mov eax, [edi+0Ch] mov [ebp+var_24], eax mov edx, [edi+10h] cmp edx, 4 jz short loc_401DF1 mov ecx, [edi+0Ch] cmp ecx, 4 jnz short loc_401DCF mov eax, [edi+10h] cmp eax, 3 jz short loc_401DEA loc_401DCF: ; CODE XREF: sub_401A04+3C1j push dword_40D0AC push offset aTypeMismatchOf ; "Type mismatch of Action at line %d\n" call _printf add esp, 8 push 1 ; status call _exit ; --------------------------------------------------------------------------- pop ecx loc_401DEA: ; CODE XREF: sub_401A04+3C9j mov [ebp+var_24], 0FFFFFFFFh loc_401DF1: ; CODE XREF: sub_401A04+3B9j mov edx, [esi+0Ch] inc edx jz short loc_401E0C mov ecx, [esi+0Ch] test ecx, ecx jnz short loc_401E08 mov eax, [ebp+var_14] mov edx, dword ptr [ebp+arglist] cmp eax, edx jle short loc_401E0C loc_401E08: ; CODE XREF: sub_401A04+3F8j xor ecx, ecx jmp short loc_401E11 ; --------------------------------------------------------------------------- loc_401E0C: ; CODE XREF: sub_401A04+3F1j ; sub_401A04+402j mov ecx, 1 loc_401E11: ; CODE XREF: sub_401A04+406j mov [ebp+var_1C], ecx mov eax, dword ptr [ebp+arglist] test eax, eax jz short loc_401E26 push offset asc_40E2ED ; ",\n" call sub_401230 pop ecx loc_401E26: ; CODE XREF: sub_401A04+415j push [ebp+var_10] mov edx, [ebp+var_10] test edx, edx jg short loc_401E37 mov edx, 3 jmp short loc_401E3C ; --------------------------------------------------------------------------- loc_401E37: ; CODE XREF: sub_401A04+42Aj mov edx, 1 loc_401E3C: ; CODE XREF: sub_401A04+431j mov eax, offset unk_40D0D4 mov ecx, [ebp+var_10] call sub_402140 push dword ptr [eax+8] push dword ptr [ebp+arglist] ; arglist push offset a2d8sD ; "/* %2d %-8s*/ { %d,\t" call sub_401230 add esp, 10h mov eax, [esi+0Ch] inc eax jz short loc_401E74 push [ebp+var_18] ; arglist push offset aD ; "%d" call sub_401230 add esp, 8 jmp short loc_401E82 ; --------------------------------------------------------------------------- loc_401E74: ; CODE XREF: sub_401A04+45Cj push ebx ; arglist push offset aS ; "%s" call sub_401230 add esp, 8 loc_401E82: ; CODE XREF: sub_401A04+46Ej mov edx, [edi+8] test edx, edx jz short loc_401E8E mov ecx, [edi+8] jmp short loc_401E93 ; --------------------------------------------------------------------------- loc_401E8E: ; CODE XREF: sub_401A04+483j mov ecx, offset unk_40DDF5 loc_401E93: ; CODE XREF: sub_401A04+488j push ecx mov eax, [esi+0Ch] inc eax jnz short loc_401EA1 mov edx, offset aError ; "error" jmp short loc_401EA7 ; --------------------------------------------------------------------------- loc_401EA1: ; CODE XREF: sub_401A04+494j mov eax, [ebp+var_8] mov edx, [eax+8] loc_401EA7: ; CODE XREF: sub_401A04+49Bj push edx mov ecx, [ebp+var_24] inc ecx jnz short loc_401EB5 mov eax, 0FFh jmp short loc_401EB8 ; --------------------------------------------------------------------------- loc_401EB5: ; CODE XREF: sub_401A04+4A8j mov eax, [ebp+var_24] loc_401EB8: ; CODE XREF: sub_401A04+4AFj push eax mov edx, [ebp+var_14] inc edx jnz short loc_401EC6 mov ecx, 0FFh jmp short loc_401EC9 ; --------------------------------------------------------------------------- loc_401EC6: ; CODE XREF: sub_401A04+4B9j mov ecx, [ebp+var_14] loc_401EC9: ; CODE XREF: sub_401A04+4C0j push ecx ; arglist push offset aDDSS ; ",\t%d,\t%d,\t} /* %s,%s */" call sub_401230 add esp, 14h jmp loc_401B30 ; --------------------------------------------------------------------------- loc_401EDC: ; CODE XREF: sub_401A04+63j pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_401A04 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_401EE4 proc near ; CODE XREF: sub_401A04+5Ep push ebx push dword_40D1EC push off_40D0C0 push offset aPsymbol_t ; "psymbol_t" mov eax, dword_40D0D0 test eax, eax jz short loc_401F06 mov edx, offset aStatic ; "static " jmp short loc_401F0B ; --------------------------------------------------------------------------- loc_401F06: ; CODE XREF: sub_401EE4+19j mov edx, offset unk_40DDF5 loc_401F0B: ; CODE XREF: sub_401EE4+20j push edx ; arglist push offset aSconstSConstSD ; "%sconst %s *const %s[ %d ] = {\n" call sub_401230 add esp, 14h xor ebx, ebx jmp short loc_401F45 ; --------------------------------------------------------------------------- loc_401F1D: ; CODE XREF: sub_401EE4+69j test ebx, ebx jz short loc_401F2C push offset asc_40E2ED ; ",\n" call sub_401230 pop ecx loc_401F2C: ; CODE XREF: sub_401EE4+3Bj mov eax, dword_40D5F0[ebx*4] push dword ptr [eax+8] push ebx ; arglist push offset a2dS ; "/* %2d */ %s" call sub_401230 add esp, 0Ch inc ebx loc_401F45: ; CODE XREF: sub_401EE4+37j mov edx, dword_40D1EC cmp ebx, edx jl short loc_401F1D push offset asc_40E358 ; "\n};\n" call sub_401230 pop ecx pop ebx retn sub_401EE4 endp ; =============== S U B R O U T I N E ======================================= sub_401F5C proc near ; CODE XREF: sub_401A04+4Ap push ebx mov eax, dword_40D9F0 test eax, eax jz loc_40200C xor ebx, ebx jmp short loc_401F8C ; --------------------------------------------------------------------------- loc_401F6E: ; CODE XREF: sub_401F5C+38j mov eax, dword_40D9F4[ebx*4] push dword ptr [eax+8] push offset aError_t ; "error_t" push ebx ; arglist push offset a2dSIdaapiSVoid ; "/* %2d */ %s idaapi %s(void);\n" call sub_40124C add esp, 10h inc ebx loc_401F8C: ; CODE XREF: sub_401F5C+10j mov edx, dword_40D9F0 cmp ebx, edx jl short loc_401F6E push dword_40D9F0 push off_40D0C4 push offset aAction_t ; "action_t" mov ecx, dword_40D0D0 test ecx, ecx jz short loc_401FB8 mov eax, offset aStatic ; "static " jmp short loc_401FBD ; --------------------------------------------------------------------------- loc_401FB8: ; CODE XREF: sub_401F5C+53j mov eax, offset unk_40DDF5 loc_401FBD: ; CODE XREF: sub_401F5C+5Aj push eax ; arglist push offset aSconstSSD ; "\n%sconst %s %s[%d] =\n{\n" call sub_401230 add esp, 14h xor ebx, ebx jmp short loc_401FF7 ; --------------------------------------------------------------------------- loc_401FCF: ; CODE XREF: sub_401F5C+A3j test ebx, ebx jz short loc_401FDE push offset asc_40E2ED ; ",\n" call sub_401230 pop ecx loc_401FDE: ; CODE XREF: sub_401F5C+75j mov eax, dword_40D9F4[ebx*4] push dword ptr [eax+8] push ebx ; arglist push offset a2dParser_tS ; "/* %2d */ &parser_t::%s" call sub_401230 add esp, 0Ch inc ebx loc_401FF7: ; CODE XREF: sub_401F5C+71j mov edx, dword_40D9F0 cmp ebx, edx jl short loc_401FCF push offset asc_40E1EF ; "\n};\n\n" call sub_401230 pop ecx loc_40200C: ; CODE XREF: sub_401F5C+8j pop ebx retn sub_401F5C endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_402010 proc near ; CODE XREF: sub_402034:loc_40208Ep ; sub_402034:loc_4020A5p mov eax, 14h ; size call sub_401304 xor edx, edx xor ecx, ecx mov [eax], edx mov [eax+4], ecx xor edx, edx xor ecx, ecx mov [eax+8], edx xor edx, edx mov [eax+0Ch], ecx mov [eax+10h], edx retn sub_402010 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __fastcall sub_402034(int, char *s, int, int) sub_402034 proc near ; CODE XREF: _main+1F1p _main+207p ... var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx push ebx push esi push edi mov [ebp+var_4], ecx mov edi, edx mov ebx, eax mov dword_410AF4, 1 loc_40204C: ; CODE XREF: sub_402034+58j ; sub_402034+6Fj mov eax, edi mov edx, [ebx+8] loc_402051: ; CODE XREF: sub_402034+37j mov cl, [eax] cmp cl, [edx] jnz short loc_40206D test cl, cl jz short loc_40206D mov cl, [eax+1] cmp cl, [edx+1] jnz short loc_40206D add eax, 2 add edx, 2 test cl, cl jnz short loc_402051 loc_40206D: ; CODE XREF: sub_402034+21j ; sub_402034+25j ... setnz dl sbb eax, eax or al, dl mov esi, eax test eax, eax jnz short loc_40207E mov eax, ebx jmp short loc_4020D6 ; --------------------------------------------------------------------------- loc_40207E: ; CODE XREF: sub_402034+44j test esi, esi jle short loc_40209B mov edx, [ebx+4] test edx, edx jz short loc_40208E mov ebx, [ebx+4] jmp short loc_40204C ; --------------------------------------------------------------------------- loc_40208E: ; CODE XREF: sub_402034+53j call sub_402010 mov [ebx+4], eax mov ebx, [ebx+4] jmp short loc_4020AE ; --------------------------------------------------------------------------- loc_40209B: ; CODE XREF: sub_402034+4Cj mov ecx, [ebx] test ecx, ecx jz short loc_4020A5 mov ebx, [ebx] jmp short loc_40204C ; --------------------------------------------------------------------------- loc_4020A5: ; CODE XREF: sub_402034+6Bj call sub_402010 mov [ebx], eax mov ebx, [ebx] loc_4020AE: ; CODE XREF: sub_402034+65j xor eax, eax mov edx, [ebp+arg_0] mov dword_410AF4, eax mov [ebx+0Ch], edx mov ecx, [ebp+var_4] xor eax, eax mov [ebx+10h], ecx mov [ebx+4], eax xor edx, edx mov [ebx], edx push edi ; s call _strdup pop ecx mov [ebx+8], eax mov eax, ebx loc_4020D6: ; CODE XREF: sub_402034+48j pop edi pop esi pop ebx pop ecx pop ebp retn 4 sub_402034 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_4020E0 proc near ; CODE XREF: sub_401800+167p ; sub_401800+1A1p ... push ebx push esi push edi mov edi, edx mov ebx, eax loc_4020E7: ; CODE XREF: sub_4020E0+47j ; sub_4020E0+55j mov eax, edi mov edx, [ebx+8] loc_4020EC: ; CODE XREF: sub_4020E0+26j mov cl, [eax] cmp cl, [edx] jnz short loc_402108 test cl, cl jz short loc_402108 mov cl, [eax+1] cmp cl, [edx+1] jnz short loc_402108 add eax, 2 add edx, 2 test cl, cl jnz short loc_4020EC loc_402108: ; CODE XREF: sub_4020E0+10j ; sub_4020E0+14j ... setnz dl sbb eax, eax or al, dl mov esi, eax test eax, eax jnz short loc_402119 mov eax, ebx jmp short loc_402139 ; --------------------------------------------------------------------------- loc_402119: ; CODE XREF: sub_4020E0+33j test esi, esi jle short loc_40212D mov edx, [ebx+4] test edx, edx jz short loc_402129 mov ebx, [ebx+4] jmp short loc_4020E7 ; --------------------------------------------------------------------------- loc_402129: ; CODE XREF: sub_4020E0+42j xor eax, eax jmp short loc_402139 ; --------------------------------------------------------------------------- loc_40212D: ; CODE XREF: sub_4020E0+3Bj mov edx, [ebx] test edx, edx jz short loc_402137 mov ebx, [ebx] jmp short loc_4020E7 ; --------------------------------------------------------------------------- loc_402137: ; CODE XREF: sub_4020E0+51j xor eax, eax loc_402139: ; CODE XREF: sub_4020E0+37j ; sub_4020E0+4Bj pop edi pop esi pop ebx retn sub_4020E0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_402140 proc near ; CODE XREF: sub_4016EC+66p ; sub_401A04+440p ... var_4 = dword ptr -4 push ebp mov ebp, esp push ecx push ebx mov ebx, eax push esi push edi mov [ebp+var_4], ecx mov eax, [ebx+10h] mov edi, edx cmp edi, eax jnz short loc_402163 mov edx, [ebp+var_4] mov ecx, [ebx+0Ch] cmp edx, ecx jnz short loc_402163 mov eax, ebx jmp short loc_40219F ; --------------------------------------------------------------------------- loc_402163: ; CODE XREF: sub_402140+13j ; sub_402140+1Dj mov edx, [ebx] test edx, edx jz short loc_40217F mov ecx, [ebp+var_4] mov edx, edi mov eax, [ebx] call sub_402140 mov esi, eax test eax, eax jz short loc_40217F mov eax, esi jmp short loc_40219F ; --------------------------------------------------------------------------- loc_40217F: ; CODE XREF: sub_402140+27j ; sub_402140+39j mov edx, [ebx+4] test edx, edx jz short loc_40219D mov ecx, [ebp+var_4] mov edx, edi mov eax, [ebx+4] call sub_402140 mov esi, eax test eax, eax jz short loc_40219D mov eax, esi jmp short loc_40219F ; --------------------------------------------------------------------------- loc_40219D: ; CODE XREF: sub_402140+44j ; sub_402140+57j xor eax, eax loc_40219F: ; CODE XREF: sub_402140+21j ; sub_402140+3Dj ... pop edi pop esi pop ebx pop ecx pop ebp retn sub_402140 endp ; --------------------------------------------------------------------------- align 4 ; [0000002B BYTES: COLLAPSED FUNCTION _calloc. PRESS KEYPAD "+" TO EXPAND] align 4 ; [0000000F BYTES: COLLAPSED FUNCTION __rtl_close. PRESS KEYPAD "+" TO EXPAND] align 4 ; [0000000F BYTES: COLLAPSED FUNCTION __close. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000013 BYTES: COLLAPSED FUNCTION std::set_new_handler(void (*)(void)). PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000090 BYTES: COLLAPSED FUNCTION operator new(uint). PRESS KEYPAD "+" TO EXPAND] ; `__tpdsc__'[std::bad_alloc] @$xt$13std@bad_alloc dd 4 ; tpDtt ; DATA XREF: operator new(uint)+63o ; .text:`__tpdsc__'[std::bad_alloc *]o ... dw 3 ; tpMask ; BCC v4.x/5.x & BCB v1.0/v7.0 BDS2006 win32 runtime dw 30h ; tpName dd 0 ; bParent dd 77h ; tpcFlags dw 40h ; Size dw 50h ; ExpDim dd 0 ; mfnDel dw 0 ; mfnMask dw 0 ; mfnMaskArr dd 0 ; mfnDelArr dd 2 ; DtorCount dd 2 ; DtorAltCount dd offset unknown_libname_5; DtorAddr dw 1 ; DtorMask dw 54h ; DtorMemberOff db 'std::bad_alloc',0 ; Name align 4 dd offset @$xt$13std@exception ; Parent dd 0, 3, 0 dd 0 dd 0 ; end of tpid ; [0000003E BYTES: COLLAPSED FUNCTION std::bad_alloc::bad_alloc(std::bad_alloc &). PRESS KEYPAD "+" TO EXPAND] align 10h ; `__tpdsc__'[std::bad_alloc *] @$xt$p13std@bad_alloc dd 4 ; tpDtt ; DATA XREF: .data:stru_40E3E4o ; .data:off_40E454o ... dw 90h ; tpMask ; `__tpdsc__'[std::bad_alloc] dw 0Ch ; tpName dd offset @$xt$13std@bad_alloc; BaseType db 'bad_alloc *',0 ; Name ; `__tpdsc__'[std::exception] @$xt$13std@exception dd 4 ; tpDtt ; DATA XREF: .text:004022D8o ; .text:00403580o ... dw 3 ; tpMask ; BCC v4.x/5.x & BCB v1.0/v7.0 BDS2006 win32 runtime dw 30h ; tpName dd 0 ; bParent dd 73h ; tpcFlags dw 40h ; Size dw 44h ; ExpDim dd 0 ; mfnDel dw 0 ; mfnMask dw 0 ; mfnMaskArr dd 0 ; mfnDelArr dd 1 ; DtorCount dd 1 ; DtorAltCount dd offset unknown_libname_4; DtorAddr dw 1 ; DtorMask dw 48h ; DtorMemberOff db 'std::exception',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_402394 proc near ; DATA XREF: .data:0040E418o ; .data:0040E624o ... push ebp mov ebp, esp mov eax, off_40E63C pop ebp retn sub_402394 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4023A0 proc near ; DATA XREF: .data:0040E42Co push ebp mov ebp, esp mov eax, off_40E644 pop ebp retn sub_4023A0 endp ; --------------------------------------------------------------------------- align 4 ; [0000000F BYTES: COLLAPSED FUNCTION operator new[](uint). PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000054 BYTES: COLLAPSED FUNCTION unknown_libname_1. PRESS KEYPAD "+" TO EXPAND] ; =============== S U B R O U T I N E ======================================= sub_402410 proc near ; DATA XREF: .text:00401002o push offset unknown_libname_1 ; BCC v4.x/5.x & BCB v1.0/v7.0 BDS2006 win32 runtime call @std@set_new_handler$qpqv$v ; std::set_new_handler(void (*)(void)) pop ecx retn sub_402410 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40241C proc near ; DATA XREF: .text:00401008o var_24 = dword ptr -24h var_14 = word ptr -14h var_8 = dword ptr -8 push ebp mov ebp, esp add esp, 0FFFFFFDCh mov eax, offset stru_40E488 call @__InitExceptBlockLDTC mov [ebp+var_14], 8 inc [ebp+var_8] inc [ebp+var_8] mov edx, offset off_40E414 mov dword_410AFC, edx mov ecx, offset off_40E428 mov dword_410AFC, ecx mov eax, [ebp+var_24] mov large fs:0, eax mov esp, ebp pop ebp retn sub_40241C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40245C proc near ; DATA XREF: .text:00401092o var_24 = dword ptr -24h var_8 = dword ptr -8 push ebp mov ebp, esp add esp, 0FFFFFFDCh mov eax, offset stru_40E49C call @__InitExceptBlockLDTC sub [ebp+var_8], 2 push 2 ; char push offset dword_410AFC ; handle call unknown_libname_5 ; BCC v4.x/5.x & BCB v1.0/v7.0 BDS2006 win32 runtime add esp, 8 mov edx, [ebp+var_24] mov large fs:0, edx mov esp, ebp pop ebp retn sub_40245C endp ; --------------------------------------------------------------------------- align 10h ; [0000006A BYTES: COLLAPSED FUNCTION @_virt_reserve. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000027 BYTES: COLLAPSED FUNCTION @_virt_alloc. PRESS KEYPAD "+" TO EXPAND] align 4 ; [0000004B BYTES: COLLAPSED FUNCTION @_virt_commit. PRESS KEYPAD "+" TO EXPAND] align 10h ; [00000018 BYTES: COLLAPSED FUNCTION @_virt_decommit. PRESS KEYPAD "+" TO EXPAND] ; [00000019 BYTES: COLLAPSED FUNCTION @_virt_release. PRESS KEYPAD "+" TO EXPAND] align 4 push offset aBorlndmm ; "borlndmm" call LoadLibraryA cmp eax, dword_410B14 jz short locret_4025C1 push offset aHrdir_b_cLoadl ; "hrdir_b.c: LoadLibrary != mmdll borlndm"... call __ErrorExit ; --------------------------------------------------------------------------- db 59h ; Y ; --------------------------------------------------------------------------- locret_4025C1: ; CODE XREF: .text:004025B4j retn ; --------------------------------------------------------------------------- align 4 ; [0000007C BYTES: COLLAPSED FUNCTION ___CRTL_MEM_GetBorMemPtrs. PRESS KEYPAD "+" TO EXPAND] ; [00000003 BYTES: COLLAPSED FUNCTION ___CRTL_MEM_CheckBorMem. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000010 BYTES: COLLAPSED FUNCTION _malloc. PRESS KEYPAD "+" TO EXPAND] ; [00000010 BYTES: COLLAPSED FUNCTION _free. PRESS KEYPAD "+" TO EXPAND] ; [00000016 BYTES: COLLAPSED FUNCTION _realloc. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000048 BYTES: COLLAPSED FUNCTION ___CRTL_MEM_Revector. PRESS KEYPAD "+" TO EXPAND] ; [00000018 BYTES: COLLAPSED FUNCTION sub_4026C4. PRESS KEYPAD "+" TO EXPAND] ; [00000018 BYTES: COLLAPSED FUNCTION sub_4026DC. PRESS KEYPAD "+" TO EXPAND] ; [0000001E BYTES: COLLAPSED FUNCTION sub_4026F4. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000001 BYTES: COLLAPSED FUNCTION nullsub_5. PRESS KEYPAD "+" TO EXPAND] align 4 loc_402718: ; DATA XREF: .text:00401098o mov dword_40E540, 1 retn ; --------------------------------------------------------------------------- align 4 ; [00000010 BYTES: COLLAPSED FUNCTION __free_heaps. PRESS KEYPAD "+" TO EXPAND] ; [00000001 BYTES: COLLAPSED FUNCTION nullsub_1. PRESS KEYPAD "+" TO EXPAND] align 4 __init_lock: ; DATA XREF: .text:0040100Eo push offset aCreatingHeapLo ; "creating heap lock" push offset lpCriticalSection call __create_lock add esp, 8 retn ; --------------------------------------------------------------------------- align 4 ; [0000000D BYTES: COLLAPSED FUNCTION __lock_heap. PRESS KEYPAD "+" TO EXPAND] align 4 ; [0000000D BYTES: COLLAPSED FUNCTION __unlock_heap. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000040 BYTES: COLLAPSED FUNCTION sub_40276C. PRESS KEYPAD "+" TO EXPAND] ; [000000FF BYTES: COLLAPSED FUNCTION sub_4027AC. PRESS KEYPAD "+" TO EXPAND] align 4 ; [000000EB BYTES: COLLAPSED FUNCTION sub_4028AC. PRESS KEYPAD "+" TO EXPAND] align 4 ; [000002C2 BYTES: COLLAPSED FUNCTION sub_402998. PRESS KEYPAD "+" TO EXPAND] align 4 ; [000000F1 BYTES: COLLAPSED FUNCTION sub_402C5C. PRESS KEYPAD "+" TO EXPAND] align 10h ; [0000002B BYTES: COLLAPSED FUNCTION __internal_free. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000111 BYTES: COLLAPSED FUNCTION sub_402D7C. PRESS KEYPAD "+" TO EXPAND] align 10h ; [0000003B BYTES: COLLAPSED FUNCTION sub_402E90. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000027 BYTES: COLLAPSED FUNCTION __internal_malloc. PRESS KEYPAD "+" TO EXPAND] align 4 ; [000001FA BYTES: COLLAPSED FUNCTION sub_402EF4. PRESS KEYPAD "+" TO EXPAND] align 10h ; [00000018 BYTES: COLLAPSED FUNCTION __phys_avail. PRESS KEYPAD "+" TO EXPAND] ; [00000060 BYTES: COLLAPSED FUNCTION __internal_free_heaps. PRESS KEYPAD "+" TO EXPAND] ; [0000013C BYTES: COLLAPSED FUNCTION __expand. PRESS KEYPAD "+" TO EXPAND] ; [000000C9 BYTES: COLLAPSED FUNCTION sub_4032A4. PRESS KEYPAD "+" TO EXPAND] align 10h ; [000000A0 BYTES: COLLAPSED FUNCTION __internal_realloc. PRESS KEYPAD "+" TO EXPAND] ; [0000001A BYTES: COLLAPSED FUNCTION __msize. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000001 BYTES: COLLAPSED FUNCTION nullsub_2. PRESS KEYPAD "+" TO EXPAND] align 10h ; [00000001 BYTES: COLLAPSED FUNCTION nullsub_3. PRESS KEYPAD "+" TO EXPAND] align 4 unknown_libname_2: ; BCC v4.x/5.x & BCB v1.0/v7.0 BDS2006 win32 runtime push offset @$xt$14std@bad_typeid push 0 push 1 call @__GetTypeInfo$qpvt1t1 ; __GetTypeInfo(void *,void *,void *) add esp, 0Ch push eax push offset @$xt$12std@bad_cast ; `__tpdsc__'[std::bad_cast] push 0 push 1 call @__GetTypeInfo$qpvt1t1 ; __GetTypeInfo(void *,void *,void *) add esp, 0Ch push eax call @std@type_info@$beql$xqrx13std@type_info ; std::type_info::operator==(std::type_info &) add esp, 8 retn ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_403464 proc near ; DATA XREF: .text:00401014o var_24 = dword ptr -24h var_14 = word ptr -14h var_8 = dword ptr -8 push ebp mov ebp, esp add esp, 0FFFFFFDCh mov eax, offset stru_40E5DC call @__InitExceptBlockLDTC mov [ebp+var_14], 8 push offset stru_410B1C ; lpCriticalSection call InitializeCriticalSection inc [ebp+var_8] inc [ebp+var_8] inc [ebp+var_8] inc [ebp+var_8] mov dword_410B34, 1 mov edx, offset off_40E414 mov ecx, offset off_40E634 mov dword_410B38, edx mov dword_410B38, ecx inc [ebp+var_8] mov eax, offset off_40E414 mov dword_410B3C, eax mov edx, offset off_40E620 mov dword_410B3C, edx mov ecx, [ebp+var_24] mov large fs:0, ecx mov esp, ebp pop ebp retn sub_403464 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4034D8 proc near ; DATA XREF: .text:0040109Eo var_24 = dword ptr -24h var_8 = dword ptr -8 push ebp mov ebp, esp add esp, 0FFFFFFDCh mov eax, offset stru_40E5F0 call @__InitExceptBlockLDTC dec [ebp+var_8] dec [ebp+var_8] push 0 ; char push offset dword_410B3C ; handle call unknown_libname_4 ; BCC v4.x/5.x & BCB v1.0/v7.0 BDS2006 win32 runtime add esp, 8 dec [ebp+var_8] dec [ebp+var_8] push 0 ; char push offset dword_410B38 ; handle call unknown_libname_4 ; BCC v4.x/5.x & BCB v1.0/v7.0 BDS2006 win32 runtime add esp, 8 dec [ebp+var_8] cmp dword_410B34, 0 jz short loc_403530 xor edx, edx push offset stru_410B1C ; lpCriticalSection mov dword_410B34, edx call DeleteCriticalSection loc_403530: ; CODE XREF: sub_4034D8+44j mov ecx, [ebp+var_24] mov large fs:0, ecx mov esp, ebp pop ebp retn sub_4034D8 endp ; --------------------------------------------------------------------------- align 10h ; `__tpdsc__'[std::bad_cast] @$xt$12std@bad_cast dd 4 ; tpDtt ; DATA XREF: .text:00403446o ; .data:0040E5C0o ... dw 3 ; tpMask ; __rwstd::facet_imp::~facet_imp(void) dw 30h ; tpName dd 0 ; bParent dd 77h ; tpcFlags dw 40h ; Size dw 50h ; ExpDim dd 0 ; mfnDel dw 0 ; mfnMask dw 0 ; mfnMaskArr dd 0 ; mfnDelArr dd 2 ; DtorCount dd 2 ; DtorAltCount dd offset @__rwstd@facet_imp@$bdtr$qv_0; DtorAddr dw 1 ; DtorMask dw 54h ; DtorMemberOff db 'std::bad_cast',0 ; Name align 4 dd offset @$xt$13std@exception ; Parent dd 0, 3, 0 dd 0 dd 0 ; end of tpid ; `__tpdsc__'[std::bad_typeid] @$xt$14std@bad_typeid dd 4 ; tpDtt ; DATA XREF: .text:unknown_libname_2o ; __GetTypeInfo(void *,void *,void *)+46o ... dw 3 ; tpMask ; __rwstd::facet_imp::~facet_imp(void) dw 30h ; tpName dd 0 ; bParent dd 77h ; tpcFlags dw 40h ; Size dw 50h ; ExpDim dd 0 ; mfnDel dw 0 ; mfnMask dw 0 ; mfnMaskArr dd 0 ; mfnDelArr dd 2 ; DtorCount dd 2 ; DtorAltCount dd offset @__rwstd@facet_imp@$bdtr$qv; DtorAddr dw 1 ; DtorMask dw 54h ; DtorMemberOff db 'std::bad_typeid',0 ; Name dd offset @$xt$13std@exception ; Parent dd 0, 3, 0 dd 0 dd 0 ; end of tpid ; `__tpdsc__'[_RWSTDMutex] @$xt$11_RWSTDMutex dd 1Ch ; tpDtt ; DATA XREF: .data:off_40E5B4o ; .data:off_40E650o dw 3 ; tpMask ; _RWSTDMutex::~_RWSTDMutex(void) dw 30h ; tpName dd 0FFFFFFFFh ; bParent dd 3 ; 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 @_RWSTDMutex@$bdtr$qv; DtorAddr dw 1 ; DtorMask dw 44h ; DtorMemberOff db '_RWSTDMutex',0 ; Name dd 0 dd 0 dd 0 ; end of tpid ; [0000002C BYTES: COLLAPSED FUNCTION _RWSTDMutex::~_RWSTDMutex(void). PRESS KEYPAD "+" TO EXPAND] ; [00000042 BYTES: COLLAPSED FUNCTION __rwstd::facet_imp::~facet_imp(void). PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000042 BYTES: COLLAPSED FUNCTION __rwstd::facet_imp::~facet_imp(void). PRESS KEYPAD "+" TO EXPAND] align 4 ; [0000003B BYTES: COLLAPSED FUNCTION unknown_libname_3. PRESS KEYPAD "+" TO EXPAND] align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_403728 proc near ; DATA XREF: .text:004010A4o var_24 = dword ptr -24h var_8 = dword ptr -8 push ebp mov ebp, esp add esp, 0FFFFFFDCh mov eax, offset stru_40E674 call @__InitExceptBlockLDTC dec [ebp+var_8] cmp dword_410B58, 0 jz short loc_403756 xor edx, edx push offset stru_410B40 ; lpCriticalSection mov dword_410B58, edx call DeleteCriticalSection loc_403756: ; CODE XREF: sub_403728+1Aj mov ecx, [ebp+var_24] mov large fs:0, ecx mov esp, ebp pop ebp retn sub_403728 endp ; [00000020 BYTES: COLLAPSED FUNCTION unknown_libname_4. PRESS KEYPAD "+" TO EXPAND] ; [0000005C BYTES: COLLAPSED FUNCTION unknown_libname_5. PRESS KEYPAD "+" TO EXPAND] ; [0000001E BYTES: COLLAPSED FUNCTION _memchr. PRESS KEYPAD "+" TO EXPAND] align 10h ; [00000024 BYTES: COLLAPSED FUNCTION _memcpy. PRESS KEYPAD "+" TO EXPAND] ; [0000004A BYTES: COLLAPSED FUNCTION _memmove. PRESS KEYPAD "+" TO EXPAND] align 10h ; [0000008A BYTES: COLLAPSED FUNCTION _memset. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000018 BYTES: COLLAPSED FUNCTION __wmemset. PRESS KEYPAD "+" TO EXPAND] ; [0000003C BYTES: COLLAPSED FUNCTION _strcat. PRESS KEYPAD "+" TO EXPAND] ; [0000005A BYTES: COLLAPSED FUNCTION _strlen. PRESS KEYPAD "+" TO EXPAND] align 4 ; [0000006E BYTES: COLLAPSED FUNCTION _strncat. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000027 BYTES: COLLAPSED FUNCTION _strncmp. PRESS KEYPAD "+" TO EXPAND] align 4 ; [0000006C BYTES: COLLAPSED FUNCTION _memcmp. PRESS KEYPAD "+" TO EXPAND] ; [00000032 BYTES: COLLAPSED FUNCTION _strdup. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000037 BYTES: COLLAPSED FUNCTION __stpcpy. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000018 BYTES: COLLAPSED FUNCTION _wcslen. PRESS KEYPAD "+" TO EXPAND] ; [0000003F BYTES: COLLAPSED FUNCTION _wcscpy. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000039 BYTES: COLLAPSED FUNCTION @__InitExceptBlockLDTC. PRESS KEYPAD "+" TO EXPAND] ; --------------------------------------------------------------------------- @__ExitExceptBlock: mov fs:0, eax retn ; --------------------------------------------------------------------------- db 2Ah dd 4343422Ah db 78h, 68h, 31h ; --------------------------------------------------------------------------- __ExceptionHandler: ; DATA XREF: @__InitExceptBlockLDTC+10o mov eax, esp push dword_40E708 push ebx push edi push esi push ebp push eax push dword ptr [eax+10h] push dword ptr [eax+0Ch] push dword ptr [eax+8] push dword ptr [eax+4] call ____ExceptionHandler add esp, 14h pop ebp pop esi pop edi pop ebx add esp, 4 retn ; [00000157 BYTES: COLLAPSED FUNCTION unknown_libname_6. PRESS KEYPAD "+" TO EXPAND] ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_403D3B proc near ; DATA XREF: .text:004010AAo var_24 = dword ptr -24h push ebp mov ebp, esp add esp, 0FFFFFFDCh push ebx push esi mov eax, offset stru_40E70C call @__InitExceptBlockLDTC xor esi, esi loc_403D4F: ; CODE XREF: sub_403D3B+41j mov eax, dword_410B60[esi*4] test eax, eax jz short loc_403D75 test eax, eax jz short loc_403D75 loc_403D5E: ; CODE XREF: sub_403D3B+38j mov ebx, [eax+0Ch] test eax, eax jz short loc_403D6F push 3 push eax mov eax, [eax] call dword ptr [eax] add esp, 8 loc_403D6F: ; CODE XREF: sub_403D3B+28j mov eax, ebx test eax, eax jnz short loc_403D5E loc_403D75: ; CODE XREF: sub_403D3B+1Dj ; sub_403D3B+21j inc esi cmp esi, 100h jl short loc_403D4F mov edx, [ebp+var_24] mov large fs:0, edx pop esi pop ebx mov esp, ebp pop ebp retn sub_403D3B endp ; [00000267 BYTES: COLLAPSED FUNCTION sub_403D8E. PRESS KEYPAD "+" TO EXPAND] ; [000000A2 BYTES: COLLAPSED FUNCTION sub_403FF5. PRESS KEYPAD "+" TO EXPAND] ; =============== S U B R O U T I N E ======================================= sub_404097 proc near ; DATA XREF: .text:00401020o mov eax, offset off_40E414 mov edx, offset off_40E620 mov dword_410B5C, eax mov dword_410B5C, edx mov ecx, offset off_40E414 mov eax, offset off_40E634 mov dword_410F60, ecx mov dword_410F60, eax retn sub_404097 endp ; =============== S U B R O U T I N E ======================================= sub_4040C2 proc near ; DATA XREF: .text:004010B0o push 0 ; char push offset dword_410F60 ; handle call unknown_libname_4 ; BCC v4.x/5.x & BCB v1.0/v7.0 BDS2006 win32 runtime add esp, 8 push 0 ; char push offset dword_410B5C ; handle call unknown_libname_4 ; BCC v4.x/5.x & BCB v1.0/v7.0 BDS2006 win32 runtime add esp, 8 retn sub_4040C2 endp ; --------------------------------------------------------------------------- align 4 ; [00000037 BYTES: COLLAPSED FUNCTION __typeIDname(tpid *). PRESS KEYPAD "+" TO EXPAND] align 4 ; [000000DB BYTES: COLLAPSED FUNCTION __isSameTypeID(tpid *,tpid *). PRESS KEYPAD "+" TO EXPAND] align 4 ; [0000010F BYTES: COLLAPSED FUNCTION __isCompatTypeID(tpid *,tpid *,int,tpid **). PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000020 BYTES: COLLAPSED FUNCTION unknown_libname_7. PRESS KEYPAD "+" TO EXPAND] ; [00000071 BYTES: COLLAPSED FUNCTION std::type_info::operator==(std::type_info &). PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000138 BYTES: COLLAPSED FUNCTION __GetTypeInfo(void *,void *,void *). PRESS KEYPAD "+" TO EXPAND] ; [00000016 BYTES: COLLAPSED FUNCTION std::bad_cast::bad_cast(std::bad_cast &). PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000067 BYTES: COLLAPSED FUNCTION unknown_libname_8. PRESS KEYPAD "+" TO EXPAND] align 4 ; [0000007A BYTES: COLLAPSED FUNCTION __adjustClassAdr(void *,tpid *,tpid *). PRESS KEYPAD "+" TO EXPAND] align 10h ; `__tpdsc__'[std::type_info] @$xt$13std@type_info dd 8 ; tpDtt ; DATA XREF: .text:0040465Co ; .data:0040EA44o dw 3 ; tpMask ; BCC v4.x/5.x & BCB v1.0/v7.0 BDS2006 win32 runtime dw 30h ; tpName dd 0 ; bParent dd 73h ; tpcFlags dw 40h ; Size dw 44h ; ExpDim dd 0 ; mfnDel dw 0 ; mfnMask dw 0 ; mfnMaskArr dd 0 ; mfnDelArr dd 1 ; DtorCount dd 1 ; DtorAltCount dd offset unknown_libname_7; DtorAddr dw 1 ; DtorMask dw 48h ; DtorMemberOff db 'std::type_info',0 ; Name align 4 dd 0 dd 0 dd 0 ; end of tpid ; `__tpdsc__'[type_info_hash] @$xt$14type_info_hash dd 14h ; tpDtt ; DATA XREF: .data:0040EA34o dw 3 ; tpMask ; std::bad_typeid::~bad_typeid(void) dw 30h ; tpName dd 0 ; bParent dd 77h ; tpcFlags dw 40h ; Size dw 50h ; ExpDim dd 0 ; mfnDel dw 0 ; mfnMask dw 0 ; mfnMaskArr dd 0 ; mfnDelArr dd 2 ; DtorCount dd 2 ; DtorAltCount dd offset @std@bad_typeid@$bdtr$qv; DtorAddr dw 1 ; DtorMask dw 54h ; DtorMemberOff db 'type_info_hash',0 ; Name align 4 dd offset @$xt$13std@type_info ; Parent dd 0, 3, 0 dd 0 dd 0 ; end of tpid ; [00000026 BYTES: COLLAPSED FUNCTION std::bad_typeid::~bad_typeid(void). PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000027 BYTES: COLLAPSED FUNCTION _InitTermAndUnexPtrs(void). PRESS KEYPAD "+" TO EXPAND] align 4 ; [0000003E BYTES: COLLAPSED FUNCTION std::terminate(void). PRESS KEYPAD "+" TO EXPAND] ; --------------------------------------------------------------------------- mov ecx, [ebp-24h] mov large fs:0, ecx pop edi pop esi pop ebx mov esp, ebp pop ebp retn ; --------------------------------------------------------------------------- align 4 ; [00000024 BYTES: COLLAPSED FUNCTION std::unexpected(void). PRESS KEYPAD "+" TO EXPAND] ; --------------------------------------------------------------------------- retn ; --------------------------------------------------------------------------- align 4 loc_40473C: ; DATA XREF: .text:00401026o push offset a___cppdebughoo ; "___CPPdebugHook" push 0 call GetModuleHandleA push eax call GetProcAddress mov dword_410F68, eax cmp dword_410F68, 0 jnz short locret_404766 mov dword_410F68, offset ___CPPdebugHook locret_404766: ; CODE XREF: .text:0040475Aj retn ; --------------------------------------------------------------------------- align 4 ; [00000060 BYTES: COLLAPSED FUNCTION ___call_terminate. PRESS KEYPAD "+" TO EXPAND] ; --------------------------------------------------------------------------- mov edx, [ebp-24h] mov large fs:0, edx pop edi pop esi pop ebx mov esp, ebp pop ebp retn ; --------------------------------------------------------------------------- align 4 ; [00000034 BYTES: COLLAPSED FUNCTION ___call_unexpected. PRESS KEYPAD "+" TO EXPAND] ; --------------------------------------------------------------------------- retn ; --------------------------------------------------------------------------- align 4 ; [0000004B BYTES: COLLAPSED FUNCTION __ExceptInit. PRESS KEYPAD "+" TO EXPAND] align 10h ; [00000027 BYTES: COLLAPSED FUNCTION __GetExceptDLLinfoInternal. PRESS KEYPAD "+" TO EXPAND] align 4 ; [0000000A BYTES: COLLAPSED FUNCTION unknown_libname_9. PRESS KEYPAD "+" TO EXPAND] align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_404894 proc near ; DATA XREF: sub_404980+Ao arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp push ebx push esi push edi mov edi, [ebp+arg_8] mov esi, [ebp+arg_4] mov ebx, [ebp+arg_0] cmp dword ptr [ebx], 0EEDFAE6h jnz short loc_4048B2 xor eax, eax jmp loc_40497A ; --------------------------------------------------------------------------- loc_4048B2: ; CODE XREF: sub_404894+15j mov eax, [ebx] cmp eax, 0EEFFACEh jz short loc_4048C2 cmp eax, 0EEDFACEh jnz short loc_4048D0 loc_4048C2: ; CODE XREF: sub_404894+25j mov eax, esi mov edx, ebx call ___doGlobalUnwind call ___call_terminate ; --------------------------------------------------------------------------- loc_4048D0: ; CODE XREF: sub_404894+2Cj cmp dword ptr [ebx], 0C00000FDh jnz short loc_4048EC cmp dword_40EB74, 0 jz short loc_4048EC push offset aStackOverflow ; "Stack Overflow!" call __ErrorExit ; --------------------------------------------------------------------------- db 59h ; Y ; --------------------------------------------------------------------------- loc_4048EC: ; CODE XREF: sub_404894+42j ; sub_404894+4Bj cmp dword_410F70, 0 jz short loc_40490D mov edx, [ebp+arg_C] push edx ; _DWORD push edi ; _DWORD push esi ; _DWORD push ebx ; _DWORD call dword_410F70 add esp, 10h test eax, eax jnz short loc_40490D xor eax, eax jmp short loc_40497A ; --------------------------------------------------------------------------- loc_40490D: ; CODE XREF: sub_404894+5Fj ; sub_404894+73j cmp dword_410F6C, 0 jz short loc_40492E mov edx, [ebp+arg_C] push edx ; _DWORD push edi ; _DWORD push esi ; _DWORD push ebx ; _DWORD call dword_410F6C add esp, 10h test eax, eax jnz short loc_40492E xor eax, eax jmp short loc_40497A ; --------------------------------------------------------------------------- loc_40492E: ; CODE XREF: sub_404894+80j ; sub_404894+94j cmp dword_4143B8, 0 jz short loc_404968 mov edx, dword_4143B8 mov eax, [edx] cmp eax, 1 jz short loc_404949 cmp eax, 2 jnz short loc_404968 loc_404949: ; CODE XREF: sub_404894+AEj mov eax, [ebx] cmp eax, 0EEDFACEh jb short loc_404959 cmp eax, 0EEFFACEh jbe short loc_404968 loc_404959: ; CODE XREF: sub_404894+BCj push edi push ebx push esi push 3 ; int push 2 ; Arguments call ___raiseDebuggerException add esp, 14h loc_404968: ; CODE XREF: sub_404894+A1j ; sub_404894+B3j ... test byte ptr [ebx+4], 6 jz short loc_404975 mov eax, 1 jmp short loc_40497A ; --------------------------------------------------------------------------- loc_404975: ; CODE XREF: sub_404894+D8j mov eax, 2 loc_40497A: ; CODE XREF: sub_404894+19j ; sub_404894+77j ... pop edi pop esi pop ebx pop ebp retn sub_404894 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_404980 proc near ; CODE XREF: sub_4049F8+Ap arg_0 = dword ptr 8 push ebp mov ebp, esp mov eax, [ebp+arg_0] xor edx, edx mov [eax], edx mov dword ptr [eax+4], offset sub_404894 push eax call __SetExceptionHandler pop ecx pop ebp retn sub_404980 endp ; --------------------------------------------------------------------------- align 4 ; [0000000F BYTES: COLLAPSED FUNCTION unknown_libname_20. PRESS KEYPAD "+" TO EXPAND] align 4 push ebp mov ebp, esp mov eax, dword_410F70 mov edx, [ebp+8] mov dword_410F70, edx pop ebp retn ; --------------------------------------------------------------------------- align 10h mov dword_410F70, offset unknown_libname_9 ; BCC v4.x/5.x & BCB v1.0/v7.0 BDS2006 win32 runtime retn ; --------------------------------------------------------------------------- align 4 loc_4049CC: ; DATA XREF: .text:0040102Co mov dword_410F6C, offset unknown_libname_9 ; BCC v4.x/5.x & BCB v1.0/v7.0 BDS2006 win32 runtime mov dword_410F70, offset unknown_libname_9 ; BCC v4.x/5.x & BCB v1.0/v7.0 BDS2006 win32 runtime retn ; --------------------------------------------------------------------------- align 4 loc_4049E4: ; DATA XREF: .text:004010B6o mov eax, dword_411384 test eax, eax jz short locret_4049F4 push eax call unknown_libname_20 ; Borland Visual Component Library & Packages pop ecx locret_4049F4: ; CODE XREF: .text:004049EBj retn ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_4049F8 proc near ; CODE XREF: __startup+59p mov eax, dword_411384 test eax, eax jz short locret_404A08 push eax call sub_404980 pop ecx locret_404A08: ; CODE XREF: sub_4049F8+7j retn sub_4049F8 endp ; --------------------------------------------------------------------------- align 4 ; [00000015 BYTES: COLLAPSED FUNCTION __SetExceptionHandler. PRESS KEYPAD "+" TO EXPAND] ; [0000002C BYTES: COLLAPSED FUNCTION __UnsetExceptionHandler. PRESS KEYPAD "+" TO EXPAND] ; --------------------------------------------------------------------------- __UnwindException: jmp RtlUnwind ; --------------------------------------------------------------------------- align 4 ; [00000006 BYTES: COLLAPSED FUNCTION jump(void). PRESS KEYPAD "+" TO EXPAND] ; [00000015 BYTES: COLLAPSED FUNCTION ___doGlobalUnwind. PRESS KEYPAD "+" TO EXPAND] ; [00000007 BYTES: COLLAPSED FUNCTION invokeHnd(void). PRESS KEYPAD "+" TO EXPAND] align 4 ; [0000003D BYTES: COLLAPSED FUNCTION ___access. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000075 BYTES: COLLAPSED FUNCTION ___close. PRESS KEYPAD "+" TO EXPAND] align 10h ; [00000098 BYTES: COLLAPSED FUNCTION ___eof. PRESS KEYPAD "+" TO EXPAND] ; [0000002D BYTES: COLLAPSED FUNCTION ___isatty. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000017 BYTES: COLLAPSED FUNCTION ___isatty_osfhandle. PRESS KEYPAD "+" TO EXPAND] align 10h ; [00000084 BYTES: COLLAPSED FUNCTION ___lseek. PRESS KEYPAD "+" TO EXPAND] ; [00000204 BYTES: COLLAPSED FUNCTION ___open. PRESS KEYPAD "+" TO EXPAND] ; [0000006B BYTES: COLLAPSED FUNCTION sub_404E98. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000146 BYTES: COLLAPSED FUNCTION ___read. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000132 BYTES: COLLAPSED FUNCTION ___write. PRESS KEYPAD "+" TO EXPAND] align 10h ; [00000011 BYTES: COLLAPSED FUNCTION unknown_libname_10. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000042 BYTES: COLLAPSED FUNCTION __flushall. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000046 BYTES: COLLAPSED FUNCTION __rtl_read. PRESS KEYPAD "+" TO EXPAND] align 10h ; [00000019 BYTES: COLLAPSED FUNCTION __read. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000046 BYTES: COLLAPSED FUNCTION __rtl_write. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000019 BYTES: COLLAPSED FUNCTION __write. PRESS KEYPAD "+" TO EXPAND] align 10h ; [00000005 BYTES: COLLAPSED FUNCTION j____access. PRESS KEYPAD "+" TO EXPAND] align 4 ; [0000007D BYTES: COLLAPSED FUNCTION __allocbuf. PRESS KEYPAD "+" TO EXPAND] align 4 ; [0000009F BYTES: COLLAPSED FUNCTION _fclose. PRESS KEYPAD "+" TO EXPAND] align 4 ; [0000008F BYTES: COLLAPSED FUNCTION _fflush. PRESS KEYPAD "+" TO EXPAND] align 4 ; [0000013B BYTES: COLLAPSED FUNCTION _fgets. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000064 BYTES: COLLAPSED FUNCTION __flushout. PRESS KEYPAD "+" TO EXPAND] ; [0000000D BYTES: COLLAPSED FUNCTION __initfmode. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000013 BYTES: COLLAPSED FUNCTION __initfileinfo. PRESS KEYPAD "+" TO EXPAND] align 4 ; [000000D9 BYTES: COLLAPSED FUNCTION sub_40561C. PRESS KEYPAD "+" TO EXPAND] align 4 ; [000000A9 BYTES: COLLAPSED FUNCTION ___openfp. PRESS KEYPAD "+" TO EXPAND] align 4 ; [0000002A BYTES: COLLAPSED FUNCTION ___getfp. PRESS KEYPAD "+" TO EXPAND] align 10h ; [00000033 BYTES: COLLAPSED FUNCTION _fopen. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000038 BYTES: COLLAPSED FUNCTION _fprintf. PRESS KEYPAD "+" TO EXPAND] ; [000000D9 BYTES: COLLAPSED FUNCTION ___fputn. PRESS KEYPAD "+" TO EXPAND] align 4 ; [0000005A BYTES: COLLAPSED FUNCTION sub_405918. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000073 BYTES: COLLAPSED FUNCTION _fseek. PRESS KEYPAD "+" TO EXPAND] align 4 ; [0000008C BYTES: COLLAPSED FUNCTION _ftell. PRESS KEYPAD "+" TO EXPAND] ; [0000000D BYTES: COLLAPSED FUNCTION __lock_all_handles. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000023 BYTES: COLLAPSED FUNCTION __cleanup_handle_locks. PRESS KEYPAD "+" TO EXPAND] align 4 ; [0000000D BYTES: COLLAPSED FUNCTION __unlock_all_handles. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000094 BYTES: COLLAPSED FUNCTION __lock_handle. PRESS KEYPAD "+" TO EXPAND] ; [00000045 BYTES: COLLAPSED FUNCTION __unlock_handle. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000040 BYTES: COLLAPSED FUNCTION __get_handle. PRESS KEYPAD "+" TO EXPAND] ; [00000068 BYTES: COLLAPSED FUNCTION __dup_handle. PRESS KEYPAD "+" TO EXPAND] ; [00000019 BYTES: COLLAPSED FUNCTION __free_handle. PRESS KEYPAD "+" TO EXPAND] align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_405C58 proc near ; DATA XREF: __init_handles:loc_405D27o var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp add esp, 0FFFFFFF8h mov eax, uNumber test eax, eax push esi mov esi, [ebp+arg_0] lea edx, uNumber[eax*4] jz short loc_405C7F loc_405C72: ; CODE XREF: sub_405C58+25j cmp dword ptr [edx], 0 jnz short loc_405C7F dec eax add edx, 0FFFFFFFCh test eax, eax jnz short loc_405C72 loc_405C7F: ; CODE XREF: sub_405C58+18j ; sub_405C58+1Dj test esi, esi jnz short loc_405C95 test eax, eax jnz short loc_405C8B xor eax, eax jmp short loc_405CED ; --------------------------------------------------------------------------- loc_405C8B: ; CODE XREF: sub_405C58+2Dj lea edx, [eax+eax*4] add edx, 4 mov eax, edx jmp short loc_405CED ; --------------------------------------------------------------------------- loc_405C95: ; CODE XREF: sub_405C58+29j mov [esi], eax xor ecx, ecx mov [ebp+var_4], ecx add esi, 4 mov [ebp+var_8], offset unk_40F048 cmp eax, [ebp+var_4] jle short loc_405CD9 loc_405CAB: ; CODE XREF: sub_405C58+7Fj mov cl, 1 mov edx, [ebp+var_8] mov edx, [edx] test dh, 8 jz short loc_405CBA or cl, 20h loc_405CBA: ; CODE XREF: sub_405C58+5Dj test dh, 80h jnz short loc_405CC2 or cl, 80h loc_405CC2: ; CODE XREF: sub_405C58+65j test dh, 20h jz short loc_405CCA or cl, 40h loc_405CCA: ; CODE XREF: sub_405C58+6Dj mov [esi], cl inc esi inc [ebp+var_4] add [ebp+var_8], 4 cmp eax, [ebp+var_4] jg short loc_405CAB loc_405CD9: ; CODE XREF: sub_405C58+51j shl eax, 2 push eax ; n push offset hObject ; src push esi ; dest call _memcpy add esp, 0Ch xor eax, eax loc_405CED: ; CODE XREF: sub_405C58+31j ; sub_405C58+3Bj pop esi pop ecx pop ecx pop ebp retn sub_405C58 endp ; --------------------------------------------------------------------------- align 4 ; [0000016B BYTES: COLLAPSED FUNCTION __init_handles. PRESS KEYPAD "+" TO EXPAND] align 10h ; [00000009 BYTES: COLLAPSED FUNCTION ___doserrno. PRESS KEYPAD "+" TO EXPAND] align 4 ; [0000004C BYTES: COLLAPSED FUNCTION ___IOerror. PRESS KEYPAD "+" TO EXPAND] ; --------------------------------------------------------------------------- ___DOSerror: push ebx call GetLastError mov ebx, eax and ebx, 0FFFFh mov eax, ebx and eax, 0FFFFh push eax call ___IOerror pop ecx mov eax, ebx pop ebx retn ; [00000012 BYTES: COLLAPSED FUNCTION ___NTerror. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000034 BYTES: COLLAPSED FUNCTION sub_405EEC. PRESS KEYPAD "+" TO EXPAND] ; [0000006C BYTES: COLLAPSED FUNCTION sub_405F20. PRESS KEYPAD "+" TO EXPAND] ; [00000016 BYTES: COLLAPSED FUNCTION unknown_libname_11. PRESS KEYPAD "+" TO EXPAND] align 4 ; [000000E6 BYTES: COLLAPSED FUNCTION unknown_libname_12. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000110 BYTES: COLLAPSED FUNCTION _fputc. PRESS KEYPAD "+" TO EXPAND] ; [00000058 BYTES: COLLAPSED FUNCTION ___mkname. PRESS KEYPAD "+" TO EXPAND] ; [00000041 BYTES: COLLAPSED FUNCTION ___tmpnam. PRESS KEYPAD "+" TO EXPAND] align 4 ; [0000003F BYTES: COLLAPSED FUNCTION _printf. PRESS KEYPAD "+" TO EXPAND] align 4 ; [0000002F BYTES: COLLAPSED FUNCTION _rewind. PRESS KEYPAD "+" TO EXPAND] align 4 ; [0000005F BYTES: COLLAPSED FUNCTION _setvbuf. PRESS KEYPAD "+" TO EXPAND] align 4 ; [000000C5 BYTES: COLLAPSED FUNCTION __init_streams. PRESS KEYPAD "+" TO EXPAND] align 10h ; [00000057 BYTES: COLLAPSED FUNCTION __exit_streams. PRESS KEYPAD "+" TO EXPAND] align 4 ; [0000000D BYTES: COLLAPSED FUNCTION __lock_all_streams. PRESS KEYPAD "+" TO EXPAND] align 4 ; [0000000D BYTES: COLLAPSED FUNCTION __unlock_all_streams. PRESS KEYPAD "+" TO EXPAND] align 4 ; [000000A4 BYTES: COLLAPSED FUNCTION __lock_stream. PRESS KEYPAD "+" TO EXPAND] ; [00000023 BYTES: COLLAPSED FUNCTION __cleanup_stream_locks. PRESS KEYPAD "+" TO EXPAND] align 10h ; [00000054 BYTES: COLLAPSED FUNCTION __unlock_stream. PRESS KEYPAD "+" TO EXPAND] ; [0000001A BYTES: COLLAPSED FUNCTION unknown_libname_13. PRESS KEYPAD "+" TO EXPAND] align 10h ; [00000038 BYTES: COLLAPSED FUNCTION _vfprintf. PRESS KEYPAD "+" TO EXPAND] ; [00000045 BYTES: COLLAPSED FUNCTION sub_4065B8. PRESS KEYPAD "+" TO EXPAND] align 10h ; [00000034 BYTES: COLLAPSED FUNCTION sub_406600. PRESS KEYPAD "+" TO EXPAND] ; [00000034 BYTES: COLLAPSED FUNCTION sub_406634. PRESS KEYPAD "+" TO EXPAND] ; [0000094E BYTES: COLLAPSED FUNCTION ___vprinter. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000038 BYTES: COLLAPSED FUNCTION __xfclose. PRESS KEYPAD "+" TO EXPAND] ; [00000031 BYTES: COLLAPSED FUNCTION __xfflush. PRESS KEYPAD "+" TO EXPAND] align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_407024 proc near ; CODE XREF: unknown_libname_11+Ep arg_0 = dword ptr 8 push ebp mov ebp, esp push ebx push esi mov ebx, [ebp+arg_0] push ebx call __lock_stream pop ecx push ebx call unknown_libname_12 ; BCC v4.x/5.x & BCB v1.0/v7.0 BDS2006 win32 runtime pop ecx mov esi, eax push ebx call __unlock_stream pop ecx mov eax, esi pop esi pop ebx pop ebp retn sub_407024 endp ; --------------------------------------------------------------------------- align 4 ; [00000051 BYTES: COLLAPSED FUNCTION __getLocaleNumericInfo. PRESS KEYPAD "+" TO EXPAND] align 10h ; [00000016 BYTES: COLLAPSED FUNCTION _isalnum. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000012 BYTES: COLLAPSED FUNCTION _isascii. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000016 BYTES: COLLAPSED FUNCTION _isalpha. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000013 BYTES: COLLAPSED FUNCTION _iscntrl. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000013 BYTES: COLLAPSED FUNCTION _isdigit. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000016 BYTES: COLLAPSED FUNCTION _isgraph. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000013 BYTES: COLLAPSED FUNCTION _islower. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000016 BYTES: COLLAPSED FUNCTION _isprint. PRESS KEYPAD "+" TO EXPAND] align 10h ; [00000013 BYTES: COLLAPSED FUNCTION _ispunct. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000013 BYTES: COLLAPSED FUNCTION _isspace. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000013 BYTES: COLLAPSED FUNCTION _isupper. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000016 BYTES: COLLAPSED FUNCTION _isxdigit. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000017 BYTES: COLLAPSED FUNCTION _iswalnum. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000014 BYTES: COLLAPSED FUNCTION _iswascii. PRESS KEYPAD "+" TO EXPAND] ; [00000017 BYTES: COLLAPSED FUNCTION _iswalpha. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000014 BYTES: COLLAPSED FUNCTION _iswcntrl. PRESS KEYPAD "+" TO EXPAND] ; [00000014 BYTES: COLLAPSED FUNCTION _iswdigit. PRESS KEYPAD "+" TO EXPAND] ; [00000017 BYTES: COLLAPSED FUNCTION _iswgraph. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000014 BYTES: COLLAPSED FUNCTION _iswlower. PRESS KEYPAD "+" TO EXPAND] ; [00000017 BYTES: COLLAPSED FUNCTION _iswprint. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000014 BYTES: COLLAPSED FUNCTION _iswpunct. PRESS KEYPAD "+" TO EXPAND] ; [00000014 BYTES: COLLAPSED FUNCTION _iswspace. PRESS KEYPAD "+" TO EXPAND] ; [00000014 BYTES: COLLAPSED FUNCTION _iswupper. PRESS KEYPAD "+" TO EXPAND] ; [00000017 BYTES: COLLAPSED FUNCTION _iswxdigit. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000043 BYTES: COLLAPSED FUNCTION ___isctype. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000055 BYTES: COLLAPSED FUNCTION ___iswctype. PRESS KEYPAD "+" TO EXPAND] align 4 ; [0000007A BYTES: COLLAPSED FUNCTION _mblen. PRESS KEYPAD "+" TO EXPAND] align 10h ; [000000D1 BYTES: COLLAPSED FUNCTION _mbtowc. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000071 BYTES: COLLAPSED FUNCTION _wctomb. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000129 BYTES: COLLAPSED FUNCTION _mbstowcs. PRESS KEYPAD "+" TO EXPAND] align 4 push ebp mov ebp, esp push ebx mov ecx, [ebp+0Ch] mov ebx, [ebp+8] lea edx, [ecx+1] mov eax, ebx jmp short loc_407648 ; --------------------------------------------------------------------------- loc_407645: ; CODE XREF: .text:0040764Fj add eax, 2 loc_407648: ; CODE XREF: .text:00407643j dec edx jz short loc_407651 cmp word ptr [eax], 0 jnz short loc_407645 loc_407651: ; CODE XREF: .text:00407649j test edx, edx jz short loc_407668 cmp word ptr [eax], 0 jnz short loc_407668 sub eax, ebx sar eax, 1 jns short loc_407664 adc eax, 0 loc_407664: ; CODE XREF: .text:0040765Fj inc eax pop ebx pop ebp retn ; --------------------------------------------------------------------------- loc_407668: ; CODE XREF: .text:00407653j ; .text:00407659j mov eax, ecx pop ebx pop ebp retn ; --------------------------------------------------------------------------- align 10h ; [000001A4 BYTES: COLLAPSED FUNCTION _wcstombs. PRESS KEYPAD "+" TO EXPAND] ; --------------------------------------------------------------------------- __llmul: push edx push eax mov eax, [esp+10h] mul dword ptr [esp] mov ecx, eax mov eax, [esp+4] mul dword ptr [esp+0Ch] add ecx, eax mov eax, [esp] mul dword ptr [esp+0Ch] add edx, ecx pop ecx pop ecx retn 8 ; --------------------------------------------------------------------------- __lldiv: push ebp push ebx push esi push edi xor edi, edi mov ebx, [esp+14h] mov ecx, [esp+18h] or ecx, ecx jnz short loc_407851 or edx, edx jz short loc_4078A9 or ebx, ebx jz short loc_4078A9 loc_407851: ; CODE XREF: .text:00407847j or edx, edx jns short loc_40785F neg edx neg eax sbb edx, 0 or edi, 1 loc_40785F: ; CODE XREF: .text:00407853j or ecx, ecx jns short loc_40786D neg ecx neg ebx sbb ecx, 0 xor edi, 1 loc_40786D: ; CODE XREF: .text:00407861j mov ebp, ecx mov ecx, 40h push edi xor edi, edi xor esi, esi loc_407879: ; CODE XREF: .text:loc_407890j shl eax, 1 rcl edx, 1 rcl esi, 1 rcl edi, 1 cmp edi, ebp jb short loc_407890 ja short loc_40788B cmp esi, ebx jb short loc_407890 loc_40788B: ; CODE XREF: .text:00407885j sub esi, ebx sbb edi, ebp inc eax loc_407890: ; CODE XREF: .text:00407883j ; .text:00407889j loop loc_407879 pop ebx test ebx, 1 jz short loc_4078A2 neg edx neg eax sbb edx, 0 loc_4078A2: ; CODE XREF: .text:00407899j ; .text:004078ADj pop edi pop esi pop ebx pop ebp retn 8 ; --------------------------------------------------------------------------- loc_4078A9: ; CODE XREF: .text:0040784Bj ; .text:0040784Fj div ebx xor edx, edx jmp short loc_4078A2 ; [00000049 BYTES: COLLAPSED FUNCTION __lludiv. PRESS KEYPAD "+" TO EXPAND] ; --------------------------------------------------------------------------- __llmod: push ebp push ebx push esi push edi xor edi, edi mov ebx, [esp+14h] mov ecx, [esp+18h] or ecx, ecx jnz short loc_407912 or edx, edx jz short loc_40796B or ebx, ebx jz short loc_40796B loc_407912: ; CODE XREF: .text:00407908j or edx, edx jns short loc_407920 neg edx neg eax sbb edx, 0 or edi, 1 loc_407920: ; CODE XREF: .text:00407914j or ecx, ecx jns short loc_40792B neg ecx neg ebx sbb ecx, 0 loc_40792B: ; CODE XREF: .text:00407922j mov ebp, ecx mov ecx, 40h push edi xor edi, edi xor esi, esi loc_407937: ; CODE XREF: .text:loc_40794Ej shl eax, 1 rcl edx, 1 rcl esi, 1 rcl edi, 1 cmp edi, ebp jb short loc_40794E ja short loc_407949 cmp esi, ebx jb short loc_40794E loc_407949: ; CODE XREF: .text:00407943j sub esi, ebx sbb edi, ebp inc eax loc_40794E: ; CODE XREF: .text:00407941j ; .text:00407947j loop loc_407937 mov eax, esi mov edx, edi pop ebx test ebx, 1 jz short loc_407964 neg edx neg eax sbb edx, 0 loc_407964: ; CODE XREF: .text:0040795Bj ; .text:00407970j pop edi pop esi pop ebx pop ebp retn 8 ; --------------------------------------------------------------------------- loc_40796B: ; CODE XREF: .text:0040790Cj ; .text:00407910j div ebx xchg eax, edx xor edx, edx jmp short loc_407964 ; [0000004E BYTES: COLLAPSED FUNCTION __llumod. PRESS KEYPAD "+" TO EXPAND] ; --------------------------------------------------------------------------- __llshl: cmp cl, 20h jl short loc_4079D6 cmp cl, 40h jl short loc_4079CF xor edx, edx xor eax, eax retn ; --------------------------------------------------------------------------- loc_4079CF: ; CODE XREF: .text:004079C8j mov edx, eax shl edx, cl xor eax, eax retn ; --------------------------------------------------------------------------- loc_4079D6: ; CODE XREF: .text:004079C3j shld edx, eax, cl shl eax, cl retn ; --------------------------------------------------------------------------- __llshr: cmp cl, 20h jl short loc_4079F2 cmp cl, 40h jl short loc_4079EC sar edx, 1Fh mov eax, edx retn ; --------------------------------------------------------------------------- loc_4079EC: ; CODE XREF: .text:004079E4j mov eax, edx cdq sar eax, cl retn ; --------------------------------------------------------------------------- loc_4079F2: ; CODE XREF: .text:004079DFj shrd eax, edx, cl sar edx, cl retn ; --------------------------------------------------------------------------- __llushr: cmp cl, 20h jl short loc_407A0E cmp cl, 40h jl short loc_407A07 xor edx, edx xor eax, eax retn ; --------------------------------------------------------------------------- loc_407A07: ; CODE XREF: .text:00407A00j mov eax, edx xor edx, edx shr eax, cl retn ; --------------------------------------------------------------------------- loc_407A0E: ; CODE XREF: .text:004079FBj shrd eax, edx, cl shr edx, cl retn ; [0000016C BYTES: COLLAPSED FUNCTION __pow10. PRESS KEYPAD "+" TO EXPAND] tbyte_407B80 dt 0.0 ; DATA XREF: __pow10+12r align 4 tbyte_407B8C dt 1.0 ; DATA XREF: __pow10+35r align 4 flt_407B98 dd 1.0 ; DATA XREF: __pow10+15Cr ; [00000067 BYTES: COLLAPSED FUNCTION _atol. PRESS KEYPAD "+" TO EXPAND] align 4 ; [0000000F BYTES: COLLAPSED FUNCTION _atoi. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000013 BYTES: COLLAPSED FUNCTION __clear87. PRESS KEYPAD "+" TO EXPAND] align 4 ; [0000002F BYTES: COLLAPSED FUNCTION __control87. PRESS KEYPAD "+" TO EXPAND] align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_407C58 proc near ; CODE XREF: ___vprinter+66Ap jmp off_40FD34 sub_407C58 endp ; =============== S U B R O U T I N E ======================================= sub_407C5E proc near ; CODE XREF: ___vprinter+67Fp jmp off_40FD38 ; --------------------------------------------------------------------------- jmp off_40FD3C ; BCC v4.x/5.x & BCB v1.0/v7.0 BDS2006 win32 runtime ; --------------------------------------------------------------------------- jmp off_40FD40 ; BCC v4.x/5.x & BCB v1.0/v7.0 BDS2006 win32 runtime ; --------------------------------------------------------------------------- loc_407C70: ; CODE XREF: sub_407C58j sub_407C5Ej ; DATA XREF: ... push offset aPrintfFloating ; "printf : floating point formats not lin"... call __ErrorExit sub_407C5E endp ; --------------------------------------------------------------------------- db 59h ; Y db 0C3h ; Ã ; [0000000A BYTES: COLLAPSED FUNCTION unknown_libname_14. PRESS KEYPAD "+" TO EXPAND] db 59h ; Y db 0C3h ; Ã ; =============== S U B R O U T I N E ======================================= ; Attributes: noreturn sub_407C88 proc near ; DATA XREF: .data:off_40FD9Co ; .data:off_40FDA0o push offset aPrintfFloati_0 ; "printf : floating point formats not lin"... call __ErrorExit sub_407C88 endp ; --------------------------------------------------------------------------- db 59h ; Y db 0C3h ; Ã ; =============== S U B R O U T I N E ======================================= ; Attributes: noreturn sub_407C94 proc near ; DATA XREF: .data:off_40FDA4o ; .data:off_40FDA8o push offset aScanfFloatin_0 ; "scanf : floating point formats not link"... call __ErrorExit sub_407C94 endp ; --------------------------------------------------------------------------- db 59h ; Y db 0C3h ; Ã ; [00000016 BYTES: COLLAPSED FUNCTION __fpreset. PRESS KEYPAD "+" TO EXPAND] align 4 ; [0000002D BYTES: COLLAPSED FUNCTION __fuildq. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000021 BYTES: COLLAPSED FUNCTION __fuistq. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000011 BYTES: COLLAPSED FUNCTION __fxam. PRESS KEYPAD "+" TO EXPAND] align 10h ; [000000B1 BYTES: COLLAPSED FUNCTION ___int64toa. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000118 BYTES: COLLAPSED FUNCTION ___ldtrunc. PRESS KEYPAD "+" TO EXPAND] ; [00000071 BYTES: COLLAPSED FUNCTION ___longtoa. PRESS KEYPAD "+" TO EXPAND] align 10h ; [0000001B BYTES: COLLAPSED FUNCTION ___utoa. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000030 BYTES: COLLAPSED FUNCTION unknown_libname_15. PRESS KEYPAD "+" TO EXPAND] ; [0000001D BYTES: COLLAPSED FUNCTION unknown_libname_16. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000025 BYTES: COLLAPSED FUNCTION unknown_libname_17. PRESS KEYPAD "+" TO EXPAND] align 4 ; [0000002A BYTES: COLLAPSED FUNCTION __matherr. PRESS KEYPAD "+" TO EXPAND] align 10h ; [0000002E BYTES: COLLAPSED FUNCTION __matherrl. PRESS KEYPAD "+" TO EXPAND] align 10h ; [00000016 BYTES: COLLAPSED FUNCTION __initmatherr. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000025 BYTES: COLLAPSED FUNCTION __qdiv10. PRESS KEYPAD "+" TO EXPAND] align 10h ; [0000002E BYTES: COLLAPSED FUNCTION __qmul10. PRESS KEYPAD "+" TO EXPAND] align 10h ; [00000041 BYTES: COLLAPSED FUNCTION sub_4080C0. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000285 BYTES: COLLAPSED FUNCTION sub_408104. PRESS KEYPAD "+" TO EXPAND] align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40838C proc near ; DATA XREF: .text:004083AEo arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp cmp [ebp+arg_4], 0 mov eax, [ebp+arg_0] jz short loc_40839D add eax, 0Ch jmp short loc_4083A0 ; --------------------------------------------------------------------------- loc_40839D: ; CODE XREF: sub_40838C+Aj add eax, 8 loc_4083A0: ; CODE XREF: sub_40838C+Fj pop ebp retn sub_40838C endp ; --------------------------------------------------------------------------- align 4 __cvt_init: ; DATA XREF: .text:0040103Eo mov off_40FD34, offset sub_408104 mov off_40FD38, offset sub_40838C retn ; --------------------------------------------------------------------------- align 4 ; [0000004A BYTES: COLLAPSED FUNCTION sub_4083BC. PRESS KEYPAD "+" TO EXPAND] align 4 ; [000002B7 BYTES: COLLAPSED FUNCTION sub_408408. PRESS KEYPAD "+" TO EXPAND] align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_4086C0 proc near ; DATA XREF: .text:004086E2o arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp cmp [ebp+arg_4], 0 mov eax, [ebp+arg_0] jz short loc_4086D1 add eax, 0Ch jmp short loc_4086D4 ; --------------------------------------------------------------------------- loc_4086D1: ; CODE XREF: sub_4086C0+Aj add eax, 8 loc_4086D4: ; CODE XREF: sub_4086C0+Fj pop ebp retn sub_4086C0 endp ; --------------------------------------------------------------------------- align 4 __cvt_initw: ; DATA XREF: .text:0040104Ao mov off_40FD9C, offset sub_408408 mov off_40FDA0, offset sub_4086C0 retn ; --------------------------------------------------------------------------- align 10h ; [00000449 BYTES: COLLAPSED FUNCTION sub_4086F0. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000080 BYTES: COLLAPSED FUNCTION sub_408B3C. PRESS KEYPAD "+" TO EXPAND] ; --------------------------------------------------------------------------- loc_408BBC: ; DATA XREF: .text:00401044o mov off_40FD3C, offset sub_4086F0 mov off_40FD40, offset sub_408B3C retn ; --------------------------------------------------------------------------- align 4 ; [00000446 BYTES: COLLAPSED FUNCTION sub_408BD4. PRESS KEYPAD "+" TO EXPAND] align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_40901C proc near ; DATA XREF: .text:004090A6o var_8 = dword ptr -8 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp add esp, 0FFFFFFF8h push ebx push esi mov eax, [ebp+arg_8] mov esi, [ebp+arg_4] mov ebx, [ebp+arg_0] test al, 4 jz short loc_409056 push dword_40FE10 ; int push dword_40FE0C ; int mov dx, [ebx+8] push edx push dword ptr [ebx+4] push dword ptr [ebx] ; long double push 1 ; int call ___ldtrunc add esp, 18h fstp qword ptr [esi] wait jmp short loc_409096 ; --------------------------------------------------------------------------- loc_409056: ; CODE XREF: sub_40901C+13j test al, 8 jz short loc_40906E mov ecx, [ebx] mov [esi], ecx mov ecx, [ebx+4] mov [esi+4], ecx mov cx, [ebx+8] mov [esi+8], cx jmp short loc_409096 ; --------------------------------------------------------------------------- loc_40906E: ; CODE XREF: sub_40901C+3Cj mov eax, offset stru_40FEF8 fld tbyte ptr [eax] fstp qword ptr [ebp+var_8] wait push [ebp+var_8+4] ; int push [ebp+var_8] ; int mov cx, [ebx+8] push ecx push dword ptr [ebx+4] push dword ptr [ebx] ; long double push 0 ; int call ___ldtrunc add esp, 18h fstp dword ptr [esi] wait loc_409096: ; CODE XREF: sub_40901C+38j ; sub_40901C+50j pop esi pop ebx pop ecx pop ecx pop ebp retn sub_40901C endp ; --------------------------------------------------------------------------- __scan_initw: ; DATA XREF: .text:00401050o mov off_40FDA4, offset sub_408BD4 mov off_40FDA8, offset sub_40901C retn ; --------------------------------------------------------------------------- align 4 ; [000002D2 BYTES: COLLAPSED FUNCTION ___xcvt. PRESS KEYPAD "+" TO EXPAND] align 4 ; [000002F1 BYTES: COLLAPSED FUNCTION ___xcvtw. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000121 BYTES: COLLAPSED FUNCTION __setmbcp. PRESS KEYPAD "+" TO EXPAND] align 10h ; [00000006 BYTES: COLLAPSED FUNCTION __getmbcp. PRESS KEYPAD "+" TO EXPAND] align 4 __initMBCSTable: ; DATA XREF: .text:00401056o call GetACP push eax call __setmbcp pop ecx retn ; --------------------------------------------------------------------------- align 4 ; [0000001A BYTES: COLLAPSED FUNCTION __ismbcspace. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000056 BYTES: COLLAPSED FUNCTION __mbsrchr. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000045 BYTES: COLLAPSED FUNCTION sub_40982C. PRESS KEYPAD "+" TO EXPAND] align 4 ; [0000005C BYTES: COLLAPSED FUNCTION __assert. PRESS KEYPAD "+" TO EXPAND] ; --------------------------------------------------------------------------- pop ebp retn ; --------------------------------------------------------------------------- align 4 ; [0000004E BYTES: COLLAPSED FUNCTION sub_4098D4. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000068 BYTES: COLLAPSED FUNCTION __ErrorMessageHelper. PRESS KEYPAD "+" TO EXPAND] ; [0000001E BYTES: COLLAPSED FUNCTION ___errno. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000012 BYTES: COLLAPSED FUNCTION Corbaobj::TCorbaImplementation::GetTypeInfoCount(int &). PRESS KEYPAD "+" TO EXPAND] align 10h ; [00000044 BYTES: COLLAPSED FUNCTION sub_4099C0. PRESS KEYPAD "+" TO EXPAND] ; [0000011B BYTES: COLLAPSED FUNCTION __ErrorMessage. PRESS KEYPAD "+" TO EXPAND] align 10h ; [0000000F BYTES: COLLAPSED FUNCTION ___ErrorMessage. PRESS KEYPAD "+" TO EXPAND] align 10h ; [00000014 BYTES: COLLAPSED FUNCTION __ErrorExit. PRESS KEYPAD "+" TO EXPAND] ; --------------------------------------------------------------------------- pop ecx pop ebp retn ; --------------------------------------------------------------------------- align 4 ; [00000089 BYTES: COLLAPSED FUNCTION unknown_libname_18. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000012 BYTES: COLLAPSED FUNCTION __abort. PRESS KEYPAD "+" TO EXPAND] ; --------------------------------------------------------------------------- pop ecx retn ; [0000000D BYTES: COLLAPSED FUNCTION _abort. PRESS KEYPAD "+" TO EXPAND] ; --------------------------------------------------------------------------- retn ; --------------------------------------------------------------------------- align 4 ; [00000001 BYTES: COLLAPSED FUNCTION nullsub_4. PRESS KEYPAD "+" TO EXPAND] align 4 ; [0000006A BYTES: COLLAPSED FUNCTION sub_409BFC. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000015 BYTES: COLLAPSED FUNCTION _exit. PRESS KEYPAD "+" TO EXPAND] align 10h ; [00000015 BYTES: COLLAPSED FUNCTION __exit. PRESS KEYPAD "+" TO EXPAND] align 4 ; [0000000F BYTES: COLLAPSED FUNCTION __cexit. PRESS KEYPAD "+" TO EXPAND] align 4 ; [0000000F BYTES: COLLAPSED FUNCTION __c_exit. PRESS KEYPAD "+" TO EXPAND] align 4 ; [0000001A BYTES: COLLAPSED FUNCTION __init_wild_handlers. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000011 BYTES: COLLAPSED FUNCTION __argv_default_expand. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000011 BYTES: COLLAPSED FUNCTION __argv_default_expand_0. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000027 BYTES: COLLAPSED FUNCTION __init_setargv_handlers. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000088 BYTES: COLLAPSED FUNCTION __setargv. PRESS KEYPAD "+" TO EXPAND] ; [00000031 BYTES: COLLAPSED FUNCTION __exitargv. PRESS KEYPAD "+" TO EXPAND] align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_409DE0(char *s, int) sub_409DE0 proc near ; CODE XREF: __setargv+50p ; DATA XREF: __setargv+33o s = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ebx push esi push edi mov esi, [ebp+s] mov eax, dword_411378 cmp eax, dword_411344 jnz short loc_409E2A add dword_411344, 10h mov edx, dword_411344 shl edx, 2 push edx ; size mov ecx, dword_411340 push ecx ; block call _realloc add esp, 8 mov dword_411340, eax test eax, eax jnz short loc_409E2A push offset aNoSpaceForComm ; "No space for command line argument vect"... call __ErrorExit ; --------------------------------------------------------------------------- db 59h ; Y ; --------------------------------------------------------------------------- loc_409E2A: ; CODE XREF: sub_409DE0+14j ; sub_409DE0+3Dj cmp [ebp+arg_4], 0 jz short loc_409E75 push esi ; s call _strlen pop ecx inc eax push eax ; size call _malloc pop ecx mov ebx, eax test eax, eax jnz short loc_409E50 push offset aNoSpaceForCo_0 ; "No space for command line argument" call __ErrorExit ; --------------------------------------------------------------------------- db 59h ; Y ; --------------------------------------------------------------------------- loc_409E50: ; CODE XREF: sub_409DE0+63j xor eax, eax push esi mov edi, esi or ecx, 0FFFFFFFFh repne scasb not ecx sub edi, ecx mov esi, ebx xchg esi, edi mov edx, ecx mov eax, edi shr ecx, 2 rep movsd mov ecx, edx and ecx, 3 rep movsb pop esi jmp short loc_409E77 ; --------------------------------------------------------------------------- loc_409E75: ; CODE XREF: sub_409DE0+4Ej mov ebx, esi loc_409E77: ; CODE XREF: sub_409DE0+93j mov eax, dword_411340 mov edx, dword_411378 mov [eax+edx*4], ebx inc dword_411378 pop edi pop esi pop ebx pop ebp retn sub_409DE0 endp ; [00000158 BYTES: COLLAPSED FUNCTION __handle_setargv. PRESS KEYPAD "+" TO EXPAND] ; [00000019 BYTES: COLLAPSED FUNCTION __handle_exitargv. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000071 BYTES: COLLAPSED FUNCTION sub_40A004. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000193 BYTES: COLLAPSED FUNCTION __handle_wsetargv. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000019 BYTES: COLLAPSED FUNCTION __handle_wexitargv. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000077 BYTES: COLLAPSED FUNCTION sub_40A228. PRESS KEYPAD "+" TO EXPAND] align 10h ; [00000037 BYTES: COLLAPSED FUNCTION unknown_libname_19. PRESS KEYPAD "+" TO EXPAND] align 4 loc_40A2D8: ; DATA XREF: .text:004010C8o mov eax, lpFilename push eax call _free pop ecx retn ; --------------------------------------------------------------------------- align 4 __lock_env: mov eax, dword_411360 push eax call __lock_nt pop ecx retn ; --------------------------------------------------------------------------- align 4 __unlock_env: mov eax, dword_411360 push eax call __unlock_nt pop ecx retn ; --------------------------------------------------------------------------- align 4 loc_40A308: ; DATA XREF: .text:004010CEo mov eax, dword_411358 test eax, eax jz short loc_40A318 push eax call _free pop ecx loc_40A318: ; CODE XREF: .text:0040A30Fj mov eax, dword_411354 test eax, eax jz short loc_40A328 push eax call _free pop ecx loc_40A328: ; CODE XREF: .text:0040A31Fj xor edx, edx xor ecx, ecx mov dword_411358, edx mov dword_411354, ecx retn ; --------------------------------------------------------------------------- align 4 ; [0000014A BYTES: COLLAPSED FUNCTION __expandblock. PRESS KEYPAD "+" TO EXPAND] align 4 loc_40A488: ; DATA XREF: .text:0040106Eo call __expandblock test eax, eax jnz short loc_40A49D push offset aCouldNotAlloca ; "Could not allocate memory for environme"... call __ErrorExit ; --------------------------------------------------------------------------- db 59h ; Y db 0C3h ; Ã ; --------------------------------------------------------------------------- loc_40A49D: ; CODE XREF: .text:0040A48Fj mov eax, dword_411354 mov dword_41136C, eax push offset aCreatingEnviro ; "creating environment lock" push offset dword_411360 call __create_lock add esp, 8 retn ; --------------------------------------------------------------------------- align 4 ; [0000001F BYTES: COLLAPSED FUNCTION sub_40A4BC. PRESS KEYPAD "+" TO EXPAND] align 4 ; [000001F5 BYTES: COLLAPSED FUNCTION sub_40A4DC. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000025 BYTES: COLLAPSED FUNCTION HandlerRoutine. PRESS KEYPAD "+" TO EXPAND] align 4 ; [000000B3 BYTES: COLLAPSED FUNCTION _signal. PRESS KEYPAD "+" TO EXPAND] align 10h ; [00000094 BYTES: COLLAPSED FUNCTION _raise. PRESS KEYPAD "+" TO EXPAND] ; [0000000C BYTES: COLLAPSED FUNCTION __terminate. PRESS KEYPAD "+" TO EXPAND] ; --------------------------------------------------------------------------- pop ebp retn ; --------------------------------------------------------------------------- align 4 ; [00000003 BYTES: COLLAPSED FUNCTION __create_shmem. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000003 BYTES: COLLAPSED FUNCTION sub_40A858. PRESS KEYPAD "+" TO EXPAND] align 4 ; [000000D2 BYTES: COLLAPSED FUNCTION __init_exit_proc. PRESS KEYPAD "+" TO EXPAND] align 10h ; [0000006B BYTES: COLLAPSED FUNCTION __cleanup. PRESS KEYPAD "+" TO EXPAND] align 4 ; [0000000D BYTES: COLLAPSED FUNCTION __lock_exit. PRESS KEYPAD "+" TO EXPAND] align 4 ; [0000000D BYTES: COLLAPSED FUNCTION __unlock_exit. PRESS KEYPAD "+" TO EXPAND] align 4 loc_40A9BC: ; DATA XREF: .text:00401074o push offset aCreatingAtexit ; "creating atexit lock" push offset dword_411390 call __create_lock add esp, 8 retn ; --------------------------------------------------------------------------- align 10h ; [0000017B BYTES: COLLAPSED FUNCTION __startup. PRESS KEYPAD "+" TO EXPAND] ; --------------------------------------------------------------------------- pop ecx ; [00000007 BYTES: COLLAPSED CHUNK OF FUNCTION __startup. PRESS KEYPAD "+" TO EXPAND] align 4 ; =============== S U B R O U T I N E ======================================= sub_40AB54 proc near ; CODE XREF: __startup+13Bp var_18 = byte ptr -18h var_14 = word ptr -14h add esp, 0FFFFFFBCh push esp ; lpStartupInfo call GetStartupInfoA test [esp+44h+var_18], 1 jz short loc_40AB6B movzx eax, [esp+44h+var_14] jmp short loc_40AB70 ; --------------------------------------------------------------------------- loc_40AB6B: ; CODE XREF: sub_40AB54+Ej mov eax, 0Ah loc_40AB70: ; CODE XREF: sub_40AB54+15j add esp, 44h retn sub_40AB54 endp ; --------------------------------------------------------------------------- ___GetTlsIndex: ; Sysinit::__linkproc__ GetTls(void) call @Sysinit@@GetTls$qqrv ; [00000007 BYTES: COLLAPSED FUNCTION Controls::TControl::GetFloatingDockSiteClass(void). PRESS KEYPAD "+" TO EXPAND] ; --------------------------------------------------------------------------- ___GetStkIndex: ; Sysinit::__linkproc__ GetTls(void) call @Sysinit@@GetTls$qqrv ; [00000007 BYTES: COLLAPSED FUNCTION Modelprimitives::TBasicView::GetShade(void). PRESS KEYPAD "+" TO EXPAND] ; [0000004F BYTES: COLLAPSED FUNCTION __init_tls. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000006 BYTES: COLLAPSED FUNCTION ___CRTL_TLS_Alloc. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000010 BYTES: COLLAPSED FUNCTION ___CRTL_TLS_Free. PRESS KEYPAD "+" TO EXPAND] ; [00000010 BYTES: COLLAPSED FUNCTION ___CRTL_TLS_GetValue. PRESS KEYPAD "+" TO EXPAND] ; [00000014 BYTES: COLLAPSED FUNCTION ___CRTL_TLS_SetValue. PRESS KEYPAD "+" TO EXPAND] ; [00000007 BYTES: COLLAPSED FUNCTION ___CRTL_TLS_InitThread. PRESS KEYPAD "+" TO EXPAND] align 10h ; [00000007 BYTES: COLLAPSED FUNCTION ___CRTL_TLS_ExitThread. PRESS KEYPAD "+" TO EXPAND] align 4 ___CRTL_TLS_GetInfo: xor eax, eax retn ; --------------------------------------------------------------------------- align 4 ; [0000003B BYTES: COLLAPSED FUNCTION __thread_buf. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000026 BYTES: COLLAPSED FUNCTION __thread_data. PRESS KEYPAD "+" TO EXPAND] align 10h ; [000000A5 BYTES: COLLAPSED FUNCTION __thread_data_new. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000031 BYTES: COLLAPSED FUNCTION __thread_data_del. PRESS KEYPAD "+" TO EXPAND] align 4 loc_40AD6C: ; DATA XREF: .text:00401080o push offset aCreatingThread ; "creating thread data lock" push offset dword_4113AC call __create_lock add esp, 8 retn ; --------------------------------------------------------------------------- align 10h ; [000000AF BYTES: COLLAPSED FUNCTION sub_40AD80. PRESS KEYPAD "+" TO EXPAND] align 10h ; [00000064 BYTES: COLLAPSED FUNCTION __create_lock. PRESS KEYPAD "+" TO EXPAND] ; [0000000E BYTES: COLLAPSED FUNCTION __lock_nt. PRESS KEYPAD "+" TO EXPAND] align 4 ; [0000000E BYTES: COLLAPSED FUNCTION __unlock_nt. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000033 BYTES: COLLAPSED FUNCTION __lock_error. PRESS KEYPAD "+" TO EXPAND] db 59h ; Y db 5Fh ; _ db 5Eh ; ^ db 8Bh ; ‹ db 0E5h ; å db 5Dh ; ] db 0C3h ; Ã align 10h loc_40AEF0: ; DATA XREF: .text:00401086o push offset CriticalSection call InitializeCriticalSection mov dword_4143B0, 1 retn ; --------------------------------------------------------------------------- align 4 loc_40AF08: ; DATA XREF: .text:0040108Co push offset a___cppdebugh_0 ; "___CPPdebugHook" push 0 call GetModuleHandleA push eax call GetProcAddress mov dword_4143B8, eax cmp dword_4143B8, 0 jnz short locret_40AF32 mov dword_4143B8, offset ___CPPdebugHook locret_40AF32: ; CODE XREF: .text:0040AF26j retn ; [00000006 BYTES: COLLAPSED FUNCTION ___JumpToCatch__. PRESS KEYPAD "+" TO EXPAND] ; --------------------------------------------------------------------------- retn ; [0000004A BYTES: COLLAPSED FUNCTION sub_40AF3A. PRESS KEYPAD "+" TO EXPAND] ; [0000002D BYTES: COLLAPSED FUNCTION sub_40AF84. PRESS KEYPAD "+" TO EXPAND] ; [000000C6 BYTES: COLLAPSED FUNCTION sub_40AFB1. PRESS KEYPAD "+" TO EXPAND] ; [0000010E BYTES: COLLAPSED FUNCTION sub_40B077. PRESS KEYPAD "+" TO EXPAND] ; [00000018 BYTES: COLLAPSED FUNCTION sub_40B185. PRESS KEYPAD "+" TO EXPAND] ; [0000001D BYTES: COLLAPSED FUNCTION ___raiseDebuggerException. PRESS KEYPAD "+" TO EXPAND] ; [000000D0 BYTES: COLLAPSED FUNCTION sub_40B1BA. PRESS KEYPAD "+" TO EXPAND] ; [0000007E BYTES: COLLAPSED FUNCTION sub_40B28A. PRESS KEYPAD "+" TO EXPAND] ; [00000250 BYTES: COLLAPSED FUNCTION sub_40B308. PRESS KEYPAD "+" TO EXPAND] ; [00000035 BYTES: COLLAPSED FUNCTION _ThrowExceptionLDTC(void *,void *,void *,void *,uint,uint,uint,uchar *,void *). PRESS KEYPAD "+" TO EXPAND] ; [0000006B BYTES: COLLAPSED FUNCTION _ReThrowException(uint,uchar *). PRESS KEYPAD "+" TO EXPAND] ; [0000003F BYTES: COLLAPSED FUNCTION __Global_unwind. PRESS KEYPAD "+" TO EXPAND] ; [00000075 BYTES: COLLAPSED FUNCTION sub_40B637. PRESS KEYPAD "+" TO EXPAND] ; [00000088 BYTES: COLLAPSED FUNCTION sub_40B6AC. PRESS KEYPAD "+" TO EXPAND] ; [000000EA BYTES: COLLAPSED FUNCTION _CatchCleanup(void). PRESS KEYPAD "+" TO EXPAND] ; --------------------------------------------------------------------------- pop edi pop esi pop ebx mov esp, ebp pop ebp retn ; [000002D4 BYTES: COLLAPSED FUNCTION sub_40B825. PRESS KEYPAD "+" TO EXPAND] ; [0000016B BYTES: COLLAPSED FUNCTION sub_40BAF9. PRESS KEYPAD "+" TO EXPAND] ; [00000013 BYTES: COLLAPSED FUNCTION __Local_unwind. PRESS KEYPAD "+" TO EXPAND] ; [0000001C BYTES: COLLAPSED FUNCTION __Return_unwind. PRESS KEYPAD "+" TO EXPAND] ; [00000045 BYTES: COLLAPSED FUNCTION sub_40BC93. PRESS KEYPAD "+" TO EXPAND] ; [0000035D BYTES: COLLAPSED FUNCTION ____ExceptionHandler. PRESS KEYPAD "+" TO EXPAND] ; [000000F7 BYTES: COLLAPSED FUNCTION sub_40C035. PRESS KEYPAD "+" TO EXPAND] ; [0000004B BYTES: COLLAPSED FUNCTION sub_40C12C. PRESS KEYPAD "+" TO EXPAND] ; [000002B0 BYTES: COLLAPSED FUNCTION sub_40C177. PRESS KEYPAD "+" TO EXPAND] ; [00000124 BYTES: COLLAPSED FUNCTION sub_40C427. PRESS KEYPAD "+" TO EXPAND] ; [00000087 BYTES: COLLAPSED FUNCTION sub_40C54B. PRESS KEYPAD "+" TO EXPAND] ; [00000484 BYTES: COLLAPSED FUNCTION sub_40C5D2. PRESS KEYPAD "+" TO