Disassembly: 
  L1: 55 ?? push ebp
   8b ec ?? mov ebp, esp
   83 ec 1c ?? sub esp, 0x1c<28>
   89 7d f4 ?? mov dword ss:[ebp + 0xf4<244,-12>], edi
   89 75 f8 ?? mov dword ss:[ebp + 0xf8<248,-8>], esi
   89 5d fc ?? mov dword ss:[ebp + 0xfc<252,-4>], ebx
   8b 5d 0c ?? mov ebx, dword ss:[ebp + 12]
   8b c3 ?? mov eax, ebx
   99 ?? cdq
   8b c8 ?? mov ecx, eax
   8b 45 08 ?? mov eax, dword ss:[ebp + 8]
   33 ca ?? xor ecx, edx
   2b ca ?? sub ecx, edx
   83 e1 0f ?? and ecx, 15
   33 ca ?? xor ecx, edx
   2b ca ?? sub ecx, edx
   99 ?? cdq
   8b f8 ?? mov edi, eax
   33 fa ?? xor edi, edx
   2b fa ?? sub edi, edx
   83 e7 0f ?? and edi, 15
   33 fa ?? xor edi, edx
   2b fa ?? sub edi, edx
   8b d1 ?? mov edx, ecx
   0b d7 ?? or edx, edi
   75 4a ?? jne basic block L7
  
  L2: 8b 75 10 ?? mov esi, dword ss:[ebp + 0x10<16>]
   8b ce ?? mov ecx, esi
   83 e1 7f ?? and ecx, 0x7f<127>
   89 4d e8 ?? mov dword ss:[ebp + 0xe8<232,-24>], ecx
   3b f1 ?? cmp esi, ecx
   74 13 ?? je basic block L5
  
  L3: 2b f1 ?? sub esi, ecx
   56 ?? push esi
   53 ?? push ebx
   50 ?? push eax
   e8 27 ff ff ff ?? call function 0x00411840
  
  L4: 83 c4 0c ?? add esp, 12
   8b 45 08 ?? mov eax, dword ss:[ebp + 8]
   8b 4d e8 ?? mov ecx, dword ss:[ebp + 0xe8<232,-24>]
  
  L5: 85 c9 ?? test ecx, ecx
   74 77 ?? je basic block L11
  
  L6: 8b 5d 10 ?? mov ebx, dword ss:[ebp + 0x10<16>]
   8b 55 0c ?? mov edx, dword ss:[ebp + 12]
   03 d3 ?? add edx, ebx
   2b d1 ?? sub edx, ecx
   89 55 ec ?? mov dword ss:[ebp + 0xec<236,-20>], edx
   03 d8 ?? add ebx, eax
   2b d9 ?? sub ebx, ecx
   89 5d f0 ?? mov dword ss:[ebp + 0xf0<240,-16>], ebx
   8b 75 ec ?? mov esi, dword ss:[ebp + 0xec<236,-20>]
   8b 7d f0 ?? mov edi, dword ss:[ebp + 0xf0<240,-16>]
   8b 4d e8 ?? mov ecx, dword ss:[ebp + 0xe8<232,-24>]
   f3 a4 ?? rep_movsb
   8b 45 08 ?? mov eax, dword ss:[ebp + 8]
   eb 53 ?? jmp basic block L11
  
  L7: 3b cf ?? cmp ecx, edi
   75 35 ?? jne basic block L10
  
  L8: f7 d9 ?? neg ecx
   83 c1 10 ?? add ecx, 0x10<16>
   89 4d e4 ?? mov dword ss:[ebp + 0xe4<228,-28>], ecx
   8b 75 0c ?? mov esi, dword ss:[ebp + 12]
   8b 7d 08 ?? mov edi, dword ss:[ebp + 8]
   8b 4d e4 ?? mov ecx, dword ss:[ebp + 0xe4<228,-28>]
   f3 a4 ?? rep_movsb
   8b 4d 08 ?? mov ecx, dword ss:[ebp + 8]
   03 4d e4 ?? add ecx, dword ss:[ebp + 0xe4<228,-28>]
   8b 55 0c ?? mov edx, dword ss:[ebp + 12]
   03 55 e4 ?? add edx, dword ss:[ebp + 0xe4<228,-28>]
   8b 45 10 ?? mov eax, dword ss:[ebp + 0x10<16>]
   2b 45 e4 ?? sub eax, dword ss:[ebp + 0xe4<228,-28>]
   50 ?? push eax
   52 ?? push edx
   51 ?? push ecx
   e8 4c ff ff ff ?? call basic block L1
  
  L9: 83 c4 0c ?? add esp, 12
   8b 45 08 ?? mov eax, dword ss:[ebp + 8]
   eb 1a ?? jmp basic block L11
  
  L10: 8b 75 0c ?? mov esi, dword ss:[ebp + 12]
   8b 7d 08 ?? mov edi, dword ss:[ebp + 8]
   8b 4d 10 ?? mov ecx, dword ss:[ebp + 0x10<16>]
   8b d1 ?? mov edx, ecx
   c1 e9 02 ?? shr ecx, 2
   f3 a5 ?? rep_movsd
   8b ca ?? mov ecx, edx
   83 e1 03 ?? and ecx, 3
   f3 a4 ?? rep_movsb
   8b 45 08 ?? mov eax, dword ss:[ebp + 8]
  
  L11: 8b 5d fc ?? mov ebx, dword ss:[ebp + 0xfc<252,-4>]
   8b 75 f8 ?? mov esi, dword ss:[ebp + 0xf8<248,-8>]
   8b 7d f4 ?? mov edi, dword ss:[ebp + 0xf4<244,-12>]
   8b e5 ?? mov esp, ebp
   5d ?? pop ebp
   c3 ?? ret
  
  