Disassembly: 
  L1: 8b ff ?? mov edi, edi
   55 ?? push ebp
   8b ec ?? mov ebp, esp
   51 ?? push ecx
   56 ?? push esi
   8b 75 0c ?? mov esi, dword ss:[ebp + 12]
   56 ?? push esi
   e8 05 49 00 00 ?? call function 0x00415073
  
  L2: 89 45 0c ?? mov dword ss:[ebp + 12], eax
   8b 46 0c ?? mov eax, dword ds:[esi + 12]
   59 ?? pop ecx
   a8 82 ?? test al, 0x82<130,-126>
   75 17 ?? jne basic block L6
  
  L3: e8 19 d9 ff ff ?? call function 0x0040e097
  
  L4: c7 00 09 00 00 00 ?? mov dword ds:[eax], 9
  
  L5: 83 4e 0c 20 ?? or dword ds:[esi + 12], 0x20<32>
   83 c8 ff ?? or eax, 0xff<255,-1>
   e9 2f 01 00 00 ?? jmp basic block L41
  
  L6: a8 40 ?? test al, 0x40<64>
   74 0d ?? je basic block L9
  
  L7: e8 fe d8 ff ff ?? call function 0x0040e097
  
  L8: c7 00 22 00 00 00 ?? mov dword ds:[eax], 0x00000022<34>
   eb e3 ?? jmp basic block L5
  
  L9: 53 ?? push ebx
   33 db ?? xor ebx, ebx
   a8 01 ?? test al, 1
   74 16 ?? je basic block L12
  
  L10: 89 5e 04 ?? mov dword ds:[esi + 4], ebx
   a8 10 ?? test al, 0x10<16>
   0f 84 87 00 00 00 ?? je basic block L25
  
  L11: 8b 4e 08 ?? mov ecx, dword ds:[esi + 8]
   83 e0 fe ?? and eax, 0xfe<254,-2>
   89 0e ?? mov dword ds:[esi], ecx
   89 46 0c ?? mov dword ds:[esi + 12], eax
  
  L12: 8b 46 0c ?? mov eax, dword ds:[esi + 12]
   83 e0 ef ?? and eax, 0xef<239,-17>
   83 c8 02 ?? or eax, 2
   89 46 0c ?? mov dword ds:[esi + 12], eax
   89 5e 04 ?? mov dword ds:[esi + 4], ebx
   89 5d fc ?? mov dword ss:[ebp + 0xfc<252,-4>], ebx
   a9 0c 01 00 00 ?? test eax, 0x0000010c<268>
   75 2c ?? jne basic block L21
  
  L13: e8 d8 b0 ff ff ?? call function 0x0040b8b4
  
  L14: 83 c0 20 ?? add eax, 0x20<32>
   3b f0 ?? cmp esi, eax
   74 0c ?? je basic block L17
  
  L15: e8 cc b0 ff ff ?? call function 0x0040b8b4
  
  L16: 83 c0 40 ?? add eax, 0x40<64>
   3b f0 ?? cmp esi, eax
   75 0d ?? jne basic block L19
  
  L17: ff 75 0c ?? push dword ss:[ebp + 12]
   e8 8e 1f 01 00 ?? call function 0x00422785
  
  L18: 59 ?? pop ecx
   85 c0 ?? test eax, eax
   75 07 ?? jne basic block L21
  
  L19: 56 ?? push esi
   e8 a3 48 00 00 ?? call function 0x004150a5
  
  L20: 59 ?? pop ecx
  
  L21: f7 46 0c 08 01 00 00 ?? test dword ds:[esi + 12], 0x00000108<264>
   57 ?? push edi
   0f 84 80 00 00 00 ?? je basic block L34
  
  L22: 8b 46 08 ?? mov eax, dword ds:[esi + 8]
   8b 3e ?? mov edi, dword ds:[esi]
   8d 48 01 ?? lea ecx, ds:[eax + 1]
   89 0e ?? mov dword ds:[esi], ecx
   8b 4e 18 ?? mov ecx, dword ds:[esi + 0x18<24>]
   2b f8 ?? sub edi, eax
   49 ?? dec ecx
   3b fb ?? cmp edi, ebx
   89 4e 04 ?? mov dword ds:[esi + 4], ecx
   7e 1d ?? jle basic block L26
  
  L23: 57 ?? push edi
   50 ?? push eax
   ff 75 0c ?? push dword ss:[ebp + 12]
   e8 ef 4f 00 00 ?? call function 0x00415821
  
  L24: 83 c4 0c ?? add esp, 12
   89 45 fc ?? mov dword ss:[ebp + 0xfc<252,-4>], eax
   eb 4d ?? jmp basic block L33
  
  L25: 83 c8 20 ?? or eax, 0x20<32>
   89 46 0c ?? mov dword ds:[esi + 12], eax
   83 c8 ff ?? or eax, 0xff<255,-1>
   eb 79 ?? jmp basic block L40
  
  L26: 8b 4d 0c ?? mov ecx, dword ss:[ebp + 12]
   83 f9 ff ?? cmp ecx, 0xff<255,-1>
   74 1b ?? je basic block L29
  
  L27: 83 f9 fe ?? cmp ecx, 0xfe<254,-2>
   74 16 ?? je basic block L29
  
  L28: 8b c1 ?? mov eax, ecx
   83 e0 1f ?? and eax, 0x1f<31>
   8b d1 ?? mov edx, ecx
   c1 fa 05 ?? sar edx, 5
   c1 e0 06 ?? shl eax, 6
   03 04 95 c0 6b 44 00 ?? add eax, dword ds:[0x00446bc0 + edx * 4]
   eb 05 ?? jmp basic block L30
  
  L29: b8 50 4b 44 00 ?? mov eax, 0x00444b50
  
  L30: f6 40 04 20 ?? test byte ds:[eax + 4], 0x20<32>
   74 14 ?? je basic block L33
  
  L31: 6a 02 ?? push 2
   53 ?? push ebx
   53 ?? push ebx
   51 ?? push ecx
   e8 ef 1d 01 00 ?? call function 0x0042266c
  
  L32: 23 c2 ?? and eax, edx
   83 c4 10 ?? add esp, 0x10<16>
   83 f8 ff ?? cmp eax, 0xff<255,-1>
   74 25 ?? je basic block L37
  
  L33: 8b 46 08 ?? mov eax, dword ds:[esi + 8]
   8a 4d 08 ?? mov cl, byte ss:[ebp + 8]
   88 08 ?? mov byte ds:[eax], cl
   eb 16 ?? jmp basic block L36
  
  L34: 33 ff ?? xor edi, edi
   47 ?? inc edi
   57 ?? push edi
   8d 45 08 ?? lea eax, ss:[ebp + 8]
   50 ?? push eax
   ff 75 0c ?? push dword ss:[ebp + 12]
   e8 80 4f 00 00 ?? call function 0x00415821
  
  L35: 83 c4 0c ?? add esp, 12
   89 45 fc ?? mov dword ss:[ebp + 0xfc<252,-4>], eax
  
  L36: 39 7d fc ?? cmp dword ss:[ebp + 0xfc<252,-4>], edi
   74 09 ?? je basic block L38
  
  L37: 83 4e 0c 20 ?? or dword ds:[esi + 12], 0x20<32>
   83 c8 ff ?? or eax, 0xff<255,-1>
   eb 08 ?? jmp basic block L39
  
  L38: 8b 45 08 ?? mov eax, dword ss:[ebp + 8]
   25 ff 00 00 00 ?? and eax, 0x000000ff<255>
  
  L39: 5f ?? pop edi
  
  L40: 5b ?? pop ebx
  
  L41: 5e ?? pop esi
   c9 ?? leave
   c3 ?? ret
  
  