Disassembly: 
  L1: 8b ff ?? mov edi, edi
   55 ?? push ebp
   8b ec ?? mov ebp, esp
   56 ?? push esi
   57 ?? push edi
   8b 7d 08 ?? mov edi, dword ss:[ebp + 8]
   8b 47 04 ?? mov eax, dword ds:[edi + 4]
   85 c0 ?? test eax, eax
   74 47 ?? je basic block L13
  
  L2: 8d 50 08 ?? lea edx, ds:[eax + 8]
   80 3a 00 ?? cmp byte ds:[edx], 0
   74 3f ?? je basic block L13
  
  L3: 8b 75 0c ?? mov esi, dword ss:[ebp + 12]
   8b 4e 04 ?? mov ecx, dword ds:[esi + 4]
   3b c1 ?? cmp eax, ecx
   74 14 ?? je basic block L7
  
  L4: 83 c1 08 ?? add ecx, 8
   51 ?? push ecx
   52 ?? push edx
   e8 5b 1d 00 00 ?? call function 0x00404040
  
  L5: 59 ?? pop ecx
   59 ?? pop ecx
   85 c0 ?? test eax, eax
   74 04 ?? je basic block L7
  
  L6: 33 c0 ?? xor eax, eax
   eb 24 ?? jmp basic block L14
  
  L7: f6 06 02 ?? test byte ds:[esi], 2
   74 05 ?? je basic block L9
  
  L8: f6 07 08 ?? test byte ds:[edi], 8
   74 f2 ?? je basic block L6
  
  L9: 8b 45 10 ?? mov eax, dword ss:[ebp + 0x10<16>]
   8b 00 ?? mov eax, dword ds:[eax]
   a8 01 ?? test al, 1
   74 05 ?? je basic block L11
  
  L10: f6 07 01 ?? test byte ds:[edi], 1
   74 e4 ?? je basic block L6
  
  L11: a8 02 ?? test al, 2
   74 05 ?? je basic block L13
  
  L12: f6 07 02 ?? test byte ds:[edi], 2
   74 db ?? je basic block L6
  
  L13: 33 c0 ?? xor eax, eax
   40 ?? inc eax
  
  L14: 5f ?? pop edi
   5e ?? pop esi
   5d ?? pop ebp
   c3 ?? ret
  
  