Disassembly: 
  L1: 55 ?? push ebp
   8b ec ?? mov ebp, esp
   53 ?? push ebx
   56 ?? push esi
   8b 75 0c ?? mov esi, dword ss:[ebp + 12]
   8b d9 ?? mov ebx, ecx
   81 fe ff ff ff 7f ?? cmp esi, 0x7fffffff
   0f 87 9f 00 00 00 ?? ja basic block L17
  
  L2: c7 43 14 0f 00 00 00 ?? mov dword ds:[ebx + 0x14<20>], 15
   83 fe 10 ?? cmp esi, 0x10<16>
   73 1c ?? jae basic block L5
  
  L3: 56 ?? push esi
   68 00 42 40 00 ?? push 0x00404200<"bar">
   53 ?? push ebx
   89 73 10 ?? mov dword ds:[ebx + 0x10<16>], esi
   e8 04 19 00 00 ?? call function 0x004032e5
  
  L4: 83 c4 0c ?? add esp, 12
   c6 04 1e 00 ?? mov byte ds:[esi + ebx], 0
   5e ?? pop esi
   5b ?? pop ebx
   5d ?? pop ebp
   c2 08 00 ?? ret 8
  
  L5: 57 ?? push edi
   8b fe ?? mov edi, esi
   83 cf 0f ?? or edi, 15
   81 ff ff ff ff 7f ?? cmp edi, 0x7fffffff
   76 13 ?? jbe basic block L8
  
  L6: b8 00 00 00 80 ?? mov eax, 0x80000000
   bf ff ff ff 7f ?? mov edi, 0x7fffffff
   8b c8 ?? mov ecx, eax
   e8 33 04 00 00 ?? call function 0x00401e40
  
  L7: eb 2e ?? jmp basic block L15
  
  L8: b8 16 00 00 00 ?? mov eax, 0x00000016<22>
   3b f8 ?? cmp edi, eax
   0f 42 f8 ?? cmovb edi, eax
   8d 47 01 ?? lea eax, ds:[edi + 1]
   3d 00 10 00 00 ?? cmp eax, 0x00001000<4096>
   72 09 ?? jb basic block L11
  
  L9: 8b c8 ?? mov ecx, eax
   e8 16 04 00 00 ?? call function 0x00401e40
  
  L10: eb 11 ?? jmp basic block L15
  
  L11: 85 c0 ?? test eax, eax
   74 0b ?? je basic block L14
  
  L12: 50 ?? push eax
   e8 ae 04 00 00 ?? call function 0x00401ee4
  
  L13: 83 c4 04 ?? add esp, 4
   eb 02 ?? jmp basic block L15
  
  L14: 33 c0 ?? xor eax, eax
  
  L15: 56 ?? push esi
   68 00 42 40 00 ?? push 0x00404200<"bar">
   50 ?? push eax
   89 45 0c ?? mov dword ss:[ebp + 12], eax
   89 03 ?? mov dword ds:[ebx], eax
   89 73 10 ?? mov dword ds:[ebx + 0x10<16>], esi
   89 7b 14 ?? mov dword ds:[ebx + 0x14<20>], edi
   e8 91 18 00 00 ?? call function 0x004032e5
  
  L16: 8b 45 0c ?? mov eax, dword ss:[ebp + 12]
   83 c4 0c ?? add esp, 12
   5f ?? pop edi
   c6 04 30 00 ?? mov byte ds:[eax + esi], 0
   5e ?? pop esi
   5b ?? pop ebx
   5d ?? pop ebp
   c2 08 00 ?? ret 8
  
  L17: e8 76 f8 ff ff ?? call function 0x004012e0
  
  L18: cc ?? int3
  
  L19: cc ?? int3
  
  L20: cc ?? int3
  
  L21: cc ?? int3
  
  L22: cc ?? int3
  
  L23: cc ?? int3
  
  