Disassembly: 
  L1: 8b 46 14 ?? mov eax, dword ds:[esi + 0x14<20>]
   53 ?? push ebx
   bb 10 00 00 00 ?? mov ebx, 0x00000010<16>
   3b c3 ?? cmp eax, ebx
   72 04 ?? jb basic block L3
  
  L2: 8b 0e ?? mov ecx, dword ds:[esi]
   eb 02 ?? jmp basic block L4
  
  L3: 8b ce ?? mov ecx, esi
  
  L4: 81 f9 74 32 40 00 ?? cmp ecx, 0x00403274<"bar">
   77 34 ?? ja basic block L14
  
  L5: 3b c3 ?? cmp eax, ebx
   72 04 ?? jb basic block L7
  
  L6: 8b 0e ?? mov ecx, dword ds:[esi]
   eb 02 ?? jmp basic block L8
  
  L7: 8b ce ?? mov ecx, esi
  
  L8: 8b 56 10 ?? mov edx, dword ds:[esi + 0x10<16>]
   03 d1 ?? add edx, ecx
   81 fa 74 32 40 00 ?? cmp edx, 0x00403274<"bar">
   76 1d ?? jbe basic block L14
  
  L9: 3b c3 ?? cmp eax, ebx
   72 04 ?? jb basic block L11
  
  L10: 8b 06 ?? mov eax, dword ds:[esi]
   eb 02 ?? jmp basic block L12
  
  L11: 8b c6 ?? mov eax, esi
  
  L12: bb 74 32 40 00 ?? mov ebx, 0x00403274<"bar">
   2b d8 ?? sub ebx, eax
   56 ?? push esi
   8b c7 ?? mov eax, edi
   8b ce ?? mov ecx, esi
   e8 03 01 00 00 ?? call function 0x004015a0
  
  L13: 5b ?? pop ebx
   c3 ?? ret
  
  L14: 83 ff fe ?? cmp edi, 0xfe<254,-2>
   76 0b ?? jbe basic block L16
  
  L15: 68 90 32 40 00 ?? push 0x00403290<"string too long">
   ff 15 84 30 40 00 ?? call dword ds:[0x00403084]
  
  L16: 3b c7 ?? cmp eax, edi
   73 18 ?? jae basic block L21
  
  L17: 8b 46 10 ?? mov eax, dword ds:[esi + 0x10<16>]
   50 ?? push eax
   57 ?? push edi
   56 ?? push esi
   e8 f2 02 00 00 ?? call function 0x004017b0
  
  L18: 85 ff ?? test edi, edi
   74 4d ?? je basic block L30
  
  L19: 39 5e 14 ?? cmp dword ds:[esi + 0x14<20>], ebx
   72 1f ?? jb basic block L25
  
  L20: 8b 06 ?? mov eax, dword ds:[esi]
   eb 1d ?? jmp basic block L26
  
  L21: 85 ff ?? test edi, edi
   75 f3 ?? jne basic block L19
  
  L22: 89 7e 10 ?? mov dword ds:[esi + 0x10<16>], edi
   3b c3 ?? cmp eax, ebx
   72 09 ?? jb basic block L24
  
  L23: 8b 06 ?? mov eax, dword ds:[esi]
   c6 00 00 ?? mov byte ds:[eax], 0
   8b c6 ?? mov eax, esi
   5b ?? pop ebx
   c3 ?? ret
  
  L24: 8b c6 ?? mov eax, esi
   c6 00 00 ?? mov byte ds:[eax], 0
   5b ?? pop ebx
   c3 ?? ret
  
  L25: 8b c6 ?? mov eax, esi
  
  L26: 57 ?? push edi
   68 74 32 40 00 ?? push 0x00403274<"bar">
   50 ?? push eax
   e8 e4 11 00 00 ?? call function 0x004026d8
  
  L27: 83 c4 0c ?? add esp, 12
   89 7e 10 ?? mov dword ds:[esi + 0x10<16>], edi
   39 5e 14 ?? cmp dword ds:[esi + 0x14<20>], ebx
   72 0a ?? jb basic block L29
  
  L28: 8b 06 ?? mov eax, dword ds:[esi]
   c6 04 38 00 ?? mov byte ds:[eax + edi], 0
   8b c6 ?? mov eax, esi
   5b ?? pop ebx
   c3 ?? ret
  
  L29: 8b c6 ?? mov eax, esi
   c6 04 38 00 ?? mov byte ds:[eax + edi], 0
  
  L30: 8b c6 ?? mov eax, esi
   5b ?? pop ebx
   c3 ?? ret
  
  