Disassembly: 
  L1: 55 ?? push ebp
   8b ec ?? mov ebp, esp
   6a ff ?? push 0xff<255,-1>
   68 2d 2b 40 00 ?? push 0x00402b2d
   64 a1 00 00 00 00 ?? mov eax, dword fs:[0]
   50 ?? push eax
   51 ?? push ecx
   56 ?? push esi
   57 ?? push edi
   a1 04 50 40 00 ?? mov eax, dword ds:[0x00405004]
   33 c5 ?? xor eax, ebp
   50 ?? push eax
   8d 45 f4 ?? lea eax, ss:[ebp + 0xf4<244,-12>]
   64 a3 00 00 00 00 ?? mov dword fs:[0], eax
   8b f1 ?? mov esi, ecx
   89 75 f0 ?? mov dword ss:[ebp + 0xf0<240,-16>], esi
   8b 7d 08 ?? mov edi, dword ss:[ebp + 8]
   89 3e ?? mov dword ds:[esi], edi
   8b 17 ?? mov edx, dword ds:[edi]
   8b 42 04 ?? mov eax, dword ds:[edx + 4]
   8b 4c 38 38 ?? mov ecx, dword ds:[eax + edi + 0x38<56>]
   85 c9 ?? test ecx, ecx
   74 07 ?? je basic block L4
  
  L2: 8b 01 ?? mov eax, dword ds:[ecx]
   ff 50 04 ?? call dword ds:[eax + 4]
  
  L3: 8b 17 ?? mov edx, dword ds:[edi]
  
  L4: c7 45 fc 00 00 00 00 ?? mov dword ss:[ebp + 0xfc<252,-4>], 0
   8b 42 04 ?? mov eax, dword ds:[edx + 4]
   83 7c 38 0c 00 ?? cmp dword ds:[eax + edi + 12], 0
   8d 0c 38 ?? lea ecx, ds:[eax + edi]
   74 04 ?? je basic block L6
  
  L5: 32 c0 ?? xor al, al
   eb 22 ?? jmp basic block L11
  
  L6: 8b 49 3c ?? mov ecx, dword ds:[ecx + 0x3c<60>]
   85 c9 ?? test ecx, ecx
   74 19 ?? je basic block L10
  
  L7: 3b cf ?? cmp ecx, edi
   74 15 ?? je basic block L10
  
  L8: ff 15 50 30 40 00 ?? call dword ds:[function 0x00403050]
  
  L9: 8b 07 ?? mov eax, dword ds:[edi]
   8b 40 04 ?? mov eax, dword ds:[eax + 4]
   83 7c 38 0c 00 ?? cmp dword ds:[eax + edi + 12], 0
   0f 94 c0 ?? sete al
   eb 02 ?? jmp basic block L11
  
  L10: b0 01 ?? mov al, 1
  
  L11: 88 46 04 ?? mov byte ds:[esi + 4], al
   8b c6 ?? mov eax, esi
   8b 4d f4 ?? mov ecx, dword ss:[ebp + 0xf4<244,-12>]
   64 89 0d 00 00 00 00 ?? mov dword fs:[0], ecx
   59 ?? pop ecx
   5f ?? pop edi
   5e ?? pop esi
   8b e5 ?? mov esp, ebp
   5d ?? pop ebp
   c2 04 00 ?? ret 4
  
  