Function at 0x401f60
Capabilities:
Persist via default file association registry key
Set registry value

Disassembly:
push 0xffffffffffffffff
push 0x460c47
mov eax, dword fs:[0]
push eax
sub esp, 0x21c
mov eax, dword [0x47f534]
xor eax, esp
mov dword [esp + 0x218], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x47f534]
xor eax, esp
push eax
lea eax, [esp + 0x230]
mov dword fs:[0], eax
push 0x200
xor ebx, ebx
lea eax, [esp + 0x30]
push ebx
push eax
call fcn.0044c470
add esp, 0xc
lea ecx, [esp + 0x24]
call fcn.00403720
mov dword [esp + 0x238], ebx
mov eax, dword [0x4809c0]
cmp eax, ebx
jne 0x401fdb
push 0x20
push str.AlitalkUpdateShellOpenCommand
lea ecx, [esp + 0x2c]
call fcn.00403540
jmp 0x402005
cmp eax, 1
jne 0x401ff2
push 0x25
push str.TradeManagerUpdateShellOpenCommand
lea ecx, [esp + 0x2c]
call fcn.00403540
jmp 0x402005
cmp eax, 2
jne 0x402005
push str.WangWangUpdateShellOpenCommand
lea ecx, [esp + 0x28]
call fcn.004034c0
call fcn.0042d940
mov eax, dword [eax + 8]
push 0x200
lea ecx, [esp + 0x30]
push ecx
push eax
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
lea ecx, [esp + 0x14]
call fcn.00403720
mov byte [esp + 0x238], 1
mov esi, SysReAllocString
mov dword [esp + 0x1c], vtable.CRegistry.0
mov dword [esp + 0x20], esi
mov byte [esp + 0x238], 2
lea edx, [esp + 0x2c]
push edx
lea eax, [esp + 0x18]
push str.__s____1
push eax
call fcn.00402ee0
mov edx, dword [esp + 0x30]
add esp, 0xc
lea ecx, [esp + 0x18]
push ecx
push 0xf003f
push ebx
push edx
push esi
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
cmp eax, ebx
mov ebp, dword [sym.imp.ADVAPI32.dll_RegSetValueExA]
jne 0x40209c
mov esi, dword [esp + 0x18]
mov dword [esp + 0x20], esi
mov edx, dword [esp + 0x14]
mov eax, edx
lea edi, [eax + 1]
mov cl, byte [eax]
add eax, 1
cmp cl, bl
jne 0x402091
jmp 0x4020de
mov edx, dword [esp + 0x24]
lea eax, [esp + 0x28]
push eax
lea ecx, [esp + 0x1c]
push ecx
push ebx
push 0xf003f
push 1
push ebx
push ebx
push edx
push SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyExA]
cmp eax, ebx
jne 0x4020f4
mov esi, dword [esp + 0x18]
mov dword [esp + 0x20], esi
mov edx, dword [esp + 0x14]
mov eax, edx
lea edi, [eax + 1]
mov cl, byte [eax]
add eax, 1
cmp cl, bl
jne 0x4020d5
sub eax, edi
add eax, 1
push eax
push edx
push 1
push ebx
push 0x46c2cf
push esi
call ebp
cmp esi, ebx
je 0x402105
mov edi, dword [sym.imp.ADVAPI32.dll_RegCloseKey]
push esi
call edi
xor esi, esi
mov dword [esp + 0x20], esi
jmp 0x40210b
mov edi, dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov byte [esp + 0x238], 1
cmp esi, ebx
mov dword [esp + 0x1c], vtable.CRegistry.0
je 0x402126
push esi
call edi
mov dword [esp + 0x20], ebx
mov byte [esp + 0x238], bl
lea ecx, [esp + 0x14]
call fcn.00403830
lea ecx, [esp + 0x14]
call fcn.00403720
mov byte [esp + 0x238], 3
mov eax, dword [0x4809c0]
cmp eax, ebx
jne 0x402162
push 0xd
push str.AlitalkUpdate
lea ecx, [esp + 0x1c]
call fcn.00403540
jmp 0x40218c
cmp eax, 1
jne 0x402179
push 0x12
push str.TradeManagerUpdate
lea ecx, [esp + 0x1c]
call fcn.00403540
jmp 0x40218c
cmp eax, 2
jne 0x40218c
push str.WangWangUpdate
lea ecx, [esp + 0x18]
call fcn.004034c0
mov esi, SysReAllocString
mov dword [esp + 0x1c], vtable.CRegistry.0
mov dword [esp + 0x20], esi
mov byte [esp + 0x238], 4
mov ecx, dword [esp + 0x14]
lea eax, [esp + 0x18]
push eax
push 0xf003f
push ebx
push ecx
push esi
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
cmp eax, ebx
je 0x4021e4
lea edx, [esp + 0x28]
push edx
lea eax, [esp + 0x1c]
push eax
push ebx
push 0xf003f
push 1
push ebx
push ebx
push str.URL_Protocol
push esi
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyExA]
cmp eax, ebx
jne 0x402202
mov esi, dword [esp + 0x18]
push 1
push 0x46c2cf
push 1
push ebx
push str.URL_Protocol
push esi
mov dword [esp + 0x38], esi
call ebp
cmp esi, ebx
je 0x40220b
push esi
call edi
xor esi, esi
mov dword [esp + 0x20], esi
mov byte [esp + 0x238], 3
cmp esi, ebx
mov dword [esp + 0x1c], vtable.CRegistry.0
je 0x402226
push esi
call edi
mov dword [esp + 0x20], ebx
mov byte [esp + 0x238], bl
lea ecx, [esp + 0x14]
call fcn.00403830
mov dword [esp + 0x238], 0xffffffff
lea ecx, [esp + 0x24]
call fcn.00403830
mov ecx, dword [esp + 0x230]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x218]
xor ecx, esp
call fcn.00448f05
add esp, 0x228
ret