Disassembly: 
  L1: 8b ff ?? mov edi, edi
   55 ?? push ebp
   8b ec ?? mov ebp, esp
   83 ec 7c ?? sub esp, 0x7c<124>
   a1 3c 70 42 00 ?? mov eax, dword ds:[0x0042703c]
   33 c5 ?? xor eax, ebp
   89 45 fc ?? mov dword ss:[ebp + 0xfc<252,-4>], eax
   53 ?? push ebx
   56 ?? push esi
   57 ?? push edi
   8b 7d 08 ?? mov edi, dword ss:[ebp + 8]
   e8 85 18 ff ff ?? call function 0x00403605
  
  L2: 8b f0 ?? mov esi, eax
   8b d7 ?? mov edx, edi
   81 c6 9c 00 00 00 ?? add esi, 0x0000009c<156>
   e8 79 fe ff ff ?? call function 0x00411c08
  
  L3: 8b 1d a8 92 42 00 ?? mov ebx, dword ds:[0x004292a8]
   8b f8 ?? mov edi, eax
   6a 78 ?? push 0x78<120>
   8d 45 84 ?? lea eax, ss:[ebp + 0x84<132,-124>]
   50 ?? push eax
   8b 46 14 ?? mov eax, dword ds:[esi + 0x14<20>]
   f7 d8 ?? neg eax
   1b c0 ?? sbb eax, eax
   25 05 f0 ff ff ?? and eax, 0xfffff005<4294963205,-4091>
   05 02 10 00 00 ?? add eax, 0x00001002<4098>
   50 ?? push eax
   57 ?? push edi
   ff d3 ?? call ebx
  
  L4: 85 c0 ?? test eax, eax
   75 0c ?? jne basic block L6
  
  L5: 83 66 08 00 ?? and dword ds:[esi + 8], 0
   33 c0 ?? xor eax, eax
   40 ?? inc eax
   e9 62 01 00 00 ?? jmp basic block L47
  
  L6: 8d 45 84 ?? lea eax, ss:[ebp + 0x84<132,-124>]
   50 ?? push eax
   ff 76 04 ?? push dword ds:[esi + 4]
   e8 2f 4c 00 00 ?? call function 0x004169fd
  
  L7: 59 ?? pop ecx
   59 ?? pop ecx
   85 c0 ?? test eax, eax
   0f 85 91 00 00 00 ?? jne basic block L25
  
  L8: 6a 78 ?? push 0x78<120>
   8d 45 84 ?? lea eax, ss:[ebp + 0x84<132,-124>]
   50 ?? push eax
   8b 46 10 ?? mov eax, dword ds:[esi + 0x10<16>]
   f7 d8 ?? neg eax
   1b c0 ?? sbb eax, eax
   25 02 f0 ff ff ?? and eax, 0xfffff002<4294963202,-4094>
   05 01 10 00 00 ?? add eax, 0x00001001<4097>
   50 ?? push eax
   57 ?? push edi
   ff d3 ?? call ebx
  
  L9: 85 c0 ?? test eax, eax
   74 bf ?? je basic block L5
  
  L10: 8d 45 84 ?? lea eax, ss:[ebp + 0x84<132,-124>]
   50 ?? push eax
   ff 36 ?? push dword ds:[esi]
   e8 fb 4b 00 00 ?? call function 0x004169fd
  
  L11: 59 ?? pop ecx
   59 ?? pop ecx
   85 c0 ?? test eax, eax
   75 0c ?? jne basic block L13
  
  L12: 81 4e 08 04 03 00 00 ?? or dword ds:[esi + 8], 0x00000304<772>
   89 7e 18 ?? mov dword ds:[esi + 0x18<24>], edi
   eb 52 ?? jmp basic block L24
  
  L13: f6 46 08 02 ?? test byte ds:[esi + 8], 2
   75 4f ?? jne basic block L25
  
  L14: 8b 46 0c ?? mov eax, dword ds:[esi + 12]
   85 c0 ?? test eax, eax
   74 2c ?? je basic block L20
  
  L15: 50 ?? push eax
   8d 45 84 ?? lea eax, ss:[ebp + 0x84<132,-124>]
   50 ?? push eax
   ff 36 ?? push dword ds:[esi]
   e8 17 51 00 00 ?? call function 0x00416f44
  
  L16: 83 c4 0c ?? add esp, 12
   85 c0 ?? test eax, eax
   75 19 ?? jne basic block L20
  
  L17: ff 36 ?? push dword ds:[esi]
   83 4e 08 02 ?? or dword ds:[esi + 8], 2
   89 7e 1c ?? mov dword ds:[esi + 0x1c<28>], edi
   e8 2e 43 ff ff ?? call function 0x00406170
  
  L18: 59 ?? pop ecx
   3b 46 0c ?? cmp eax, dword ds:[esi + 12]
   75 21 ?? jne basic block L25
  
  L19: 89 7e 18 ?? mov dword ds:[esi + 0x18<24>], edi
   eb 1c ?? jmp basic block L25
  
  L20: 8b 56 08 ?? mov edx, dword ds:[esi + 8]
   f6 c2 01 ?? test dl, 1
   75 14 ?? jne basic block L25
  
  L21: 57 ?? push edi
   e8 89 fd ff ff ?? call function 0x00411be4
  
  L22: 59 ?? pop ecx
   85 c0 ?? test eax, eax
   74 09 ?? je basic block L25
  
  L23: 83 ca 01 ?? or edx, 1
   89 56 08 ?? mov dword ds:[esi + 8], edx
  
  L24: 89 7e 1c ?? mov dword ds:[esi + 0x1c<28>], edi
  
  L25: 8b 4e 08 ?? mov ecx, dword ds:[esi + 8]
   b8 00 03 00 00 ?? mov eax, 0x00000300<768>
   23 c8 ?? and ecx, eax
   3b c8 ?? cmp ecx, eax
   0f 84 9e 00 00 00 ?? je basic block L46
  
  L26: 6a 78 ?? push 0x78<120>
   8d 45 84 ?? lea eax, ss:[ebp + 0x84<132,-124>]
   50 ?? push eax
   8b 46 10 ?? mov eax, dword ds:[esi + 0x10<16>]
   f7 d8 ?? neg eax
   1b c0 ?? sbb eax, eax
   25 02 f0 ff ff ?? and eax, 0xfffff002<4294963202,-4094>
   05 01 10 00 00 ?? add eax, 0x00001001<4097>
   50 ?? push eax
   57 ?? push edi
   ff d3 ?? call ebx
  
  L27: 85 c0 ?? test eax, eax
   0f 84 18 ff ff ff ?? je basic block L5
  
  L28: 8d 45 84 ?? lea eax, ss:[ebp + 0x84<132,-124>]
   50 ?? push eax
   ff 36 ?? push dword ds:[esi]
   e8 54 4b 00 00 ?? call function 0x004169fd
  
  L29: 59 ?? pop ecx
   33 db ?? xor ebx, ebx
   59 ?? pop ecx
   85 c0 ?? test eax, eax
   75 2f ?? jne basic block L36
  
  L30: 81 4e 08 00 02 00 00 ?? or dword ds:[esi + 8], 0x00000200<512>
   8b 46 08 ?? mov eax, dword ds:[esi + 8]
   39 5e 10 ?? cmp dword ds:[esi + 0x10<16>], ebx
   74 0a ?? je basic block L32
  
  L31: 0d 00 01 00 00 ?? or eax, 0x00000100<256>
   89 46 08 ?? mov dword ds:[esi + 8], eax
   eb 47 ?? jmp basic block L44
  
  L32: 39 5e 0c ?? cmp dword ds:[esi + 12], ebx
   74 3b ?? je basic block L43
  
  L33: ff 36 ?? push dword ds:[esi]
   e8 9a 42 ff ff ?? call function 0x00406170
  
  L34: 59 ?? pop ecx
   3b 46 0c ?? cmp eax, dword ds:[esi + 12]
   75 2e ?? jne basic block L43
  
  L35: 6a 01 ?? push 1
   eb 1c ?? jmp basic block L41
  
  L36: 39 5e 10 ?? cmp dword ds:[esi + 0x10<16>], ebx
   75 34 ?? jne basic block L46
  
  L37: 39 5e 0c ?? cmp dword ds:[esi + 12], ebx
   74 2f ?? je basic block L46
  
  L38: 8d 45 84 ?? lea eax, ss:[ebp + 0x84<132,-124>]
   50 ?? push eax
   ff 36 ?? push dword ds:[esi]
   e8 08 4b 00 00 ?? call function 0x004169fd
  
  L39: 59 ?? pop ecx
   59 ?? pop ecx
   85 c0 ?? test eax, eax
   75 1e ?? jne basic block L46
  
  L40: 53 ?? push ebx
  
  L41: 57 ?? push edi
   8b ce ?? mov ecx, esi
   e8 eb fd ff ff ?? call function 0x00411cef
  
  L42: 59 ?? pop ecx
   59 ?? pop ecx
   85 c0 ?? test eax, eax
   74 0f ?? je basic block L46
  
  L43: 81 4e 08 00 01 00 00 ?? or dword ds:[esi + 8], 0x00000100<256>
  
  L44: 39 5e 18 ?? cmp dword ds:[esi + 0x18<24>], ebx
   75 03 ?? jne basic block L46
  
  L45: 89 7e 18 ?? mov dword ds:[esi + 0x18<24>], edi
  
  L46: 8b 46 08 ?? mov eax, dword ds:[esi + 8]
   c1 e8 02 ?? shr eax, 2
   f7 d0 ?? not eax
   83 e0 01 ?? and eax, 1
  
  L47: 8b 4d fc ?? mov ecx, dword ss:[ebp + 0xfc<252,-4>]
   5f ?? pop edi
   5e ?? pop esi
   33 cd ?? xor ecx, ebp
   5b ?? pop ebx
   e8 f3 f7 fe ff ?? call function 0x00401724
  
  L48: c9 ?? leave
   c2 04 00 ?? ret 4
  
  