Disassembly: 
  L1: 55 ?? push ebp
   8b ec ?? mov ebp, esp
   81 ec 24 02 00 00 ?? sub esp, 0x00000224<548>
   a1 20 80 40 00 ?? mov eax, dword ds:[0x00408020]
   33 c5 ?? xor eax, ebp
   89 45 fc ?? mov dword ss:[ebp + 0xfc<252,-4>], eax
   53 ?? push ebx
   8b 1d 38 90 40 00 ?? mov ebx, dword ds:[0x00409038]
   57 ?? push edi
   68 00 08 00 00 ?? push 0x00000800<2048>
   6a 00 ?? push 0
   68 c0 62 40 00 ?? push 0x004062c0<"ADVAPI32.DLL">
   ff d3 ?? call ebx
  
  L2: 8b f8 ?? mov edi, eax
   85 ff ?? test edi, edi
   75 2c ?? jne basic block L9
  
  L3: ff 15 40 90 40 00 ?? call dword ds:[0x00409040]
  
  L4: 83 f8 57 ?? cmp eax, 0x57<87>
   75 0f ?? jne basic block L7
  
  L5: 57 ?? push edi
   57 ?? push edi
   68 c0 62 40 00 ?? push 0x004062c0<"ADVAPI32.DLL">
   ff d3 ?? call ebx
  
  L6: 8b f8 ?? mov edi, eax
   85 ff ?? test edi, edi
   75 12 ?? jne basic block L9
  
  L7: 5f ?? pop edi
   33 c0 ?? xor eax, eax
   5b ?? pop ebx
   8b 4d fc ?? mov ecx, dword ss:[ebp + 0xfc<252,-4>]
   33 cd ?? xor ecx, ebp
   e8 59 05 00 00 ?? call function 0x004031d0
  
  L8: 8b e5 ?? mov esp, ebp
   5d ?? pop ebp
   c3 ?? ret
  
  L9: 56 ?? push esi
   8b 35 3c 90 40 00 ?? mov esi, dword ds:[0x0040903c]
   68 dc 62 40 00 ?? push 0x004062dc<"RegOpenKeyExW">
   57 ?? push edi
   ff d6 ?? call esi
  
  L10: 89 85 dc fd ff ff ?? mov dword ss:[ebp + 0xfffffddc<4294966748,-548>], eax
   85 c0 ?? test eax, eax
   74 4a ?? je basic block L18
  
  L11: 68 ec 62 40 00 ?? push 0x004062ec<"RegQueryValueExW">
   57 ?? push edi
   ff d6 ?? call esi
  
  L12: 89 85 e8 fd ff ff ?? mov dword ss:[ebp + 0xfffffde8<4294966760,-536>], eax
   85 c0 ?? test eax, eax
   74 38 ?? je basic block L18
  
  L13: 68 00 63 40 00 ?? push 0x00406300<"RegCloseKey">
   57 ?? push edi
   ff d6 ?? call esi
  
  L14: 89 85 e0 fd ff ff ?? mov dword ss:[ebp + 0xfffffde0<4294966752,-544>], eax
   85 c0 ?? test eax, eax
   74 26 ?? je basic block L18
  
  L15: 8d 85 ec fd ff ff ?? lea eax, ss:[ebp + 0xfffffdec<4294966764,-532>]
   50 ?? push eax
   6a 01 ?? push 1
   6a 00 ?? push 0
   68 10 63 40 00 ?? push 0x00406310<"SOFTWARE\\Microsoft\\Visual"+20 more>
   68 02 00 00 80 ?? push 0x80000002
   ff 95 dc fd ff ff ?? call dword ss:[ebp + 0xfffffddc<4294966748,-548>]
  
  L16: 85 c0 ?? test eax, eax
   74 1a ?? je basic block L20
  
  L17: 57 ?? push edi
   ff 15 08 90 40 00 ?? call dword ds:[0x00409008]
  
  L18: 5e ?? pop esi
   5f ?? pop edi
   33 c0 ?? xor eax, eax
   5b ?? pop ebx
   8b 4d fc ?? mov ecx, dword ss:[ebp + 0xfc<252,-4>]
   33 cd ?? xor ecx, ebp
   e8 e3 04 00 00 ?? call function 0x004031d0
  
  L19: 8b e5 ?? mov esp, ebp
   5d ?? pop ebp
   c3 ?? ret
  
  L20: 8d 85 f0 fd ff ff ?? lea eax, ss:[ebp + 0xfffffdf0<4294966768,-528>]
   c7 85 f0 fd ff ff 08 02 ?? mov dword ss:[ebp + 0xfffffdf0<4294966768,-528>], 0x00000208<520>
   00 00
   50 ?? push eax
   8d 85 f4 fd ff ff ?? lea eax, ss:[ebp + 0xfffffdf4<4294966772,-524>]
   50 ?? push eax
   8d 85 e4 fd ff ff ?? lea eax, ss:[ebp + 0xfffffde4<4294966756,-540>]
   50 ?? push eax
   6a 00 ?? push 0
   68 6c 63 40 00 ?? push 0x0040636c<"ProductDir">
   ff b5 ec fd ff ff ?? push dword ss:[ebp + 0xfffffdec<4294966764,-532>]
   ff 95 e8 fd ff ff ?? call dword ss:[ebp + 0xfffffde8<4294966760,-536>]
  
  L21: ff b5 ec fd ff ff ?? push dword ss:[ebp + 0xfffffdec<4294966764,-532>]
   8b f0 ?? mov esi, eax
   ff 95 e0 fd ff ff ?? call dword ss:[ebp + 0xfffffde0<4294966752,-544>]
  
  L22: 57 ?? push edi
   ff 15 08 90 40 00 ?? call dword ds:[0x00409008]
  
  L23: 85 f6 ?? test esi, esi
   75 a2 ?? jne basic block L18
  
  L24: 83 bd e4 fd ff ff 01 ?? cmp dword ss:[ebp + 0xfffffde4<4294966756,-540>], 1
   75 99 ?? jne basic block L18
  
  L25: 8b 8d f0 fd ff ff ?? mov ecx, dword ss:[ebp + 0xfffffdf0<4294966768,-528>]
   f6 c1 01 ?? test cl, 1
   75 8e ?? jne basic block L18
  
  L26: d1 e9 ?? shr ecx, 1
   83 f9 02 ?? cmp ecx, 2
   72 87 ?? jb basic block L18
  
  L27: 49 ?? dec ecx
   66 39 b4 4d f4 fd ff ff ?? cmp word ss:[ebp + 0xfffffdf4<4294966772,-524> + ecx * 2], si
   0f 85 78 ff ff ff ?? jne basic block L18
  
  L28: 66 83 bc 4d f2 fd ff ff ?? cmp word ss:[ebp + 0xfffffdf2<4294966770,-526> + ecx * 2], 0x5c<92>
   5c
   74 0e ?? je basic block L30
  
  L29: b8 5c 00 00 00 ?? mov eax, 0x0000005c<92>
   66 89 84 4d f4 fd ff ff ?? mov word ss:[ebp + 0xfffffdf4<4294966772,-524> + ecx * 2], ax
   41 ?? inc ecx
  
  L30: 83 c8 ff ?? or eax, 0xff<255,-1>
   2b c1 ?? sub eax, ecx
   83 f8 12 ?? cmp eax, 0x12<18>
   0f 82 51 ff ff ff ?? jb basic block L18
  
  L31: 8d 41 11 ?? lea eax, ds:[ecx + 0x11<17>]
   3d 04 01 00 00 ?? cmp eax, 0x00000104<260>
   0f 87 43 ff ff ff ?? ja basic block L18
  
  L32: a1 80 62 40 00 ?? mov eax, dword ds:[0x00406280<"bin\\MSPDB120.DLL">]
   89 84 4d f4 fd ff ff ?? mov dword ss:[ebp + 0xfffffdf4<4294966772,-524> + ecx * 2], eax
   a1 84 62 40 00 ?? mov eax, dword ds:[0x00406284<"n\\MSPDB120.DLL">]
   89 84 4d f8 fd ff ff ?? mov dword ss:[ebp + 0xfffffdf8<4294966776,-520> + ecx * 2], eax
   a1 88 62 40 00 ?? mov eax, dword ds:[0x00406288<"MSPDB120.DLL">]
   89 84 4d fc fd ff ff ?? mov dword ss:[ebp + 0xfffffdfc<4294966780,-516> + ecx * 2], eax
   a1 8c 62 40 00 ?? mov eax, dword ds:[0x0040628c<"PDB120.DLL">]
   89 84 4d 00 fe ff ff ?? mov dword ss:[ebp + 0xfffffe00<4294966784,-512> + ecx * 2], eax
   a1 90 62 40 00 ?? mov eax, dword ds:[0x00406290<"B120.DLL">]
   89 84 4d 04 fe ff ff ?? mov dword ss:[ebp + 0xfffffe04<4294966788,-508> + ecx * 2], eax
   a1 94 62 40 00 ?? mov eax, dword ds:[0x00406294<"20.DLL">]
   89 84 4d 08 fe ff ff ?? mov dword ss:[ebp + 0xfffffe08<4294966792,-504> + ecx * 2], eax
   a1 98 62 40 00 ?? mov eax, dword ds:[0x00406298<".DLL">]
   89 84 4d 0c fe ff ff ?? mov dword ss:[ebp + 0xfffffe0c<4294966796,-500> + ecx * 2], eax
   a1 9c 62 40 00 ?? mov eax, dword ds:[0x0040629c<"LL">]
   89 84 4d 10 fe ff ff ?? mov dword ss:[ebp + 0xfffffe10<4294966800,-496> + ecx * 2], eax
   66 a1 a0 62 40 00 ?? mov ax, word ds:[0x004062a0]
   68 00 09 00 00 ?? push 0x00000900<2304>
   66 89 84 4d 14 fe ff ff ?? mov word ss:[ebp + 0xfffffe14<4294966804,-492> + ecx * 2], ax
   8d 85 f4 fd ff ff ?? lea eax, ss:[ebp + 0xfffffdf4<4294966772,-524>]
   6a 00 ?? push 0
   50 ?? push eax
   ff d3 ?? call ebx
  
  L33: 8b f0 ?? mov esi, eax
   85 f6 ?? test esi, esi
   75 19 ?? jne basic block L38
  
  L34: ff 15 40 90 40 00 ?? call dword ds:[0x00409040]
  
  L35: 83 f8 57 ?? cmp eax, 0x57<87>
   75 0e ?? jne basic block L38
  
  L36: 6a 08 ?? push 8
   56 ?? push esi
   8d 85 f4 fd ff ff ?? lea eax, ss:[ebp + 0xfffffdf4<4294966772,-524>]
   50 ?? push eax
   ff d3 ?? call ebx
  
  L37: 8b f0 ?? mov esi, eax
  
  L38: 8b 4d fc ?? mov ecx, dword ss:[ebp + 0xfc<252,-4>]
   8b c6 ?? mov eax, esi
   5e ?? pop esi
   5f ?? pop edi
   33 cd ?? xor ecx, ebp
   5b ?? pop ebx
   e8 89 03 00 00 ?? call function 0x004031d0
  
  L39: 8b e5 ?? mov esp, ebp
   5d ?? pop ebp
   c3 ?? ret
  
  