Disassembly: 
  L1: 57 ?? push edi
   56 ?? push esi
   55 ?? push ebp
   33 ff ?? xor edi, edi
   33 ed ?? xor ebp, ebp
   8b 44 24 14 ?? mov eax, dword ss:[esp + 0x14<20>]
   0b c0 ?? or eax, eax
   7d 15 ?? jge basic block L3
  
  L2: 47 ?? inc edi
   45 ?? inc ebp
   8b 54 24 10 ?? mov edx, dword ss:[esp + 0x10<16>]
   f7 d8 ?? neg eax
   f7 da ?? neg edx
   83 d8 00 ?? sbb eax, 0
   89 44 24 14 ?? mov dword ss:[esp + 0x14<20>], eax
   89 54 24 10 ?? mov dword ss:[esp + 0x10<16>], edx
  
  L3: 8b 44 24 1c ?? mov eax, dword ss:[esp + 0x1c<28>]
   0b c0 ?? or eax, eax
   7d 14 ?? jge basic block L5
  
  L4: 47 ?? inc edi
   8b 54 24 18 ?? mov edx, dword ss:[esp + 0x18<24>]
   f7 d8 ?? neg eax
   f7 da ?? neg edx
   83 d8 00 ?? sbb eax, 0
   89 44 24 1c ?? mov dword ss:[esp + 0x1c<28>], eax
   89 54 24 18 ?? mov dword ss:[esp + 0x18<24>], edx
  
  L5: 0b c0 ?? or eax, eax
   75 28 ?? jne basic block L7
  
  L6: 8b 4c 24 18 ?? mov ecx, dword ss:[esp + 0x18<24>]
   8b 44 24 14 ?? mov eax, dword ss:[esp + 0x14<20>]
   33 d2 ?? xor edx, edx
   f7 f1 ?? div ecx
   8b d8 ?? mov ebx, eax
   8b 44 24 10 ?? mov eax, dword ss:[esp + 0x10<16>]
   f7 f1 ?? div ecx
   8b f0 ?? mov esi, eax
   8b c3 ?? mov eax, ebx
   f7 64 24 18 ?? mul dword ss:[esp + 0x18<24>]
   8b c8 ?? mov ecx, eax
   8b c6 ?? mov eax, esi
   f7 64 24 18 ?? mul dword ss:[esp + 0x18<24>]
   03 d1 ?? add edx, ecx
   eb 47 ?? jmp basic block L16
  
  L7: 8b d8 ?? mov ebx, eax
   8b 4c 24 18 ?? mov ecx, dword ss:[esp + 0x18<24>]
   8b 54 24 14 ?? mov edx, dword ss:[esp + 0x14<20>]
   8b 44 24 10 ?? mov eax, dword ss:[esp + 0x10<16>]
  
  L8: d1 eb ?? shr ebx, 1
   d1 d9 ?? rcr ecx, 1
   d1 ea ?? shr edx, 1
   d1 d8 ?? rcr eax, 1
   0b db ?? or ebx, ebx
  
  L9: 75 f4 ?? jne basic block L8
  
  L10: f7 f1 ?? div ecx
   8b f0 ?? mov esi, eax
   f7 64 24 1c ?? mul dword ss:[esp + 0x1c<28>]
   8b c8 ?? mov ecx, eax
   8b 44 24 18 ?? mov eax, dword ss:[esp + 0x18<24>]
   f7 e6 ?? mul esi
   03 d1 ?? add edx, ecx
   72 0e ?? jb basic block L14
  
  L11: 3b 54 24 14 ?? cmp edx, dword ss:[esp + 0x14<20>]
   77 08 ?? ja basic block L14
  
  L12: 72 0f ?? jb basic block L15
  
  L13: 3b 44 24 10 ?? cmp eax, dword ss:[esp + 0x10<16>]
   76 09 ?? jbe basic block L15
  
  L14: 4e ?? dec esi
   2b 44 24 18 ?? sub eax, dword ss:[esp + 0x18<24>]
   1b 54 24 1c ?? sbb edx, dword ss:[esp + 0x1c<28>]
  
  L15: 33 db ?? xor ebx, ebx
  
  L16: 2b 44 24 10 ?? sub eax, dword ss:[esp + 0x10<16>]
   1b 54 24 14 ?? sbb edx, dword ss:[esp + 0x14<20>]
   4d ?? dec ebp
   79 07 ?? jns basic block L18
  
  L17: f7 da ?? neg edx
   f7 d8 ?? neg eax
   83 da 00 ?? sbb edx, 0
  
  L18: 8b ca ?? mov ecx, edx
   8b d3 ?? mov edx, ebx
   8b d9 ?? mov ebx, ecx
   8b c8 ?? mov ecx, eax
   8b c6 ?? mov eax, esi
   4f ?? dec edi
   75 07 ?? jne basic block L20
  
  L19: f7 da ?? neg edx
   f7 d8 ?? neg eax
   83 da 00 ?? sbb edx, 0
  
  L20: 5d ?? pop ebp
   5e ?? pop esi
   5f ?? pop edi
   c2 10 00 ?? ret 0x0010<16>
  
  