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

Disassembly:
push 0xffffffffffffffff
push 0x60d8c0
mov eax, dword fs:[0]
push eax
sub esp, 0x1c
push ebx
push ebp
push esi
push edi
mov eax, dword [0x6687b8]
xor eax, esp
push eax
lea eax, [esp + 0x30]
mov dword fs:[0], eax
lea edi, [esp + 0x20]
call fcn.0047ac70
xor ebx, ebx
mov dword [esp + 0x38], ebx
mov ecx, dword [esp + 0x20]
mov eax, dword [ecx - 0xc]
cmp eax, ebx
jle 0x488f17
lea eax, [ecx - 0x10]
call fcn.0040a210
lea ecx, [eax + 0x10]
mov dword [esp + 0x18], ecx
mov byte [esp + 0x38], 1
mov eax, dword [ecx - 0xc]
cmp eax, ebx
jle 0x488eb8
lea edx, [eax - 1]
cmp edx, ebx
jl 0x488f48
cmp edx, eax
jg 0x488f48
movzx eax, word [ecx + edx*2]
cmp ax, 0x5c
je 0x488eb8
push 0x5c
lea edi, [esp + 0x1c]
call fcn.0040af90
push 4
push str.log_
lea eax, [esp + 0x20]
push eax
call fcn.0040aee0
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.0040aee0
mov esi, dword [esp + 0x18]
push 4
mov edi, 0x67f598
call fcn.0044bb70
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 0x488f17
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.0048a7d0
cmp eax, ebx
mov dword [esp + 0x28], eax
jne 0x488fa0
mov esi, dword [sym.imp.KERNEL32.dll_GetLastError]
call esi
test eax, eax
jg 0x488f52
call esi
mov esi, eax
jmp 0x488f62
push 0x80070057
call fcn.00403650
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 0x488f8a
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 0x67f598
call fcn.0044bcd0
push 0x63092c
push 0x67f598
call fcn.0044bdf0
add esp, 8
lea ecx, [esp + 0x24]
push ecx
push 0x2001f
push ebx
push str.SOFTWARETencentQQPinyinTemp
xor esi, esi
push SysReAllocStringLen
mov dword [0x67f594], 1
mov byte [0x67f590], 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 0x489039
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 0x489039
push esi
call ebp
xor esi, esi
mov dword [esp + 0x1c], esi
mov edi, 2
cmp dword [esp + 0x18], edi
jae 0x489097
push str.SOFTWARETencentQQPinyinTemp
push SysReAllocStringLen
lea edx, [edi - 1]
lea esi, [esp + 0x24]
call fcn.00406220
cmp eax, ebx
mov esi, dword [esp + 0x1c]
jne 0x489091
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 0x489091
mov dword [esp + 0x18], edi
jmp 0x489097
cmp dword [esp + 0x18], edi
jb 0x48909d
mov dword [0x67f594], edi
cmp esi, ebx
je 0x4890a4
push esi
call ebp
mov eax, dword [esp + 0x28]
mov ecx, 0x67f554
mov dword [0x67f554], eax
call fcn.0048a950
mov esi, eax
cmp esi, ebx
je 0x4890eb
mov ecx, dword [0x67f534]
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 0x488f7e
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 0x489113
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