Disassembly: 
  L1: 55 ?? push ebp
   8b ec ?? mov ebp, esp
   83 ec 08 ?? sub esp, 8
   53 ?? push ebx
   56 ?? push esi
   57 ?? push edi
   6a 58 ?? push 0x58<88>
   e8 18 f4 ff ff ?? call function 0x004010c8
  
  L2: 8b f0 ?? mov esi, eax
   83 c4 04 ?? add esp, 4
   89 75 fc ?? mov dword ss:[ebp + 0xfc<252,-4>], esi
   85 f6 ?? test esi, esi
   74 2b ?? je basic block L4
  
  L3: c7 46 0c 64 6b 40 00 ?? mov dword ds:[esi + 12], 0x00406b64
   c7 46 50 94 6b 40 00 ?? mov dword ds:[esi + 0x50<80>], 0x00406b94
   c7 06 40 6c 40 00 ?? mov dword ds:[esi], 0x00406c40
   c7 46 0c 4c 6c 40 00 ?? mov dword ds:[esi + 12], 0x00406c4c
   c7 46 50 5c 6c 40 00 ?? mov dword ds:[esi + 0x50<80>], 0x00406c5c
   c7 46 54 2a 00 00 00 ?? mov dword ds:[esi + 0x54<84>], 0x0000002a<42>
   eb 02 ?? jmp basic block L5
  
  L4: 33 f6 ?? xor esi, esi
  
  L5: 6a 58 ?? push 0x58<88>
   e8 d8 f3 ff ff ?? call function 0x004010c8
  
  L6: 8b f8 ?? mov edi, eax
   83 c4 04 ?? add esp, 4
   89 7d fc ?? mov dword ss:[ebp + 0xfc<252,-4>], edi
   85 ff ?? test edi, edi
   74 2b ?? je basic block L8
  
  L7: c7 47 0c 64 6b 40 00 ?? mov dword ds:[edi + 12], 0x00406b64
   c7 47 50 94 6b 40 00 ?? mov dword ds:[edi + 0x50<80>], 0x00406b94
   c7 07 40 6c 40 00 ?? mov dword ds:[edi], 0x00406c40
   c7 47 0c 4c 6c 40 00 ?? mov dword ds:[edi + 12], 0x00406c4c
   c7 47 50 5c 6c 40 00 ?? mov dword ds:[edi + 0x50<80>], 0x00406c5c
   c7 47 54 2a 00 00 00 ?? mov dword ds:[edi + 0x54<84>], 0x0000002a<42>
   eb 02 ?? jmp basic block L9
  
  L8: 33 ff ?? xor edi, edi
  
  L9: 6a 0c ?? push 12
   e8 98 f3 ff ff ?? call function 0x004010c8
  
  L10: 83 c4 04 ?? add esp, 4
   89 45 fc ?? mov dword ss:[ebp + 0xfc<252,-4>], eax
   85 c0 ?? test eax, eax
   74 16 ?? je basic block L12
  
  L11: c7 40 04 00 00 00 00 ?? mov dword ds:[eax + 4], 0
   c7 40 08 00 00 00 00 ?? mov dword ds:[eax + 8], 0
   c7 00 38 6b 40 00 ?? mov dword ds:[eax], 0x00406b38
   eb 07 ?? jmp basic block L13
  
  L12: c7 45 fc 00 00 00 00 ?? mov dword ss:[ebp + 0xfc<252,-4>], 0
  
  L13: 6a 58 ?? push 0x58<88>
   e8 6a f3 ff ff ?? call function 0x004010c8
  
  L14: 8b d8 ?? mov ebx, eax
   83 c4 04 ?? add esp, 4
   89 5d f8 ?? mov dword ss:[ebp + 0xf8<248,-8>], ebx
   85 db ?? test ebx, ebx
   74 38 ?? je basic block L17
  
  L15: 6a 58 ?? push 0x58<88>
   6a 00 ?? push 0
   53 ?? push ebx
   e8 29 1a 00 00 ?? call function 0x0040379d
  
  L16: c7 43 0c 64 6b 40 00 ?? mov dword ds:[ebx + 12], 0x00406b64
   83 c4 0c ?? add esp, 12
   c7 43 50 94 6b 40 00 ?? mov dword ds:[ebx + 0x50<80>], 0x00406b94
   c7 43 54 2a 00 00 00 ?? mov dword ds:[ebx + 0x54<84>], 0x0000002a<42>
   c7 03 b0 6c 40 00 ?? mov dword ds:[ebx], 0x00406cb0
   c7 43 0c bc 6c 40 00 ?? mov dword ds:[ebx + 12], 0x00406cbc
   c7 43 50 cc 6c 40 00 ?? mov dword ds:[ebx + 0x50<80>], 0x00406ccc
   eb 02 ?? jmp basic block L18
  
  L17: 33 db ?? xor ebx, ebx
  
  L18: 68 28 10 40 00 ?? push 0x00401028
   68 50 6b 40 00 ?? push 0x00406b50<"Cls1::func2()">
   ff 35 88 a0 40 00 ?? push dword ds:[0x0040a088]
   e8 6e f3 ff ff ?? call function 0x00401127
  
  L19: 83 c4 08 ?? add esp, 8
   8b c8 ?? mov ecx, eax
   ff 15 70 a0 40 00 ?? call dword ds:[function 0x0040a070]
  
  L20: 8b 43 0c ?? mov eax, dword ds:[ebx + 12]
   8d 4b 0c ?? lea ecx, ds:[ebx + 12]
   8b 40 04 ?? mov eax, dword ds:[eax + 4]
   3d eb 10 40 00 ?? cmp eax, 0x004010eb
   75 22 ?? jne basic block L24
  
  L21: 68 28 10 40 00 ?? push 0x00401028
   68 80 6b 40 00 ?? push 0x00406b80<"Cls2::func4()">
   ff 35 88 a0 40 00 ?? push dword ds:[0x0040a088]
   e8 3e f3 ff ff ?? call function 0x00401127
  
  L22: 83 c4 08 ?? add esp, 8
   8b c8 ?? mov ecx, eax
   ff 15 70 a0 40 00 ?? call dword ds:[function 0x0040a070]
  
  L23: eb 02 ?? jmp basic block L25
  
  L24: ff d0 ?? call eax
  
  L25: 8b 43 50 ?? mov eax, dword ds:[ebx + 0x50<80>]
   8d 4b 50 ?? lea ecx, ds:[ebx + 0x50<80>]
   8b 40 24 ?? mov eax, dword ds:[eax + 0x24<36>]
   3d 8a 12 40 00 ?? cmp eax, 0x0040128a
   75 22 ?? jne basic block L29
  
  L26: 68 28 10 40 00 ?? push 0x00401028
   68 30 6c 40 00 ?? push 0x00406c30<"I am vf10">
   ff 35 88 a0 40 00 ?? push dword ds:[0x0040a088]
   e8 0a f3 ff ff ?? call function 0x00401127
  
  L27: 83 c4 08 ?? add esp, 8
   8b c8 ?? mov ecx, eax
   ff 15 70 a0 40 00 ?? call dword ds:[function 0x0040a070]
  
  L28: eb 02 ?? jmp basic block L30
  
  L29: ff d0 ?? call eax
  
  L30: 8b 06 ?? mov eax, dword ds:[esi]
   8b 00 ?? mov eax, dword ds:[eax]
   3d a9 11 40 00 ?? cmp eax, 0x004011a9
   75 22 ?? jne basic block L34
  
  L31: 68 28 10 40 00 ?? push 0x00401028
   68 8c 6c 40 00 ?? push 0x00406c8c<"Cls3::func1()">
   ff 35 88 a0 40 00 ?? push dword ds:[0x0040a088]
   e8 db f2 ff ff ?? call function 0x00401127
  
  L32: 83 c4 08 ?? add esp, 8
   8b c8 ?? mov ecx, eax
   ff 15 70 a0 40 00 ?? call dword ds:[function 0x0040a070]
  
  L33: eb 04 ?? jmp basic block L35
  
  L34: 8b ce ?? mov ecx, esi
   ff d0 ?? call eax
  
  L35: 8b 46 0c ?? mov eax, dword ds:[esi + 12]
   8d 4e 0c ?? lea ecx, ds:[esi + 12]
   8b 00 ?? mov eax, dword ds:[eax]
   3d fe 11 40 00 ?? cmp eax, 0x004011fe
   75 22 ?? jne basic block L39
  
  L36: 68 28 10 40 00 ?? push 0x00401028
   68 9c 6c 40 00 ?? push 0x00406c9c<"Cls3::func3()">
   ff 35 88 a0 40 00 ?? push dword ds:[0x0040a088]
   e8 a6 f2 ff ff ?? call function 0x00401127
  
  L37: 83 c4 08 ?? add esp, 8
   8b c8 ?? mov ecx, eax
   ff 15 70 a0 40 00 ?? call dword ds:[function 0x0040a070]
  
  L38: eb 02 ?? jmp basic block L40
  
  L39: ff d0 ?? call eax
  
  L40: 8b 46 0c ?? mov eax, dword ds:[esi + 12]
   8d 4e 0c ?? lea ecx, ds:[esi + 12]
   8b 40 04 ?? mov eax, dword ds:[eax + 4]
   3d eb 10 40 00 ?? cmp eax, 0x004010eb
   75 22 ?? jne basic block L44
  
  L41: 68 28 10 40 00 ?? push 0x00401028
   68 80 6b 40 00 ?? push 0x00406b80<"Cls2::func4()">
   ff 35 88 a0 40 00 ?? push dword ds:[0x0040a088]
   e8 72 f2 ff ff ?? call function 0x00401127
  
  L42: 83 c4 08 ?? add esp, 8
   8b c8 ?? mov ecx, eax
   ff 15 70 a0 40 00 ?? call dword ds:[function 0x0040a070]
  
  L43: eb 02 ?? jmp basic block L45
  
  L44: ff d0 ?? call eax
  
  L45: 8b 07 ?? mov eax, dword ds:[edi]
   8b 00 ?? mov eax, dword ds:[eax]
   3d a9 11 40 00 ?? cmp eax, 0x004011a9
   75 22 ?? jne basic block L49
  
  L46: 68 28 10 40 00 ?? push 0x00401028
   68 8c 6c 40 00 ?? push 0x00406c8c<"Cls3::func1()">
   ff 35 88 a0 40 00 ?? push dword ds:[0x0040a088]
   e8 43 f2 ff ff ?? call function 0x00401127
  
  L47: 83 c4 08 ?? add esp, 8
   8b c8 ?? mov ecx, eax
   ff 15 70 a0 40 00 ?? call dword ds:[function 0x0040a070]
  
  L48: eb 04 ?? jmp basic block L50
  
  L49: 8b cf ?? mov ecx, edi
   ff d0 ?? call eax
  
  L50: 6a 58 ?? push 0x58<88>
   56 ?? push esi
   e8 67 f1 ff ff ?? call function 0x00401064
  
  L51: 6a 0c ?? push 12
   57 ?? push edi
   e8 5f f1 ff ff ?? call function 0x00401064
  
  L52: 6a 58 ?? push 0x58<88>
   53 ?? push ebx
   e8 57 f1 ff ff ?? call function 0x00401064
  
  L53: 6a 0c ?? push 12
   ff 75 fc ?? push dword ss:[ebp + 0xfc<252,-4>]
   e8 4d f1 ff ff ?? call function 0x00401064
  
  L54: 83 c4 20 ?? add esp, 0x20<32>
   33 c0 ?? xor eax, eax
   5f ?? pop edi
   5e ?? pop esi
   5b ?? pop ebx
   8b e5 ?? mov esp, ebp
   5d ?? pop ebp
   c3 ?? ret
  
  