Disassembly: 
  L1: 8b ff ?? mov edi, edi
   55 ?? push ebp
   8b ec ?? mov ebp, esp
   83 ec 18 ?? sub esp, 0x18<24>
   53 ?? push ebx
   8b 5d 0c ?? mov ebx, dword ss:[ebp + 12]
   56 ?? push esi
   8b 73 08 ?? mov esi, dword ds:[ebx + 8]
   33 35 88 80 42 00 ?? xor esi, dword ds:[0x00428088]
   57 ?? push edi
   8b 06 ?? mov eax, dword ds:[esi]
   c6 45 ff 00 ?? mov byte ss:[ebp + 0xff<255,-1>], 0
   c7 45 f4 01 00 00 00 ?? mov dword ss:[ebp + 0xf4<244,-12>], 1
   8d 7b 10 ?? lea edi, ds:[ebx + 0x10<16>]
   83 f8 fe ?? cmp eax, 0xfe<254,-2>
   74 0d ?? je basic block L3
  
  L2: 8b 4e 04 ?? mov ecx, dword ds:[esi + 4]
   03 cf ?? add ecx, edi
   33 0c 38 ?? xor ecx, dword ds:[eax + edi]
   e8 3d c4 ff ff ?? call function 0x00401916
  
  L3: 8b 4e 0c ?? mov ecx, dword ds:[esi + 12]
   8b 46 08 ?? mov eax, dword ds:[esi + 8]
   03 cf ?? add ecx, edi
   33 0c 38 ?? xor ecx, dword ds:[eax + edi]
   e8 2d c4 ff ff ?? call function 0x00401916
  
  L4: 8b 45 08 ?? mov eax, dword ss:[ebp + 8]
   f6 40 04 66 ?? test byte ds:[eax + 4], 0x66<102>
   0f 85 16 01 00 00 ?? jne basic block L33
  
  L5: 8b 4d 10 ?? mov ecx, dword ss:[ebp + 0x10<16>]
   8d 55 e8 ?? lea edx, ss:[ebp + 0xe8<232,-24>]
   89 53 fc ?? mov dword ds:[ebx + 0xfc<252,-4>], edx
   8b 5b 0c ?? mov ebx, dword ds:[ebx + 12]
   89 45 e8 ?? mov dword ss:[ebp + 0xe8<232,-24>], eax
   89 4d ec ?? mov dword ss:[ebp + 0xec<236,-20>], ecx
   83 fb fe ?? cmp ebx, 0xfe<254,-2>
   74 5f ?? je basic block L17
  
  L6: 8d 49 00 ?? lea ecx, ds:[ecx + 0]
  
  L7: 8d 04 5b ?? lea eax, ds:[ebx + ebx * 2]
   8b 4c 86 14 ?? mov ecx, dword ds:[esi + eax * 4 + 0x14<20>]
   8d 44 86 10 ?? lea eax, ds:[esi + eax * 4 + 0x10<16>]
   89 45 f0 ?? mov dword ss:[ebp + 0xf0<240,-16>], eax
   8b 00 ?? mov eax, dword ds:[eax]
   89 45 f8 ?? mov dword ss:[ebp + 0xf8<248,-8>], eax
   85 c9 ?? test ecx, ecx
   74 14 ?? je basic block L12
  
  L8: 8b d7 ?? mov edx, edi
   e8 14 8e 00 00 ?? call function 0x0040e342
  
  L9: c6 45 ff 01 ?? mov byte ss:[ebp + 0xff<255,-1>], 1
   85 c0 ?? test eax, eax
   7c 40 ?? jl basic block L18
  
  L10: 7f 47 ?? jg basic block L19
  
  L11: 8b 45 f8 ?? mov eax, dword ss:[ebp + 0xf8<248,-8>]
  
  L12: 8b d8 ?? mov ebx, eax
   83 f8 fe ?? cmp eax, 0xfe<254,-2>
   75 ce ?? jne basic block L7
  
  L13: 80 7d ff 00 ?? cmp byte ss:[ebp + 0xff<255,-1>], 0
   74 24 ?? je basic block L17
  
  L14: 8b 06 ?? mov eax, dword ds:[esi]
   83 f8 fe ?? cmp eax, 0xfe<254,-2>
   74 0d ?? je basic block L16
  
  L15: 8b 4e 04 ?? mov ecx, dword ds:[esi + 4]
   03 cf ?? add ecx, edi
   33 0c 38 ?? xor ecx, dword ds:[eax + edi]
   e8 ba c3 ff ff ?? call function 0x00401916
  
  L16: 8b 4e 0c ?? mov ecx, dword ds:[esi + 12]
   8b 56 08 ?? mov edx, dword ds:[esi + 8]
   03 cf ?? add ecx, edi
   33 0c 3a ?? xor ecx, dword ds:[edx + edi]
   e8 aa c3 ff ff ?? call function 0x00401916
  
  L17: 8b 45 f4 ?? mov eax, dword ss:[ebp + 0xf4<244,-12>]
   5f ?? pop edi
   5e ?? pop esi
   5b ?? pop ebx
   8b e5 ?? mov esp, ebp
   5d ?? pop ebp
   c3 ?? ret
  
  L18: c7 45 f4 00 00 00 00 ?? mov dword ss:[ebp + 0xf4<244,-12>], 0
   eb c9 ?? jmp basic block L14
  
  L19: 8b 4d 08 ?? mov ecx, dword ss:[ebp + 8]
   81 39 63 73 6d e0 ?? cmp dword ds:[ecx], 0xe06d7363
   75 29 ?? jne basic block L25
  
  L20: 83 3d b0 3b 42 00 00 ?? cmp dword ds:[0x00423bb0], 0
   74 20 ?? je basic block L25
  
  L21: 68 b0 3b 42 00 ?? push 0x00423bb0
   e8 73 9f 00 00 ?? call function 0x0040f510
  
  L22: 83 c4 04 ?? add esp, 4
   85 c0 ?? test eax, eax
   74 0f ?? je basic block L25
  
  L23: 8b 55 08 ?? mov edx, dword ss:[ebp + 8]
   6a 01 ?? push 1
   52 ?? push edx
   ff 15 b0 3b 42 00 ?? call dword ds:[0x00423bb0]
  
  L24: 83 c4 08 ?? add esp, 8
  
  L25: 8b 4d 0c ?? mov ecx, dword ss:[ebp + 12]
   e8 b7 8d 00 00 ?? call function 0x0040e372
  
  L26: 8b 45 0c ?? mov eax, dword ss:[ebp + 12]
   39 58 0c ?? cmp dword ds:[eax + 12], ebx
   74 12 ?? je basic block L29
  
  L27: 68 88 80 42 00 ?? push 0x00428088
   57 ?? push edi
   8b d3 ?? mov edx, ebx
   8b c8 ?? mov ecx, eax
   e8 ba 8d 00 00 ?? call function 0x0040e38c
  
  L28: 8b 45 0c ?? mov eax, dword ss:[ebp + 12]
  
  L29: 8b 4d f8 ?? mov ecx, dword ss:[ebp + 0xf8<248,-8>]
   89 48 0c ?? mov dword ds:[eax + 12], ecx
   8b 06 ?? mov eax, dword ds:[esi]
   83 f8 fe ?? cmp eax, 0xfe<254,-2>
   74 0d ?? je basic block L31
  
  L30: 8b 4e 04 ?? mov ecx, dword ds:[esi + 4]
   03 cf ?? add ecx, edi
   33 0c 38 ?? xor ecx, dword ds:[eax + edi]
   e8 27 c3 ff ff ?? call function 0x00401916
  
  L31: 8b 4e 0c ?? mov ecx, dword ds:[esi + 12]
   8b 56 08 ?? mov edx, dword ds:[esi + 8]
   03 cf ?? add ecx, edi
   33 0c 3a ?? xor ecx, dword ds:[edx + edi]
   e8 17 c3 ff ff ?? call function 0x00401916
  
  L32: 8b 45 f0 ?? mov eax, dword ss:[ebp + 0xf0<240,-16>]
   8b 48 08 ?? mov ecx, dword ds:[eax + 8]
   8b d7 ?? mov edx, edi
   e8 4d 8d 00 00 ?? call function 0x0040e359
  
  L33: ba fe ff ff ff ?? mov edx, 0xfffffffe<4294967294,-2>
   39 53 0c ?? cmp dword ds:[ebx + 12], edx
   0f 84 52 ff ff ff ?? je basic block L17
  
  L34: 68 88 80 42 00 ?? push 0x00428088
   57 ?? push edi
   8b cb ?? mov ecx, ebx
   e8 65 8d 00 00 ?? call function 0x0040e38c
  
  L35: e9 1c ff ff ff ?? jmp basic block L14
  
  