Disassembly: 
  L1: 55 ?? push ebp
   8b ec ?? mov ebp, esp
   57 ?? push edi
   56 ?? push esi
   8b 75 0c ?? mov esi, dword ss:[ebp + 12]
   8b 4d 10 ?? mov ecx, dword ss:[ebp + 0x10<16>]
   8b 7d 08 ?? mov edi, dword ss:[ebp + 8]
   8b c1 ?? mov eax, ecx
   8b d1 ?? mov edx, ecx
   03 c6 ?? add eax, esi
   3b fe ?? cmp edi, esi
   76 08 ?? jbe basic block L3
  
  L2: 3b f8 ?? cmp edi, eax
   0f 82 a4 01 00 00 ?? jb basic block L40
  
  L3: 81 f9 00 01 00 00 ?? cmp ecx, 0x00000100<256>
   72 1f ?? jb basic block L7
  
  L4: 83 3d dc 8b 42 00 00 ?? cmp dword ds:[0x00428bdc], 0
   74 16 ?? je basic block L7
  
  L5: 57 ?? push edi
   56 ?? push esi
   83 e7 0f ?? and edi, 15
   83 e6 0f ?? and esi, 15
   3b fe ?? cmp edi, esi
   5e ?? pop esi
   5f ?? pop edi
   75 08 ?? jne basic block L7
  
  L6: 5e ?? pop esi
   5f ?? pop edi
   5d ?? pop ebp
   e9 51 8d 00 00 ?? jmp function 0x0040f6f8
  
  L7: f7 c7 03 00 00 00 ?? test edi, 3
   75 15 ?? jne basic block L11
  
  L8: c1 e9 02 ?? shr ecx, 2
   83 e2 03 ?? and edx, 3
   83 f9 08 ?? cmp ecx, 8
   72 2a ?? jb basic block L15
  
  L9: f3 a5 ?? rep_movsd
   ff 24 95 d4 6a 40 00 ?? jmp dword ds:[0x00406ad4 + edx * 4]
  
  L10: 90 ?? nop
  
  L11: 8b c7 ?? mov eax, edi
   ba 03 00 00 00 ?? mov edx, 3
   83 e9 04 ?? sub ecx, 4
   72 0c ?? jb basic block L13
  
  L12: 83 e0 03 ?? and eax, 3
   03 c8 ?? add ecx, eax
   ff 24 85 e8 69 40 00 ?? jmp dword ds:[0x004069e8 + eax * 4]
  
  L13: ff 24 8d e4 6a 40 00 ?? jmp dword ds:[basic block L32 + ecx * 4]
  
  L14: 90 ?? nop
  
  L15: ff 24 8d 68 6a 40 00 ?? jmp dword ds:[0x00406a68 + ecx * 4]
  
  0x004069ec: f8 69 40 00 24 6a 40 00 48 6a 40 00 |.i@.$j@.Hj@.|
  
  L16: 23 d1 ?? and edx, ecx
   8a 06 ?? mov al, byte ds:[esi]
   88 07 ?? mov byte ds:[edi], al
   8a 46 01 ?? mov al, byte ds:[esi + 1]
   88 47 01 ?? mov byte ds:[edi + 1], al
   8a 46 02 ?? mov al, byte ds:[esi + 2]
   c1 e9 02 ?? shr ecx, 2
   88 47 02 ?? mov byte ds:[edi + 2], al
   83 c6 03 ?? add esi, 3
   83 c7 03 ?? add edi, 3
   83 f9 08 ?? cmp ecx, 8
   72 cc ?? jb basic block L15
  
  L17: f3 a5 ?? rep_movsd
   ff 24 95 d4 6a 40 00 ?? jmp dword ds:[0x00406ad4 + edx * 4]
  
  L18: 8d 49 00 ?? lea ecx, ds:[ecx + 0]
  
  L19: 23 d1 ?? and edx, ecx
   8a 06 ?? mov al, byte ds:[esi]
   88 07 ?? mov byte ds:[edi], al
   8a 46 01 ?? mov al, byte ds:[esi + 1]
   c1 e9 02 ?? shr ecx, 2
   88 47 01 ?? mov byte ds:[edi + 1], al
   83 c6 02 ?? add esi, 2
   83 c7 02 ?? add edi, 2
   83 f9 08 ?? cmp ecx, 8
   72 a6 ?? jb basic block L15
  
  L20: f3 a5 ?? rep_movsd
   ff 24 95 d4 6a 40 00 ?? jmp dword ds:[0x00406ad4 + edx * 4]
  
  L21: 90 ?? nop
  
  L22: 23 d1 ?? and edx, ecx
   8a 06 ?? mov al, byte ds:[esi]
   88 07 ?? mov byte ds:[edi], al
   83 c6 01 ?? add esi, 1
   c1 e9 02 ?? shr ecx, 2
   83 c7 01 ?? add edi, 1
   83 f9 08 ?? cmp ecx, 8
   72 88 ?? jb basic block L15
  
  L23: f3 a5 ?? rep_movsd
   ff 24 95 d4 6a 40 00 ?? jmp dword ds:[0x00406ad4 + edx * 4]
  
  0x00406a68: cb 6a 40 00 b8 6a 40 00 b0 6a 40 00 a8 6a 40 00 |.j@..j@..j@..j@.|
  0x00406a78: a0 6a 40 00 98 6a 40 00 90 6a 40 00 88 6a 40 00 |.j@..j@..j@..j@.|
  
  L24: 8b 44 8e e4 ?? mov eax, dword ds:[esi + ecx * 4 + 0xe4<228,-28>]
   89 44 8f e4 ?? mov dword ds:[edi + ecx * 4 + 0xe4<228,-28>], eax
  
  L25: 8b 44 8e e8 ?? mov eax, dword ds:[esi + ecx * 4 + 0xe8<232,-24>]
   89 44 8f e8 ?? mov dword ds:[edi + ecx * 4 + 0xe8<232,-24>], eax
  
  L26: 8b 44 8e ec ?? mov eax, dword ds:[esi + ecx * 4 + 0xec<236,-20>]
   89 44 8f ec ?? mov dword ds:[edi + ecx * 4 + 0xec<236,-20>], eax
  
  L27: 8b 44 8e f0 ?? mov eax, dword ds:[esi + ecx * 4 + 0xf0<240,-16>]
   89 44 8f f0 ?? mov dword ds:[edi + ecx * 4 + 0xf0<240,-16>], eax
  
  L28: 8b 44 8e f4 ?? mov eax, dword ds:[esi + ecx * 4 + 0xf4<244,-12>]
   89 44 8f f4 ?? mov dword ds:[edi + ecx * 4 + 0xf4<244,-12>], eax
  
  L29: 8b 44 8e f8 ?? mov eax, dword ds:[esi + ecx * 4 + 0xf8<248,-8>]
   89 44 8f f8 ?? mov dword ds:[edi + ecx * 4 + 0xf8<248,-8>], eax
  
  L30: 8b 44 8e fc ?? mov eax, dword ds:[esi + ecx * 4 + 0xfc<252,-4>]
   89 44 8f fc ?? mov dword ds:[edi + ecx * 4 + 0xfc<252,-4>], eax
   8d 04 8d 00 00 00 00 ?? lea eax, ds:[0 + ecx * 4]
   03 f0 ?? add esi, eax
   03 f8 ?? add edi, eax
  
  L31: ff 24 95 d4 6a 40 00 ?? jmp dword ds:[0x00406ad4 + edx * 4]
  
  0x00406ad4: e4 6a 40 00 ec 6a 40 00 f8 6a 40 00 0c 6b 40 00 |.j@..j@..j@..k@.|
  
  L32: 8b 45 08 ?? mov eax, dword ss:[ebp + 8]
   5e ?? pop esi
   5f ?? pop edi
   c9 ?? leave
   c3 ?? ret
  
  L33: 90 ?? nop
  
  L34: 8a 06 ?? mov al, byte ds:[esi]
   88 07 ?? mov byte ds:[edi], al
   8b 45 08 ?? mov eax, dword ss:[ebp + 8]
   5e ?? pop esi
   5f ?? pop edi
   c9 ?? leave
   c3 ?? ret
  
  L35: 90 ?? nop
  
  L36: 8a 06 ?? mov al, byte ds:[esi]
   88 07 ?? mov byte ds:[edi], al
   8a 46 01 ?? mov al, byte ds:[esi + 1]
   88 47 01 ?? mov byte ds:[edi + 1], al
   8b 45 08 ?? mov eax, dword ss:[ebp + 8]
   5e ?? pop esi
   5f ?? pop edi
   c9 ?? leave
   c3 ?? ret
  
  L37: 8d 49 00 ?? lea ecx, ds:[ecx + 0]
  
  L38: 8a 06 ?? mov al, byte ds:[esi]
   88 07 ?? mov byte ds:[edi], al
   8a 46 01 ?? mov al, byte ds:[esi + 1]
   88 47 01 ?? mov byte ds:[edi + 1], al
   8a 46 02 ?? mov al, byte ds:[esi + 2]
   88 47 02 ?? mov byte ds:[edi + 2], al
   8b 45 08 ?? mov eax, dword ss:[ebp + 8]
   5e ?? pop esi
   5f ?? pop edi
   c9 ?? leave
   c3 ?? ret
  
  L39: 90 ?? nop
  
  L40: 8d 74 31 fc ?? lea esi, ds:[ecx + esi + 0xfc<252,-4>]
   8d 7c 39 fc ?? lea edi, ds:[ecx + edi + 0xfc<252,-4>]
   f7 c7 03 00 00 00 ?? test edi, 3
   75 24 ?? jne basic block L46
  
  L41: c1 e9 02 ?? shr ecx, 2
   83 e2 03 ?? and edx, 3
   83 f9 08 ?? cmp ecx, 8
   72 0d ?? jb basic block L44
  
  L42: fd ?? std
   f3 a5 ?? rep_movsd
   fc ?? cld
   ff 24 95 70 6c 40 00 ?? jmp dword ds:[0x00406c70 + edx * 4]
  
  L43: 8b ff ?? mov edi, edi
  
  L44: f7 d9 ?? neg ecx
   ff 24 8d 20 6c 40 00 ?? jmp dword ds:[0x00406c20<"gl@"> + ecx * 4]
  
  L45: 8d 49 00 ?? lea ecx, ds:[ecx + 0]
  
  L46: 8b c7 ?? mov eax, edi
   ba 03 00 00 00 ?? mov edx, 3
   83 f9 04 ?? cmp ecx, 4
   72 0c ?? jb basic block L48
  
  L47: 83 e0 03 ?? and eax, 3
   2b c8 ?? sub ecx, eax
   ff 24 85 74 6b 40 00 ?? jmp dword ds:[0x00406b74 + eax * 4]
  
  L48: ff 24 8d 70 6c 40 00 ?? jmp dword ds:[0x00406c70 + ecx * 4]
  
  0x00406b78: 84 6b 40 00 a8 6b 40 00 d0 6b 40 00 |.k@..k@..k@.|
  
  L49: 8a 46 03 ?? mov al, byte ds:[esi + 3]
   23 d1 ?? and edx, ecx
   88 47 03 ?? mov byte ds:[edi + 3], al
   83 ee 01 ?? sub esi, 1
   c1 e9 02 ?? shr ecx, 2
   83 ef 01 ?? sub edi, 1
   83 f9 08 ?? cmp ecx, 8
   72 b2 ?? jb basic block L44
  
  L50: fd ?? std
   f3 a5 ?? rep_movsd
   fc ?? cld
   ff 24 95 70 6c 40 00 ?? jmp dword ds:[0x00406c70 + edx * 4]
  
  L51: 8d 49 00 ?? lea ecx, ds:[ecx + 0]
  
  L52: 8a 46 03 ?? mov al, byte ds:[esi + 3]
   23 d1 ?? and edx, ecx
   88 47 03 ?? mov byte ds:[edi + 3], al
   8a 46 02 ?? mov al, byte ds:[esi + 2]
   c1 e9 02 ?? shr ecx, 2
   88 47 02 ?? mov byte ds:[edi + 2], al
   83 ee 02 ?? sub esi, 2
   83 ef 02 ?? sub edi, 2
   83 f9 08 ?? cmp ecx, 8
   72 88 ?? jb basic block L44
  
  L53: fd ?? std
   f3 a5 ?? rep_movsd
   fc ?? cld
   ff 24 95 70 6c 40 00 ?? jmp dword ds:[0x00406c70 + edx * 4]
  
  L54: 90 ?? nop
  
  L55: 8a 46 03 ?? mov al, byte ds:[esi + 3]
   23 d1 ?? and edx, ecx
   88 47 03 ?? mov byte ds:[edi + 3], al
   8a 46 02 ?? mov al, byte ds:[esi + 2]
   88 47 02 ?? mov byte ds:[edi + 2], al
   8a 46 01 ?? mov al, byte ds:[esi + 1]
   c1 e9 02 ?? shr ecx, 2
   88 47 01 ?? mov byte ds:[edi + 1], al
   83 ee 03 ?? sub esi, 3
   83 ef 03 ?? sub edi, 3
   83 f9 08 ?? cmp ecx, 8
   0f 82 56 ff ff ff ?? jb basic block L44
  
  L56: fd ?? std
   f3 a5 ?? rep_movsd
   fc ?? cld
   ff 24 95 70 6c 40 00 ?? jmp dword ds:[0x00406c70 + edx * 4]
  
  0x00406c04: 24 6c 40 00 2c 6c 40 00 34 6c 40 00 3c 6c 40 00 |$l@.,l@.4l@.<l@.|
  0x00406c14: 44 6c 40 00 4c 6c 40 00 54 6c 40 00 67 6c 40 00 |Dl@.Ll@.Tl@.gl@.|
  
  L57: 8b 44 8e 1c ?? mov eax, dword ds:[esi + ecx * 4 + 0x1c<28>]
   89 44 8f 1c ?? mov dword ds:[edi + ecx * 4 + 0x1c<28>], eax
  
  L58: 8b 44 8e 18 ?? mov eax, dword ds:[esi + ecx * 4 + 0x18<24>]
   89 44 8f 18 ?? mov dword ds:[edi + ecx * 4 + 0x18<24>], eax
  
  L59: 8b 44 8e 14 ?? mov eax, dword ds:[esi + ecx * 4 + 0x14<20>]
   89 44 8f 14 ?? mov dword ds:[edi + ecx * 4 + 0x14<20>], eax
  
  L60: 8b 44 8e 10 ?? mov eax, dword ds:[esi + ecx * 4 + 0x10<16>]
   89 44 8f 10 ?? mov dword ds:[edi + ecx * 4 + 0x10<16>], eax
  
  L61: 8b 44 8e 0c ?? mov eax, dword ds:[esi + ecx * 4 + 12]
   89 44 8f 0c ?? mov dword ds:[edi + ecx * 4 + 12], eax
  
  L62: 8b 44 8e 08 ?? mov eax, dword ds:[esi + ecx * 4 + 8]
   89 44 8f 08 ?? mov dword ds:[edi + ecx * 4 + 8], eax
  
  L63: 8b 44 8e 04 ?? mov eax, dword ds:[esi + ecx * 4 + 4]
   89 44 8f 04 ?? mov dword ds:[edi + ecx * 4 + 4], eax
   8d 04 8d 00 00 00 00 ?? lea eax, ds:[0 + ecx * 4]
   03 f0 ?? add esi, eax
   03 f8 ?? add edi, eax
  
  L64: ff 24 95 70 6c 40 00 ?? jmp dword ds:[0x00406c70 + edx * 4]
  
  0x00406c70: 80 6c 40 00 88 6c 40 00 98 6c 40 00 ac 6c 40 00 |.l@..l@..l@..l@.|
  
  L65: 8b 45 08 ?? mov eax, dword ss:[ebp + 8]
   5e ?? pop esi
   5f ?? pop edi
   c9 ?? leave
   c3 ?? ret
  
  L66: 90 ?? nop
  
  L67: 8a 46 03 ?? mov al, byte ds:[esi + 3]
   88 47 03 ?? mov byte ds:[edi + 3], al
   8b 45 08 ?? mov eax, dword ss:[ebp + 8]
   5e ?? pop esi
   5f ?? pop edi
   c9 ?? leave
   c3 ?? ret
  
  L68: 8d 49 00 ?? lea ecx, ds:[ecx + 0]
  
  L69: 8a 46 03 ?? mov al, byte ds:[esi + 3]
   88 47 03 ?? mov byte ds:[edi + 3], al
   8a 46 02 ?? mov al, byte ds:[esi + 2]
   88 47 02 ?? mov byte ds:[edi + 2], al
   8b 45 08 ?? mov eax, dword ss:[ebp + 8]
   5e ?? pop esi
   5f ?? pop edi
   c9 ?? leave
   c3 ?? ret
  
  L70: 90 ?? nop
  
  L71: 8a 46 03 ?? mov al, byte ds:[esi + 3]
   88 47 03 ?? mov byte ds:[edi + 3], al
   8a 46 02 ?? mov al, byte ds:[esi + 2]
   88 47 02 ?? mov byte ds:[edi + 2], al
   8a 46 01 ?? mov al, byte ds:[esi + 1]
   88 47 01 ?? mov byte ds:[edi + 1], al
   8b 45 08 ?? mov eax, dword ss:[ebp + 8]
   5e ?? pop esi
   5f ?? pop edi
   c9 ?? leave
   c3 ?? ret
  
  