Function at 0x47cf30
Capabilities:
Create directory
Query or enumerate registry value
Set registry value

Disassembly:
push 0xffffffffffffffff
push 0x5adad0
mov eax, dword fs:[0]
push eax
sub esp, 0x1c
push ebx
push ebp
push esi
push edi
mov eax, dword [0x5f13cc]
xor eax, esp
push eax
lea eax, [esp + 0x30]
mov dword fs:[0], eax
lea edi, [esp + 0x20]
call fcn.00474ab0
xor ebx, ebx
mov dword [esp + 0x38], ebx
mov ecx, dword [esp + 0x20]
mov eax, dword [ecx - 0xc]
cmp eax, ebx
jle 0x47d017
lea eax, [ecx - 0x10]
call fcn.00403ce0
lea ecx, [eax + 0x10]
mov dword [esp + 0x18], ecx
mov byte [esp + 0x38], 1
mov eax, dword [ecx - 0xc]
cmp eax, ebx
jle 0x47cfb8
lea edx, [eax - 1]
cmp edx, ebx
jl 0x47d048
cmp edx, eax
jg 0x47d048
movzx eax, word [ecx + edx*2]
cmp ax, 0x5c
je 0x47cfb8
push 0x5c
lea edi, [esp + 0x1c]
call fcn.00404400
push 4
push str.log_
lea eax, [esp + 0x20]
push eax
call fcn.00403fc0
mov ecx, dword [esp + 0x18]
push ebx
push ecx
push ebx
call dword [sym.imp.SHELL32.dll_SHCreateDirectoryExW]
push 0xc
push str.qqpinyin.log
lea edx, [esp + 0x20]
push edx
call fcn.00403fc0
mov esi, dword [esp + 0x18]
push 4
mov edi, 0x603350
call fcn.0044aeb0
lea eax, [esi - 0x10]
mov byte [esp + 0x38], bl
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x47d017
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push ecx
mov eax, esp
mov dword [esp + 0x2c], esp
push ecx
mov dword [eax], ebx
mov eax, esp
mov dword [esp + 0x30], esp
mov dword [eax], ebx
call fcn.0047e680
cmp eax, ebx
mov dword [esp + 0x28], eax
jne 0x47d0a0
mov esi, dword [sym.imp.KERNEL32.dll_GetLastError]
call esi
test eax, eax
jg 0x47d052
call esi
mov esi, eax
jmp 0x47d062
push 0x80070057
call fcn.00404550
call esi
mov esi, eax
and esi, 0xffff
or esi, 0x80070000
mov dword [esp + 0x38], 0xffffffff
mov eax, dword [esp + 0x20]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x47d08a
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, esi
mov ecx, dword [esp + 0x30]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x28
ret
push 0x603350
call fcn.0044b010
push 0x5c5984
push 0x603350
call fcn.0044b130
add esp, 8
lea ecx, [esp + 0x24]
push ecx
push 0x2001f
push ebx
push str.SOFTWARETencentQQPinyinTemp
xor esi, esi
push closesocket
mov dword [0x60334c], 1
mov byte [0x603348], 1
mov dword [esp + 0x30], esi
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x38], ebx
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
cmp eax, ebx
mov ebp, dword [sym.imp.ADVAPI32.dll_RegCloseKey]
jne 0x47d139
mov esi, dword [esp + 0x24]
lea edx, [esp + 0x24]
push edx
lea eax, [esp + 0x1c]
push eax
lea ecx, [esp + 0x34]
push ecx
push ebx
push str.StatRetry
push esi
mov dword [esp + 0x34], esi
mov dword [esp + 0x3c], 4
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
cmp esi, ebx
je 0x47d139
push esi
call ebp
xor esi, esi
mov dword [esp + 0x1c], esi
mov edi, 2
cmp dword [esp + 0x18], edi
jae 0x47d197
push str.SOFTWARETencentQQPinyinTemp
push closesocket
lea edx, [edi - 1]
lea esi, [esp + 0x24]
call fcn.0040cb60
cmp eax, ebx
mov esi, dword [esp + 0x1c]
jne 0x47d191
mov eax, dword [esp + 0x18]
push 4
lea edx, [esp + 0x28]
push edx
push 4
push ebx
add eax, 1
push str.StatRetry
push esi
mov dword [esp + 0x30], eax
mov dword [esp + 0x3c], eax
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
cmp eax, ebx
je 0x47d191
mov dword [esp + 0x18], edi
jmp 0x47d197
cmp dword [esp + 0x18], edi
jb 0x47d19d
mov dword [0x60334c], edi
cmp esi, ebx
je 0x47d1a4
push esi
call ebp
mov eax, dword [esp + 0x28]
mov ecx, 0x60330c
mov dword [0x60330c], eax
call fcn.0047e800
mov esi, eax
cmp esi, ebx
je 0x47d1eb
mov ecx, dword [0x6032ec]
push ecx
call dword [sym.imp.USER32.dll_DestroyWindow]
mov dword [esp + 0x38], 0xffffffff
mov eax, dword [esp + 0x20]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jmp 0x47d07e
mov dword [esp + 0x38], 0xffffffff
mov eax, dword [esp + 0x20]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x47d213
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
xor eax, eax
mov ecx, dword [esp + 0x30]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x28
ret