Disassembly: 
  L1: 55 ?? push ebp
   8b ec ?? mov ebp, esp
   51 ?? push ecx
   53 ?? push ebx
   56 ?? push esi
   57 ?? push edi
   6a 54 ?? push 0x54<84>
   e8 ba 01 00 00 ?? call function 0x004018e8
  
  L2: 83 c4 04 ?? add esp, 4
   bf 50 58 40 00 ?? mov edi, 0x00405850
   be 2a 00 00 00 ?? mov esi, 0x0000002a<42>
   85 c0 ?? test eax, eax
   74 17 ?? je basic block L4
  
  L3: c7 40 0c 40 58 40 00 ?? mov dword ds:[eax + 12], 0x00405840
   c7 00 60 58 40 00 ?? mov dword ds:[eax], 0x00405860
   89 78 0c ?? mov dword ds:[eax + 12], edi
   89 70 50 ?? mov dword ds:[eax + 0x50<80>], esi
   8b d8 ?? mov ebx, eax
   eb 02 ?? jmp basic block L5
  
  L4: 33 db ?? xor ebx, ebx
  
  L5: 6a 54 ?? push 0x54<84>
   e8 89 01 00 00 ?? call function 0x004018e8
  
  L6: 83 c4 04 ?? add esp, 4
   85 c0 ?? test eax, eax
   74 17 ?? je basic block L8
  
  L7: c7 40 0c 40 58 40 00 ?? mov dword ds:[eax + 12], 0x00405840
   89 78 0c ?? mov dword ds:[eax + 12], edi
   c7 00 60 58 40 00 ?? mov dword ds:[eax], 0x00405860
   89 70 50 ?? mov dword ds:[eax + 0x50<80>], esi
   8b f8 ?? mov edi, eax
   eb 02 ?? jmp basic block L9
  
  L8: 33 ff ?? xor edi, edi
  
  L9: 6a 0c ?? push 12
   e8 62 01 00 00 ?? call function 0x004018e8
  
  L10: 83 c4 04 ?? add esp, 4
   85 c0 ?? test eax, eax
   74 0b ?? je basic block L12
  
  L11: c7 00 34 58 40 00 ?? mov dword ds:[eax], 0x00405834
   89 45 fc ?? mov dword ss:[ebp + 0xfc<252,-4>], eax
   eb 07 ?? jmp basic block L13
  
  L12: c7 45 fc 00 00 00 00 ?? mov dword ss:[ebp + 0xfc<252,-4>], 0
  
  L13: a1 40 82 40 00 ?? mov eax, dword ds:[0x00408240]
   8b 0d 44 82 40 00 ?? mov ecx, dword ds:[0x00408244]
   50 ?? push eax
   68 78 58 40 00 ?? push 0x00405878<"Cls1::func2()">
   51 ?? push ecx
   e8 90 f8 ff ff ?? call function 0x00401046
  
  L14: 83 c4 08 ?? add esp, 8
   8b c8 ?? mov ecx, eax
   ff 15 48 82 40 00 ?? call dword ds:[function 0x00408248]
  
  L15: 8b 13 ?? mov edx, dword ds:[ebx]
   8b 02 ?? mov eax, dword ds:[edx]
   8b cb ?? mov ecx, ebx
   ff d0 ?? call eax
  
  L16: 8b 53 0c ?? mov edx, dword ds:[ebx + 12]
   8b 02 ?? mov eax, dword ds:[edx]
   8d 4b 0c ?? lea ecx, ds:[ebx + 12]
   ff d0 ?? call eax
  
  L17: 8b 53 0c ?? mov edx, dword ds:[ebx + 12]
   8b 42 04 ?? mov eax, dword ds:[edx + 4]
   8d 4b 0c ?? lea ecx, ds:[ebx + 12]
   ff d0 ?? call eax
  
  L18: 8b 17 ?? mov edx, dword ds:[edi]
   8b 02 ?? mov eax, dword ds:[edx]
   8b cf ?? mov ecx, edi
   ff d0 ?? call eax
  
  L19: 53 ?? push ebx
   e8 f6 00 00 00 ?? call function 0x004018e2
  
  L20: 57 ?? push edi
   e8 f0 00 00 00 ?? call function 0x004018e2
  
  L21: 8b 4d fc ?? mov ecx, dword ss:[ebp + 0xfc<252,-4>]
   51 ?? push ecx
   e8 e7 00 00 00 ?? call function 0x004018e2
  
  L22: 83 c4 0c ?? add esp, 12
   5f ?? pop edi
   5e ?? pop esi
   33 c0 ?? xor eax, eax
   5b ?? pop ebx
   8b e5 ?? mov esp, ebp
   5d ?? pop ebp
   c3 ?? ret
  
  