Disassembly: 
  L1: 8b ff ?? mov edi, edi
   55 ?? push ebp
   8b ec ?? mov ebp, esp
   51 ?? push ecx
   53 ?? push ebx
   33 db ?? xor ebx, ebx
   39 5d 14 ?? cmp dword ss:[ebp + 0x14<20>], ebx
   75 20 ?? jne basic block L5
  
  L2: e8 25 c8 ff ff ?? call function 0x0040e097
  
  L3: 53 ?? push ebx
   53 ?? push ebx
   53 ?? push ebx
   53 ?? push ebx
   53 ?? push ebx
   c7 00 16 00 00 00 ?? mov dword ds:[eax], 0x00000016<22>
   e8 55 89 ff ff ?? call function 0x0040a1d7
  
  L4: 83 c4 14 ?? add esp, 0x14<20>
   83 c8 ff ?? or eax, 0xff<255,-1>
   e9 d6 00 00 00 ?? jmp basic block L36
  
  L5: 56 ?? push esi
   8b 75 08 ?? mov esi, dword ss:[ebp + 8]
   57 ?? push edi
   39 5d 10 ?? cmp dword ss:[ebp + 0x10<16>], ebx
   75 10 ?? jne basic block L9
  
  L6: 3b f3 ?? cmp esi, ebx
   75 10 ?? jne basic block L10
  
  L7: 39 5d 0c ?? cmp dword ss:[ebp + 12], ebx
   75 12 ?? jne basic block L11
  
  L8: 33 c0 ?? xor eax, eax
   e9 ba 00 00 00 ?? jmp basic block L35
  
  L9: 3b f3 ?? cmp esi, ebx
   74 07 ?? je basic block L11
  
  L10: 8b 7d 0c ?? mov edi, dword ss:[ebp + 12]
   3b fb ?? cmp edi, ebx
   77 10 ?? ja basic block L13
  
  L11: e8 e0 c7 ff ff ?? call function 0x0040e097
  
  L12: c7 00 16 00 00 00 ?? mov dword ds:[eax], 0x00000016<22>
   e9 8f 00 00 00 ?? jmp basic block L32
  
  L13: e8 d0 c7 ff ff ?? call function 0x0040e097
  
  L14: ff 75 1c ?? push dword ss:[ebp + 0x1c<28>]
   ff 75 18 ?? push dword ss:[ebp + 0x18<24>]
   ff 75 14 ?? push dword ss:[ebp + 0x14<20>]
   3b 7d 10 ?? cmp edi, dword ss:[ebp + 0x10<16>]
   76 2d ?? jbe basic block L21
  
  L15: 8b 38 ?? mov edi, dword ds:[eax]
   8b 45 10 ?? mov eax, dword ss:[ebp + 0x10<16>]
   40 ?? inc eax
   50 ?? push eax
   56 ?? push esi
   68 96 43 42 00 ?? push function 0x00424396
   e8 b4 fd ff ff ?? call function 0x0041169b
  
  L16: 83 c4 18 ?? add esp, 0x18<24>
   83 f8 fe ?? cmp eax, 0xfe<254,-2>
   75 4c ?? jne basic block L28
  
  L17: e8 a3 c7 ff ff ?? call function 0x0040e097
  
  L18: 83 38 22 ?? cmp dword ds:[eax], 0x22<34>
   75 65 ?? jne basic block L34
  
  L19: e8 99 c7 ff ff ?? call function 0x0040e097
  
  L20: 89 38 ?? mov dword ds:[eax], edi
   eb 5c ?? jmp basic block L34
  
  L21: 8b 00 ?? mov eax, dword ds:[eax]
   57 ?? push edi
   56 ?? push esi
   68 96 43 42 00 ?? push function 0x00424396
   89 45 fc ?? mov dword ss:[ebp + 0xfc<252,-4>], eax
   e8 88 fd ff ff ?? call function 0x0041169b
  
  L22: 83 c4 18 ?? add esp, 0x18<24>
   88 5c 3e ff ?? mov byte ds:[esi + edi + 0xff<255,-1>], bl
   83 f8 fe ?? cmp eax, 0xfe<254,-2>
   75 1c ?? jne basic block L28
  
  L23: 83 7d 10 ff ?? cmp dword ss:[ebp + 0x10<16>], 0xff<255,-1>
   75 1a ?? jne basic block L29
  
  L24: e8 6d c7 ff ff ?? call function 0x0040e097
  
  L25: 83 38 22 ?? cmp dword ds:[eax], 0x22<34>
   75 2f ?? jne basic block L34
  
  L26: e8 63 c7 ff ff ?? call function 0x0040e097
  
  L27: 8b 4d fc ?? mov ecx, dword ss:[ebp + 0xfc<252,-4>]
   89 08 ?? mov dword ds:[eax], ecx
   eb 23 ?? jmp basic block L34
  
  L28: 3b c3 ?? cmp eax, ebx
   7d 22 ?? jge basic block L35
  
  L29: 88 1e ?? mov byte ds:[esi], bl
   83 f8 fe ?? cmp eax, 0xfe<254,-2>
   75 18 ?? jne basic block L34
  
  L30: e8 4c c7 ff ff ?? call function 0x0040e097
  
  L31: c7 00 22 00 00 00 ?? mov dword ds:[eax], 0x00000022<34>
  
  L32: 53 ?? push ebx
   53 ?? push ebx
   53 ?? push ebx
   53 ?? push ebx
   53 ?? push ebx
   e8 7c 88 ff ff ?? call function 0x0040a1d7
  
  L33: 83 c4 14 ?? add esp, 0x14<20>
  
  L34: 83 c8 ff ?? or eax, 0xff<255,-1>
  
  L35: 5f ?? pop edi
   5e ?? pop esi
  
  L36: 5b ?? pop ebx
   c9 ?? leave
   c3 ?? ret
  
  