Disassembly: 
  L1: 55 ?? push ebp
   8b ec ?? mov ebp, esp
   51 ?? push ecx
   8b 45 08 ?? mov eax, dword ss:[ebp + 8]
   53 ?? push ebx
   8b d9 ?? mov ebx, ecx
   57 ?? push edi
   3d ff ff ff 7f ?? cmp eax, 0x7fffffff
   0f 87 db 00 00 00 ?? ja basic block L24
  
  L2: 8b 4b 14 ?? mov ecx, dword ds:[ebx + 0x14<20>]
   56 ?? push esi
   8b f0 ?? mov esi, eax
   89 4d fc ?? mov dword ss:[ebp + 0xfc<252,-4>], ecx
   83 ce 0f ?? or esi, 15
   81 fe ff ff ff 7f ?? cmp esi, 0x7fffffff
   76 07 ?? jbe basic block L4
  
  L3: be ff ff ff 7f ?? mov esi, 0x7fffffff
   eb 1e ?? jmp basic block L7
  
  L4: 8b d1 ?? mov edx, ecx
   b8 ff ff ff 7f ?? mov eax, 0x7fffffff
   d1 ea ?? shr edx, 1
   2b c2 ?? sub eax, edx
   3b c8 ?? cmp ecx, eax
   76 07 ?? jbe basic block L6
  
  L5: be ff ff ff 7f ?? mov esi, 0x7fffffff
   eb 08 ?? jmp basic block L7
  
  L6: 8d 04 0a ?? lea eax, ds:[edx + ecx]
   3b f0 ?? cmp esi, eax
   0f 42 f0 ?? cmovb esi, eax
  
  L7: 8d 4e 01 ?? lea ecx, ds:[esi + 1]
   81 f9 00 10 00 00 ?? cmp ecx, 0x00001000<4096>
   72 23 ?? jb basic block L11
  
  L8: 8d 41 23 ?? lea eax, ds:[ecx + 0x23<35>]
   83 ca ff ?? or edx, 0xff<255,-1>
   3b c1 ?? cmp eax, ecx
   0f 46 c2 ?? cmovbe eax, edx
   50 ?? push eax
   e8 a2 04 00 00 ?? call function 0x004020cd
  
  L9: 83 c4 04 ?? add esp, 4
   85 c0 ?? test eax, eax
   74 79 ?? je basic block L23
  
  L10: 8d 78 23 ?? lea edi, ds:[eax + 0x23<35>]
   83 e7 e0 ?? and edi, 0xe0<224,-32>
   89 47 fc ?? mov dword ds:[edi + 0xfc<252,-4>], eax
   eb 13 ?? jmp basic block L15
  
  L11: 85 c9 ?? test ecx, ecx
   74 0d ?? je basic block L14
  
  L12: 51 ?? push ecx
   e8 86 04 00 00 ?? call function 0x004020cd
  
  L13: 83 c4 04 ?? add esp, 4
   8b f8 ?? mov edi, eax
   eb 02 ?? jmp basic block L15
  
  L14: 33 ff ?? xor edi, edi
  
  L15: 8b 45 08 ?? mov eax, dword ss:[ebp + 8]
   50 ?? push eax
   68 f0 41 40 00 ?? push 0x004041f0<"bar">
   57 ?? push edi
   89 43 10 ?? mov dword ds:[ebx + 0x10<16>], eax
   89 73 14 ?? mov dword ds:[ebx + 0x14<20>], esi
   e8 67 17 00 00 ?? call function 0x004033cc
  
  L16: 8b 45 08 ?? mov eax, dword ss:[ebp + 8]
   83 c4 0c ?? add esp, 12
   8b 4d fc ?? mov ecx, dword ss:[ebp + 0xfc<252,-4>]
   c6 04 07 00 ?? mov byte ds:[edi + eax], 0
   5e ?? pop esi
   83 f9 10 ?? cmp ecx, 0x10<16>
   72 27 ?? jb basic block L22
  
  L17: 8b 03 ?? mov eax, dword ds:[ebx]
   41 ?? inc ecx
   81 f9 00 10 00 00 ?? cmp ecx, 0x00001000<4096>
   72 12 ?? jb basic block L20
  
  L18: 8b 50 fc ?? mov edx, dword ds:[eax + 0xfc<252,-4>]
   83 c1 23 ?? add ecx, 0x23<35>
   2b c2 ?? sub eax, edx
   83 c0 fc ?? add eax, 0xfc<252,-4>
   83 f8 1f ?? cmp eax, 0x1f<31>
   77 18 ?? ja basic block L23
  
  L19: 8b c2 ?? mov eax, edx
  
  L20: 51 ?? push ecx
   50 ?? push eax
   e8 61 04 00 00 ?? call function 0x004020fd
  
  L21: 83 c4 08 ?? add esp, 8
  
  L22: 89 3b ?? mov dword ds:[ebx], edi
   8b c3 ?? mov eax, ebx
   5f ?? pop edi
   5b ?? pop ebx
   8b e5 ?? mov esp, ebp
   5d ?? pop ebp
   c2 0c 00 ?? ret 12
  
  L23: ff 15 f4 40 40 00 ?? call dword ds:[0x004040f4]
  
  L24: e8 ba 00 00 00 ?? call function 0x00401d70
  
  L25: cc ?? int3
  
  L26: cc ?? int3
  
  L27: cc ?? int3
  
  L28: cc ?? int3
  
  L29: cc ?? int3
  
  L30: cc ?? int3
  
  L31: cc ?? int3
  
  L32: cc ?? int3
  
  L33: cc ?? int3
  
  L34: cc ?? int3
  
  L35: 55 ?? push ebp
   8b ec ?? mov ebp, esp
   8b 45 08 ?? mov eax, dword ss:[ebp + 8]
   8b 00 ?? mov eax, dword ds:[eax]
   89 02 ?? mov dword ds:[edx], eax
   5d ?? pop ebp
   c3 ?? ret
  
  