Disassembly: 
  L1: 8b ff ?? mov edi, edi
   55 ?? push ebp
   8b ec ?? mov ebp, esp
   83 ec 7c ?? sub esp, 0x7c<124>
   a1 70 80 42 00 ?? mov eax, dword ds:[0x00428070]
   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 c4 0e ff ff ?? call function 0x004036f1
  
  L2: 8b f0 ?? mov esi, eax
   8b d7 ?? mov edx, edi
   81 c6 9c 00 00 00 ?? add esi, 0x0000009c<156>
   e8 a8 fc ff ff ?? call function 0x004124e4
  
  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 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 15 94 a2 42 00 ?? call dword ds:[0x0042a294]
  
  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 5b ?? jmp basic block L19
  
  L6: 8d 45 84 ?? lea eax, ss:[ebp + 0x84<132,-124>]
   50 ?? push eax
   ff 36 ?? push dword ds:[esi]
   e8 08 44 00 00 ?? call function 0x00416c7a
  
  L7: 59 ?? pop ecx
   59 ?? pop ecx
   85 c0 ?? test eax, eax
   75 09 ?? jne basic block L10
  
  L8: 39 46 10 ?? cmp dword ds:[esi + 0x10<16>], eax
   75 30 ?? jne basic block L17
  
  L9: 6a 01 ?? push 1
   eb 1e ?? jmp basic block L15
  
  L10: 83 7e 10 00 ?? cmp dword ds:[esi + 0x10<16>], 0
   75 30 ?? jne basic block L18
  
  L11: 83 7e 0c 00 ?? cmp dword ds:[esi + 12], 0
   74 2a ?? je basic block L18
  
  L12: 8d 45 84 ?? lea eax, ss:[ebp + 0x84<132,-124>]
   50 ?? push eax
   ff 36 ?? push dword ds:[esi]
   e8 e2 43 00 00 ?? call function 0x00416c7a
  
  L13: 59 ?? pop ecx
   59 ?? pop ecx
   85 c0 ?? test eax, eax
   75 19 ?? jne basic block L18
  
  L14: 50 ?? push eax
  
  L15: 57 ?? push edi
   8b ce ?? mov ecx, esi
   e8 24 fd ff ff ?? call function 0x004125cb
  
  L16: 59 ?? pop ecx
   59 ?? pop ecx
   85 c0 ?? test eax, eax
   74 0a ?? je basic block L18
  
  L17: 83 4e 08 04 ?? or dword ds:[esi + 8], 4
   89 7e 18 ?? mov dword ds:[esi + 0x18<24>], edi
   89 7e 1c ?? mov dword ds:[esi + 0x1c<28>], edi
  
  L18: 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
  
  L19: 8b 4d fc ?? mov ecx, dword ss:[ebp + 0xfc<252,-4>]
   5f ?? pop edi
   33 cd ?? xor ecx, ebp
   5e ?? pop esi
   e8 e4 ee fe ff ?? call function 0x004017b2
  
  L20: c9 ?? leave
   c2 04 00 ?? ret 4
  
  