Disassembly: 
  L1: 8b ff ?? mov edi, edi
   55 ?? push ebp
   8b ec ?? mov ebp, esp
   53 ?? push ebx
   56 ?? push esi
   8b f1 ?? mov esi, ecx
   e8 53 fe ff ff ?? call function 0x00404ba6
  
  L2: 8b 45 08 ?? mov eax, dword ss:[ebp + 8]
   33 db ?? xor ebx, ebx
   6a 20 ?? push 0x20<32>
   8b ce ?? mov ecx, esi
   89 46 28 ?? mov dword ds:[esi + 0x28<40>], eax
   89 5e 2c ?? mov dword ds:[esi + 0x2c<44>], ebx
   e8 e3 fe ff ff ?? call function 0x00404c4a
  
  L3: 88 46 30 ?? mov byte ds:[esi + 0x30<48>], al
   39 5e 28 ?? cmp dword ds:[esi + 0x28<40>], ebx
   75 0f ?? jne basic block L5
  
  L4: 8b 46 08 ?? mov eax, dword ds:[esi + 8]
   53 ?? push ebx
   83 c8 04 ?? or eax, 4
   50 ?? push eax
   8b ce ?? mov ecx, esi
   e8 63 c3 ff ff ?? call function 0x004010e1
  
  L5: 38 5d 0c ?? cmp byte ss:[ebp + 12], bl
   74 09 ?? je basic block L8
  
  L6: 56 ?? push esi
   e8 95 0b 00 00 ?? call function 0x0040591e
  
  L7: 59 ?? pop ecx
   eb 03 ?? jmp basic block L9
  
  L8: 89 5e 04 ?? mov dword ds:[esi + 4], ebx
  
  L9: 5e ?? pop esi
   5b ?? pop ebx
   5d ?? pop ebp
   c2 08 00 ?? ret 8
  
  