1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
| .text:00401000 ; int __cdecl main(int argc, const char **argv, const char **envp) .text:00401000 _main proc near ; CODE XREF: start+AF↓p .text:00401000 .text:00401000 argc = dword ptr 4 .text:00401000 argv = dword ptr 8 .text:00401000 envp = dword ptr 0Ch .text:00401000 .text:00401000 mov eax, [esp+argc] .text:00401004 add eax, 0FFFFFFECh ; switch 20 cases .text:00401007 cmp eax, 13h .text:0040100A ja short def_401014 ; jumptable 00401014 default case, cases 22,28-30,32-38 .text:0040100C xor ecx, ecx .text:0040100E mov cl, ds:byte_401094[eax] .text:00401014 jmp ds:jpt_401014[ecx*4] ; switch jump .text:0040101B ; --------------------------------------------------------------------------- .text:0040101B .text:0040101B loc_40101B: ; CODE XREF: _main+14↑j .text:0040101B ; DATA XREF: .text:jpt_401014↓o .text:0040101B push offset Format ; jumptable 00401014 case 23 .text:00401020 call _printf .text:00401025 add esp, 4 .text:00401028 xor eax, eax .text:0040102A retn .text:0040102B ; --------------------------------------------------------------------------- .text:0040102B .text:0040102B loc_40102B: ; CODE XREF: _main+14↑j .text:0040102B ; DATA XREF: .text:jpt_401014↓o .text:0040102B push offset aArgc1 ; jumptable 00401014 case 24 .text:00401030 call _printf .text:00401035 add esp, 4 .text:00401038 xor eax, eax .text:0040103A retn .text:0040103B ; --------------------------------------------------------------------------- .text:0040103B .text:0040103B loc_40103B: ; CODE XREF: _main+14↑j .text:0040103B ; DATA XREF: .text:jpt_401014↓o .text:0040103B push offset aArgc2 ; jumptable 00401014 case 25 .text:00401040 call _printf .text:00401045 add esp, 4 .text:00401048 xor eax, eax .text:0040104A retn .text:0040104B ; --------------------------------------------------------------------------- .text:0040104B .text:0040104B loc_40104B: ; CODE XREF: _main+14↑j .text:0040104B ; DATA XREF: .text:jpt_401014↓o .text:0040104B push offset aArgc3 ; jumptable 00401014 case 26 .text:00401050 call _printf .text:00401055 add esp, 4 .text:00401058 xor eax, eax .text:0040105A retn .text:0040105B ; --------------------------------------------------------------------------- .text:0040105B .text:0040105B loc_40105B: ; CODE XREF: _main+14↑j .text:0040105B ; DATA XREF: .text:jpt_401014↓o .text:0040105B push offset aArgc4 ; jumptable 00401014 cases 20,21,27,31,39 .text:00401060 call _printf .text:00401065 add esp, 4 .text:00401068 xor eax, eax .text:0040106A retn .text:0040106B ; --------------------------------------------------------------------------- .text:0040106B .text:0040106B def_401014: ; CODE XREF: _main+A↑j .text:0040106B ; _main+14↑j .text:0040106B ; DATA XREF: ... .text:0040106B push offset aHello ; jumptable 00401014 default case, cases 22,28-30,32-38 .text:00401070 call _printf .text:00401075 add esp, 4 .text:00401078 xor eax, eax .text:0040107A retn .text:0040107A _main endp .text:0040107A .text:0040107A ; --------------------------------------------------------------------------- .text:0040107B align 4 .text:0040107C jpt_401014 dd offset CASE_23 ; DATA XREF: _main+14↑r .text:0040107C dd offset loc_40101B ; jump table for switch statement .text:0040107C dd offset loc_40102B .text:0040107C dd offset loc_40103B .text:0040107C dd offset loc_40104B .text:0040107C dd offset def_401014 .text:00401094 byte_401094 db 0, 0, 5, 1 .text:00401094 ; DATA XREF: _main+E↑r .text:00401094 db 2, 3, 4, 0 ; indirect table for switch statement .text:00401094 db 5, 5, 5, 0 .text:00401094 db 5, 5, 5, 5 .text:00401094 db 5, 5, 5, 0 .text:004010A8 align 10h .text:004010B0
|