Disassembly: 
  L1: 8b ff ?? mov edi, edi
   55 ?? push ebp
   8b ec ?? mov ebp, esp
   53 ?? push ebx
   56 ?? push esi
   8b 75 08 ?? mov esi, dword ss:[ebp + 8]
   57 ?? push edi
   33 ff ?? xor edi, edi
   83 cb ff ?? or ebx, 0xff<255,-1>
   3b f7 ?? cmp esi, edi
   75 1c ?? jne basic block L5
  
  L2: e8 e2 50 00 00 ?? call function 0x0040c7ec
  
  L3: 57 ?? push edi
   57 ?? push edi
   57 ?? push edi
   57 ?? push edi
   57 ?? push edi
   c7 00 16 00 00 00 ?? mov dword ds:[eax], 0x00000016<22>
   e8 c6 f1 ff ff ?? call function 0x004068e0
  
  L4: 83 c4 14 ?? add esp, 0x14<20>
   0b c3 ?? or eax, ebx
   eb 42 ?? jmp basic block L16
  
  L5: f6 46 0c 83 ?? test byte ds:[esi + 12], 0x83<131,-125>
   74 37 ?? je basic block L15
  
  L6: 56 ?? push esi
   e8 3a f9 ff ff ?? call function 0x00407067
  
  L7: 56 ?? push esi
   8b d8 ?? mov ebx, eax
   e8 1a 85 00 00 ?? call function 0x0040fc4f
  
  L8: 56 ?? push esi
   e8 45 7a 00 00 ?? call function 0x0040f180
  
  L9: 50 ?? push eax
   e8 b8 8d 00 00 ?? call function 0x004104f9
  
  L10: 83 c4 10 ?? add esp, 0x10<16>
   85 c0 ?? test eax, eax
   7d 05 ?? jge basic block L12
  
  L11: 83 cb ff ?? or ebx, 0xff<255,-1>
   eb 11 ?? jmp basic block L15
  
  L12: 8b 46 1c ?? mov eax, dword ds:[esi + 0x1c<28>]
   3b c7 ?? cmp eax, edi
   74 0a ?? je basic block L15
  
  L13: 50 ?? push eax
   e8 d2 f1 ff ff ?? call function 0x0040692c
  
  L14: 59 ?? pop ecx
   89 7e 1c ?? mov dword ds:[esi + 0x1c<28>], edi
  
  L15: 89 7e 0c ?? mov dword ds:[esi + 12], edi
   8b c3 ?? mov eax, ebx
  
  L16: 5f ?? pop edi
   5e ?? pop esi
   5b ?? pop ebx
   5d ?? pop ebp
   c3 ?? ret
  
  