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]
   83 c7 07 ?? add edi, 7
   83 e7 f8 ?? and edi, 0xf8<248,-8>
   83 7d 0c 00 ?? cmp dword ss:[ebp + 12], 0
   8b f1 ?? mov esi, ecx
   74 06 ?? je basic block L4
  
  L2: 57 ?? push edi
   ff 16 ?? call dword ds:[esi]
  
  L3: 59 ?? pop ecx
   eb 64 ?? jmp basic block L21
  
  L4: 85 ff ?? test edi, edi
   77 03 ?? ja basic block L6
  
  L5: 6a 08 ?? push 8
   5f ?? pop edi
  
  L6: 8b 46 10 ?? mov eax, dword ds:[esi + 0x10<16>]
   53 ?? push ebx
   3b c7 ?? cmp eax, edi
   73 45 ?? jae basic block L18
  
  L7: bb 00 10 00 00 ?? mov ebx, 0x00001000<4096>
   3b fb ?? cmp edi, ebx
   77 38 ?? ja basic block L17
  
  L8: 6a 01 ?? push 1
   68 04 10 00 00 ?? push 0x00001004<4100>
   b9 d0 64 43 00 ?? mov ecx, 0x004364d0
   e8 b9 ff ff ff ?? call basic block L1
  
  L9: 85 c0 ?? test eax, eax
   74 05 ?? je basic block L11
  
  L10: 83 20 00 ?? and dword ds:[eax], 0
   eb 02 ?? jmp basic block L12
  
  L11: 33 c0 ?? xor eax, eax
  
  L12: 85 c0 ?? test eax, eax
   74 18 ?? je basic block L17
  
  L13: 8b 4e 0c ?? mov ecx, dword ds:[esi + 12]
   85 c9 ?? test ecx, ecx
   74 04 ?? je basic block L15
  
  L14: 89 01 ?? mov dword ds:[ecx], eax
   eb 03 ?? jmp basic block L16
  
  L15: 89 46 08 ?? mov dword ds:[esi + 8], eax
  
  L16: 2b df ?? sub ebx, edi
   89 46 0c ?? mov dword ds:[esi + 12], eax
   89 5e 10 ?? mov dword ds:[esi + 0x10<16>], ebx
   eb 09 ?? jmp basic block L19
  
  L17: 33 c0 ?? xor eax, eax
   eb 0f ?? jmp basic block L20
  
  L18: 2b c7 ?? sub eax, edi
   89 46 10 ?? mov dword ds:[esi + 0x10<16>], eax
  
  L19: 8b 46 0c ?? mov eax, dword ds:[esi + 12]
   8b 4e 10 ?? mov ecx, dword ds:[esi + 0x10<16>]
   8d 44 08 04 ?? lea eax, ds:[eax + ecx + 4]
  
  L20: 5b ?? pop ebx
  
  L21: 5f ?? pop edi
   5e ?? pop esi
   5d ?? pop ebp
   c2 08 00 ?? ret 8
  
  