Disassembly: 
  L1: 8b ff ?? mov edi, edi
   55 ?? push ebp
   8b ec ?? mov ebp, esp
   83 ec 7c ?? sub esp, 0x7c<124>
   a1 3c 80 42 00 ?? mov eax, dword ds:[0x0042803c]
   33 c5 ?? xor eax, ebp
   89 45 fc ?? mov dword ss:[ebp + 0xfc<252,-4>], eax
   56 ?? push esi
   57 ?? push edi
   8b 7d 08 ?? mov edi, dword ss:[ebp + 8]
   e8 8c 19 ff ff ?? call function 0x004037bf
  
  L2: 8b f0 ?? mov esi, eax
   8b d7 ?? mov edx, edi
   81 c6 9c 00 00 00 ?? add esi, 0x0000009c<156>
   e8 86 ff ff ff ?? call function 0x00411dc8
  
  L3: 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 15 a8 a2 42 00 ?? call dword ds:[0x0042a2a8]
  
  L4: 85 c0 ?? test eax, eax
   75 06 ?? jne basic block L6
  
  L5: 21 46 08 ?? and dword ds:[esi + 8], eax
   40 ?? inc eax
   eb 32 ?? jmp basic block L12
  
  L6: 8d 45 84 ?? lea eax, ss:[ebp + 0x84<132,-124>]
   50 ?? push eax
   ff 76 04 ?? push dword ds:[esi + 4]
   e8 44 4d 00 00 ?? call function 0x00416bbd
  
  L7: 59 ?? pop ecx
   59 ?? pop ecx
   85 c0 ?? test eax, eax
   75 15 ?? jne basic block L11
  
  L8: 57 ?? push edi
   e8 1f ff ff ff ?? call function 0x00411da4
  
  L9: 59 ?? pop ecx
   85 c0 ?? test eax, eax
   74 0a ?? je basic block L11
  
  L10: 83 4e 08 04 ?? or dword ds:[esi + 8], 4
   89 7e 1c ?? mov dword ds:[esi + 0x1c<28>], edi
   89 7e 18 ?? mov dword ds:[esi + 0x18<24>], edi
  
  L11: 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
  
  L12: 8b 4d fc ?? mov ecx, dword ss:[ebp + 0xfc<252,-4>]
   5f ?? pop edi
   33 cd ?? xor ecx, ebp
   5e ?? pop esi
   e8 33 fa fe ff ?? call function 0x004018de
  
  L13: c9 ?? leave
   c2 04 00 ?? ret 4
  
  