Disassembly: 
  L1: 56 ?? push esi
   8b f1 ?? mov esi, ecx
   8b 46 14 ?? mov eax, dword ds:[esi + 0x14<20>]
   83 f8 10 ?? cmp eax, 0x10<16>
   72 45 ?? jb basic block L14
  
  L2: 8b 0e ?? mov ecx, dword ds:[esi]
   40 ?? inc eax
   3d 00 10 00 00 ?? cmp eax, 0x00001000<4096>
   72 32 ?? jb basic block L12
  
  L3: f6 c1 1f ?? test cl, 0x1f<31>
   74 06 ?? je basic block L5
  
  L4: ff 15 08 41 40 00 ?? call dword ds:[0x00404108<"DQ@">]
  
  L5: 8b 41 fc ?? mov eax, dword ds:[ecx + 0xfc<252,-4>]
   3b c1 ?? cmp eax, ecx
   72 06 ?? jb basic block L7
  
  L6: ff 15 08 41 40 00 ?? call dword ds:[0x00404108<"DQ@">]
  
  L7: 2b c8 ?? sub ecx, eax
   83 f9 04 ?? cmp ecx, 4
   73 06 ?? jae basic block L9
  
  L8: ff 15 08 41 40 00 ?? call dword ds:[0x00404108<"DQ@">]
  
  L9: 83 f9 23 ?? cmp ecx, 0x23<35>
   76 06 ?? jbe basic block L11
  
  L10: ff 15 08 41 40 00 ?? call dword ds:[0x00404108<"DQ@">]
  
  L11: 8b c8 ?? mov ecx, eax
  
  L12: 51 ?? push ecx
   e8 1b 0f 00 00 ?? call function 0x00402228
  
  L13: 83 c4 04 ?? add esp, 4
  
  L14: c7 46 14 0f 00 00 00 ?? mov dword ds:[esi + 0x14<20>], 15
   83 7e 14 10 ?? cmp dword ds:[esi + 0x14<20>], 0x10<16>
   c7 46 10 00 00 00 00 ?? mov dword ds:[esi + 0x10<16>], 0
   72 02 ?? jb basic block L16
  
  L15: 8b 36 ?? mov esi, dword ds:[esi]
  
  L16: c6 06 00 ?? mov byte ds:[esi], 0
   5e ?? pop esi
   c3 ?? ret
  
  