Disassembly: 
  L1: 55 ?? push ebp
   8b ec ?? mov ebp, esp
   53 ?? push ebx
   8b 5d 08 ?? mov ebx, dword ss:[ebp + 8]
   56 ?? push esi
   8b f1 ?? mov esi, ecx
   85 db ?? test ebx, ebx
   74 57 ?? je basic block L15
  
  L2: 8b 4e 14 ?? mov ecx, dword ds:[esi + 0x14<20>]
   83 f9 10 ?? cmp ecx, 0x10<16>
   72 04 ?? jb basic block L4
  
  L3: 8b 06 ?? mov eax, dword ds:[esi]
   eb 02 ?? jmp basic block L5
  
  L4: 8b c6 ?? mov eax, esi
  
  L5: 3b d8 ?? cmp ebx, eax
   72 45 ?? jb basic block L15
  
  L6: 83 f9 10 ?? cmp ecx, 0x10<16>
   72 04 ?? jb basic block L8
  
  L7: 8b 16 ?? mov edx, dword ds:[esi]
   eb 02 ?? jmp basic block L9
  
  L8: 8b d6 ?? mov edx, esi
  
  L9: 8b 46 10 ?? mov eax, dword ds:[esi + 0x10<16>]
   03 c2 ?? add eax, edx
   3b c3 ?? cmp eax, ebx
   76 31 ?? jbe basic block L15
  
  L10: 83 f9 10 ?? cmp ecx, 0x10<16>
   72 16 ?? jb basic block L13
  
  L11: 8b 06 ?? mov eax, dword ds:[esi]
   ff 75 0c ?? push dword ss:[ebp + 12]
   2b d8 ?? sub ebx, eax
   53 ?? push ebx
   56 ?? push esi
   8b ce ?? mov ecx, esi
   e8 35 ef ff ff ?? call function 0x0040115e
  
  L12: 5e ?? pop esi
   5b ?? pop ebx
   5d ?? pop ebp
   c2 08 00 ?? ret 8
  
  L13: ff 75 0c ?? push dword ss:[ebp + 12]
   8b c6 ?? mov eax, esi
   2b d8 ?? sub ebx, eax
   53 ?? push ebx
   56 ?? push esi
   8b ce ?? mov ecx, esi
   e8 1f ef ff ff ?? call function 0x0040115e
  
  L14: 5e ?? pop esi
   5b ?? pop ebx
   5d ?? pop ebp
   c2 08 00 ?? ret 8
  
  L15: 57 ?? push edi
   8b 7d 0c ?? mov edi, dword ss:[ebp + 12]
   83 ff fe ?? cmp edi, 0xfe<254,-2>
   76 0b ?? jbe basic block L17
  
  L16: 68 0c 8d 40 00 ?? push 0x00408d0c<"string too long">
   ff 15 58 b2 40 00 ?? call dword ds:[0x0040b258]
  
  L17: 8b 46 14 ?? mov eax, dword ds:[esi + 0x14<20>]
   3b c7 ?? cmp eax, edi
   73 19 ?? jae basic block L22
  
  L18: ff 76 10 ?? push dword ds:[esi + 0x10<16>]
   8b ce ?? mov ecx, esi
   57 ?? push edi
   e8 c2 ed ff ff ?? call function 0x0040102d
  
  L19: 85 ff ?? test edi, edi
   74 5f ?? je basic block L33
  
  L20: 83 7e 14 10 ?? cmp dword ds:[esi + 0x14<20>], 0x10<16>
   72 2a ?? jb basic block L26
  
  L21: 8b 06 ?? mov eax, dword ds:[esi]
   eb 28 ?? jmp basic block L27
  
  L22: 85 ff ?? test edi, edi
   75 f2 ?? jne basic block L20
  
  L23: 89 7e 10 ?? mov dword ds:[esi + 0x10<16>], edi
   83 f8 10 ?? cmp eax, 0x10<16>
   72 0e ?? jb basic block L25
  
  L24: 8b 06 ?? mov eax, dword ds:[esi]
   5f ?? pop edi
   c6 00 00 ?? mov byte ds:[eax], 0
   8b c6 ?? mov eax, esi
   5e ?? pop esi
   5b ?? pop ebx
   5d ?? pop ebp
   c2 08 00 ?? ret 8
  
  L25: 5f ?? pop edi
   8b c6 ?? mov eax, esi
   5e ?? pop esi
   c6 00 00 ?? mov byte ds:[eax], 0
   5b ?? pop ebx
   5d ?? pop ebp
   c2 08 00 ?? ret 8
  
  L26: 8b c6 ?? mov eax, esi
  
  L27: 85 ff ?? test edi, edi
   74 0b ?? je basic block L30
  
  L28: 57 ?? push edi
   53 ?? push ebx
   50 ?? push eax
   e8 87 09 00 00 ?? call function 0x00402c34
  
  L29: 83 c4 0c ?? add esp, 12
  
  L30: 83 7e 14 10 ?? cmp dword ds:[esi + 0x14<20>], 0x10<16>
   89 7e 10 ?? mov dword ds:[esi + 0x10<16>], edi
   72 0f ?? jb basic block L32
  
  L31: 8b 06 ?? mov eax, dword ds:[esi]
   c6 04 38 00 ?? mov byte ds:[eax + edi], 0
   5f ?? pop edi
   8b c6 ?? mov eax, esi
   5e ?? pop esi
   5b ?? pop ebx
   5d ?? pop ebp
   c2 08 00 ?? ret 8
  
  L32: 8b c6 ?? mov eax, esi
   c6 04 38 00 ?? mov byte ds:[eax + edi], 0
  
  L33: 5f ?? pop edi
   8b c6 ?? mov eax, esi
   5e ?? pop esi
   5b ?? pop ebx
   5d ?? pop ebp
   c2 08 00 ?? ret 8
  
  