Disassembly: 
  L1: ff 36 ?? push dword ds:[esi]
   e8 47 41 ff ff ?? call function 0x00406180
  
  L2: ff 76 04 ?? push dword ds:[esi + 4]
   83 e8 03 ?? sub eax, 3
   f7 d8 ?? neg eax
   1b c0 ?? sbb eax, eax
   40 ?? inc eax
   89 46 10 ?? mov dword ds:[esi + 0x10<16>], eax
   e8 34 41 ff ff ?? call function 0x00406180
  
  L3: 83 e8 03 ?? sub eax, 3
   f7 d8 ?? neg eax
   1b c0 ?? sbb eax, eax
   83 66 18 00 ?? and dword ds:[esi + 0x18<24>], 0
   40 ?? inc eax
   83 7e 10 00 ?? cmp dword ds:[esi + 0x10<16>], 0
   59 ?? pop ecx
   59 ?? pop ecx
   89 46 14 ?? mov dword ds:[esi + 0x14<20>], eax
   74 05 ?? je basic block L5
  
  L4: 6a 02 ?? push 2
   58 ?? pop eax
   eb 07 ?? jmp basic block L6
  
  L5: 8b 16 ?? mov edx, dword ds:[esi]
   e8 dd fb ff ff ?? call function 0x00411c4c
  
  L6: 6a 01 ?? push 1
   68 73 1d 41 00 ?? push function 0x00411d73
   89 46 0c ?? mov dword ds:[esi + 12], eax
   ff 15 ac 92 42 00 ?? call dword ds:[0x004292ac]
  
  L7: 8b 46 08 ?? mov eax, dword ds:[esi + 8]
   a9 00 01 00 00 ?? test eax, 0x00000100<256>
   74 0b ?? je basic block L10
  
  L8: a9 00 02 00 00 ?? test eax, 0x00000200<512>
   74 04 ?? je basic block L10
  
  L9: a8 07 ?? test al, 7
   75 04 ?? jne basic block L11
  
  L10: 83 66 08 00 ?? and dword ds:[esi + 8], 0
  
  L11: c3 ?? ret
  
  