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 52 02 00 00 ?? call function 0x00401c32
  
  L2: 83 c4 04 ?? add esp, 4
   bf b8 58 40 00 ?? mov edi, 0x004058b8
   be 84 58 40 00 ?? mov esi, 0x00405884
   85 c0 ?? test eax, eax
   74 25 ?? je basic block L4
  
  L3: c7 40 0c 40 58 40 00 ?? mov dword ds:[eax + 12], 0x00405840
   c7 40 50 50 58 40 00 ?? mov dword ds:[eax + 0x50<80>], 0x00405850
   c7 00 c8 58 40 00 ?? mov dword ds:[eax], 0x004058c8
   89 78 0c ?? mov dword ds:[eax + 12], edi
   89 70 50 ?? mov dword ds:[eax + 0x50<80>], esi
   c7 40 54 2a 00 00 00 ?? mov dword ds:[eax + 0x54<84>], 0x0000002a<42>
   8b d8 ?? mov ebx, eax
   eb 02 ?? jmp basic block L5
  
  L4: 33 db ?? xor ebx, ebx
  
  L5: 6a 58 ?? push 0x58<88>
   e8 13 02 00 00 ?? call function 0x00401c32
  
  L6: 83 c4 04 ?? add esp, 4
   85 c0 ?? test eax, eax
   74 26 ?? je basic block L8
  
  L7: c7 40 0c 40 58 40 00 ?? mov dword ds:[eax + 12], 0x00405840
   c7 40 50 50 58 40 00 ?? mov dword ds:[eax + 0x50<80>], 0x00405850
   c7 00 c8 58 40 00 ?? mov dword ds:[eax], 0x004058c8
   89 78 0c ?? mov dword ds:[eax + 12], edi
   89 70 50 ?? mov dword ds:[eax + 0x50<80>], esi
   c7 40 54 2a 00 00 00 ?? mov dword ds:[eax + 0x54<84>], 0x0000002a<42>
   89 45 fc ?? mov dword ss:[ebp + 0xfc<252,-4>], eax
   eb 07 ?? jmp basic block L9
  
  L8: c7 45 fc 00 00 00 00 ?? mov dword ss:[ebp + 0xfc<252,-4>], 0
  
  L9: 6a 0c ?? push 12
   e8 d8 01 00 00 ?? call function 0x00401c32
  
  L10: 33 ff ?? xor edi, edi
   83 c4 04 ?? add esp, 4
   3b c7 ?? cmp eax, edi
   74 0b ?? je basic block L12
  
  L11: c7 00 34 58 40 00 ?? mov dword ds:[eax], 0x00405834
   89 45 f8 ?? mov dword ss:[ebp + 0xf8<248,-8>], eax
   eb 03 ?? jmp basic block L13
  
  L12: 89 7d f8 ?? mov dword ss:[ebp + 0xf8<248,-8>], edi
  
  L13: 6a 58 ?? push 0x58<88>
   e8 ba 01 00 00 ?? call function 0x00401c32
  
  L14: 83 c4 04 ?? add esp, 4
   3b c7 ?? cmp eax, edi
   74 2b ?? je basic block L16
  
  L15: c7 40 0c 40 58 40 00 ?? mov dword ds:[eax + 12], 0x00405840
   c7 40 50 50 58 40 00 ?? mov dword ds:[eax + 0x50<80>], 0x00405850
   c7 40 54 2a 00 00 00 ?? mov dword ds:[eax + 0x54<84>], 0x0000002a<42>
   c7 00 18 59 40 00 ?? mov dword ds:[eax], 0x00405918
   c7 40 0c 08 59 40 00 ?? mov dword ds:[eax + 12], 0x00405908
   c7 40 50 d4 58 40 00 ?? mov dword ds:[eax + 0x50<80>], 0x004058d4
   8b f8 ?? mov edi, eax
  
  L16: 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 30 59 40 00 ?? push 0x00405930<"Cls1::func2()">
   51 ?? push ecx
   e8 ad f5 ff ff ?? call function 0x0040106e
  
  L17: 83 c4 08 ?? add esp, 8
   8b c8 ?? mov ecx, eax
   ff 15 48 82 40 00 ?? call dword ds:[function 0x00408248]
  
  L18: 8b 57 0c ?? mov edx, dword ds:[edi + 12]
   8b 42 04 ?? mov eax, dword ds:[edx + 4]
   8d 4f 0c ?? lea ecx, ds:[edi + 12]
   ff d0 ?? call eax
  
  L19: 8b 57 50 ?? mov edx, dword ds:[edi + 0x50<80>]
   8b 42 24 ?? mov eax, dword ds:[edx + 0x24<36>]
   8d 4f 50 ?? lea ecx, ds:[edi + 0x50<80>]
   ff d0 ?? call eax
  
  L20: 8b 13 ?? mov edx, dword ds:[ebx]
   8b 02 ?? mov eax, dword ds:[edx]
   8b cb ?? mov ecx, ebx
   ff d0 ?? call eax
  
  L21: 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
  
  L22: 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
  
  L23: 8b 75 fc ?? mov esi, dword ss:[ebp + 0xfc<252,-4>]
   8b 16 ?? mov edx, dword ds:[esi]
   8b 02 ?? mov eax, dword ds:[edx]
   8b ce ?? mov ecx, esi
   ff d0 ?? call eax
  
  L24: 53 ?? push ebx
   e8 1c 01 00 00 ?? call function 0x00401c2c
  
  L25: 56 ?? push esi
   e8 16 01 00 00 ?? call function 0x00401c2c
  
  L26: 57 ?? push edi
   e8 10 01 00 00 ?? call function 0x00401c2c
  
  L27: 8b 4d f8 ?? mov ecx, dword ss:[ebp + 0xf8<248,-8>]
   51 ?? push ecx
   e8 07 01 00 00 ?? call function 0x00401c2c
  
  L28: 83 c4 10 ?? add esp, 0x10<16>
   5f ?? pop edi
   5e ?? pop esi
   33 c0 ?? xor eax, eax
   5b ?? pop ebx
   8b e5 ?? mov esp, ebp
   5d ?? pop ebp
   c3 ?? ret
  
  