Disassembly: 
  L1: 8b ff ?? mov edi, edi
   55 ?? push ebp
   8b ec ?? mov ebp, esp
   53 ?? push ebx
   56 ?? push esi
   8b 75 08 ?? mov esi, dword ss:[ebp + 8]
   8b 46 0c ?? mov eax, dword ds:[esi + 12]
   8b c8 ?? mov ecx, eax
   80 e1 03 ?? and cl, 3
   33 db ?? xor ebx, ebx
   80 f9 02 ?? cmp cl, 2
   75 40 ?? jne basic block L11
  
  L2: a9 08 01 00 00 ?? test eax, 0x00000108<264>
   74 39 ?? je basic block L11
  
  L3: 8b 46 08 ?? mov eax, dword ds:[esi + 8]
   57 ?? push edi
   8b 3e ?? mov edi, dword ds:[esi]
   2b f8 ?? sub edi, eax
   85 ff ?? test edi, edi
   7e 2c ?? jle basic block L10
  
  L4: 57 ?? push edi
   50 ?? push eax
   56 ?? push esi
   e8 46 a0 00 00 ?? call function 0x00415073
  
  L5: 59 ?? pop ecx
   50 ?? push eax
   e8 ed a7 00 00 ?? call function 0x00415821
  
  L6: 83 c4 0c ?? add esp, 12
   3b c7 ?? cmp eax, edi
   75 0f ?? jne basic block L9
  
  L7: 8b 46 0c ?? mov eax, dword ds:[esi + 12]
   84 c0 ?? test al, al
   79 0f ?? jns basic block L10
  
  L8: 83 e0 fd ?? and eax, 0xfd<253,-3>
   89 46 0c ?? mov dword ds:[esi + 12], eax
   eb 07 ?? jmp basic block L10
  
  L9: 83 4e 0c 20 ?? or dword ds:[esi + 12], 0x20<32>
   83 cb ff ?? or ebx, 0xff<255,-1>
  
  L10: 5f ?? pop edi
  
  L11: 8b 46 08 ?? mov eax, dword ds:[esi + 8]
   83 66 04 00 ?? and dword ds:[esi + 4], 0
   89 06 ?? mov dword ds:[esi], eax
   5e ?? pop esi
   8b c3 ?? mov eax, ebx
   5b ?? pop ebx
   5d ?? pop ebp
   c3 ?? ret
  
  