Function at 0x42cfc0
Capabilities:
Delete registry key
Query or enumerate registry value
Resolve function by parsing pe exports
Set registry value

Disassembly:
push 0xffffffffffffffff
push 0x609eb4
mov eax, dword fs:[0]
push eax
sub esp, 0xf8
mov eax, dword [0x6687b8]
xor eax, esp
mov dword [esp + 0xf0], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x6687b8]
xor eax, esp
push eax
lea eax, [esp + 0x10c]
mov dword fs:[0], eax
lea eax, [esp + 0x68]
xor esi, esi
push eax
mov ecx, str.Keyboard_LayoutPreload_
mov dword [esp + 0x18], esi
mov dword [esp + 0x58], esi
call fcn.00409dd0
push fcn.00403870
push fcn.00403890
push 0x14
push 4
lea ecx, [esp + 0x94]
push ecx
mov dword [esp + 0x128], esi
call fcn.005d37d2
mov byte [esp + 0x114], 1
mov edx, dword [0x677600]
mov eax, dword [edx + 0xc]
mov ecx, 0x677600
mov dword [esp + 0x64], esi
call eax
add eax, 0x10
mov dword [esp + 0x5c], eax
mov byte [esp + 0x114], 2
mov edx, dword [esp + 0x68]
lea ecx, [esp + 0x4c]
push ecx
push edx
push SysReAllocStringLen
mov dword [esp + 0x58], esi
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyW]
cmp eax, esi
jne 0x42d5d9
mov eax, dword [0x677600]
mov edx, dword [eax + 0xc]
mov esi, 1
mov ecx, 0x677600
mov dword [esp + 0x54], esi
mov dword [esp + 0x60], 0x18
mov dword [esp + 0x2c], 0
call edx
add eax, 0x10
mov dword [esp + 0x24], eax
lea eax, [esp + 0x84]
mov byte [esp + 0x114], 3
mov dword [esp + 0x50], esi
mov dword [esp + 0x48], eax
mov ebp, esi
push ebp
push 0x625d28
lea edi, [esp + 0x2c]
mov dword [esp + 0x20], 0
call fcn.0040ac80
add esp, 8
xor eax, eax
lea ecx, [esp + 0x60]
push ecx
mov ecx, dword [esp + 0x28]
lea edx, [esp + 0xf0]
push edx
mov edx, dword [esp + 0x54]
mov dword [esp + 0xf4], eax
mov dword [esp + 0xf8], eax
mov dword [esp + 0xfc], eax
mov dword [esp + 0x100], eax
mov dword [esp + 0x104], eax
mov dword [esp + 0x108], eax
lea eax, [esp + 0x34]
push eax
push 0
push ecx
push edx
mov dword [esp + 0x78], 0x18
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
jne 0x42d5b1
lea eax, [esp + 0x1c]
push eax
lea ecx, [esp + 0xf0]
call fcn.00409dd0
lea edi, [esp + 0x1c]
mov byte [esp + 0x114], 4
call fcn.00431780
mov ecx, dword [0x67ba4c]
mov ebx, dword [ecx]
mov esi, 0x67ba48
mov dword [esp + 0x74], ebx
mov dword [esp + 0x70], esi
jmp 0x42d180
test esi, esi
mov edi, dword [0x67ba4c]
je 0x42d192
cmp esi, 0x67ba48
je 0x42d197
call fcn.005d29f1
cmp ebx, edi
je 0x42d24e
mov edx, dword [0x677600]
mov eax, dword [edx + 0xc]
mov ecx, 0x677600
call eax
add eax, 0x10
mov dword [esp + 0x28], eax
test esi, esi
mov byte [esp + 0x114], 5
jne 0x42d1c7
call fcn.005d29f1
cmp ebx, dword [esi + 4]
jne 0x42d1d1
call fcn.005d29f1
mov ecx, dword [ebx + 0x54]
push ecx
push str._08x
lea edi, [esp + 0x30]
call fcn.0040ac80
mov esi, dword [esp + 0x30]
mov edx, dword [esp + 0x24]
push esi
push edx
call fcn.005d2da6
add esp, 0x10
or edx, 0xffffffff
test eax, eax
lea eax, [esi - 0x10]
mov byte [esp + 0x114], 4
lea ecx, [eax + 0xc]
je 0x42d233
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x42d21d
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea esi, [esp + 0x70]
call fcn.00433280
mov ebx, dword [esp + 0x74]
mov esi, dword [esp + 0x70]
jmp 0x42d180
mov dword [esp + 0x18], 1
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x42d24e
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [esp + 0x6c]
push ecx
mov ecx, str.0000
call fcn.00409dd0
mov esi, eax
mov eax, 4
lea ecx, [esp + 0x78]
lea edx, [esp + 0x1c]
mov byte [esp + 0x114], 6
call fcn.0041a270
mov ecx, dword [esi]
xor edx, edx
test ecx, ecx
setne dl
test edx, edx
je 0x42d808
mov eax, dword [eax]
lea esp, [esp]
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x42d2b6
test dx, dx
je 0x42d2b2
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x42d2b6
add eax, 4
add ecx, 4
test dx, dx
jne 0x42d290
xor eax, eax
jmp 0x42d2bb
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
mov eax, dword [esp + 0x78]
sete bl
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x42d2e0
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x114], 4
mov eax, dword [esp + 0x6c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x42d308
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
test bl, bl
je 0x42d512
mov edx, dword [0x677600]
mov eax, dword [edx + 0xc]
mov ecx, 0x677600
call eax
add eax, 0x10
mov dword [esp + 0x28], eax
lea ecx, [ebp + 1]
push ecx
push 0x625d28
lea edi, [esp + 0x30]
mov byte [esp + 0x11c], 7
call fcn.0040ac80
xor eax, eax
add esp, 8
mov dword [esp + 0xd6], eax
mov dword [esp + 0xda], eax
mov dword [esp + 0xde], eax
mov dword [esp + 0xe2], eax
mov dword [esp + 0xe6], eax
mov word [esp + 0xea], ax
lea edx, [esp + 0x58]
push edx
mov edx, dword [esp + 0x2c]
lea eax, [esp + 0xd8]
push eax
mov eax, dword [esp + 0x54]
lea ecx, [esp + 0x34]
push ecx
push 0
push edx
push eax
mov word [esp + 0xec], 0
mov dword [esp + 0x70], 0x18
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
jne 0x42d4ea
push 0x10
push eax
lea ecx, [esp + 0xdc]
push ecx
call fcn.005d419b
mov edx, dword [0x677600]
mov ebp, eax
mov eax, dword [edx + 0xc]
add esp, 0xc
mov ecx, 0x677600
call eax
add eax, 0x10
mov dword [esp + 0x20], eax
lea ecx, [esp + 0x20]
push ecx
mov byte [esp + 0x118], 8
lea ecx, [esp + 0x34]
mov dword [esp + 0x34], ebp
call fcn.0042a8e0
mov edx, dword [esp + 0x24]
add esp, 4
cmp dword [edx - 0xc], 0
jl 0x42d4be
mov eax, edx
push 0x626d6c
push eax
call fcn.005d2e73
add esp, 8
test eax, eax
je 0x42d4be
sub eax, dword [esp + 0x20]
sar eax, 1
cmp eax, 0xffffffff
je 0x42d4be
mov ecx, dword [0x67ba4c]
mov ebx, dword [ecx]
mov esi, 0x67ba48
mov dword [esp + 0x38], ebx
mov dword [esp + 0x34], esi
test esi, esi
mov edi, dword [0x67ba4c]
je 0x42d454
cmp esi, 0x67ba48
je 0x42d459
call fcn.005d29f1
cmp ebx, edi
je 0x42d4be
test esi, esi
jne 0x42d466
call fcn.005d29f1
cmp ebx, dword [esi + 4]
jne 0x42d470
call fcn.005d29f1
cmp dword [ebx + 0x54], ebp
jne 0x42d485
cmp ebx, dword [esi + 4]
jne 0x42d47f
call fcn.005d29f1
cmp dword [ebx + 0x5c], 0
jne 0x42d498
lea esi, [esp + 0x34]
call fcn.00433280
mov ebx, dword [esp + 0x38]
mov esi, dword [esp + 0x34]
jmp 0x42d442
push ebp
push str._08x
lea edi, [esp + 0x64]
call fcn.0040ac80
add esp, 8
push ebx
push esi
lea edx, [esp + 0x84]
push edx
push 0x67ba48
call fcn.00431930
mov byte [esp + 0x114], 7
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 0x42d4e6
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ebp, dword [esp + 0x50]
mov byte [esp + 0x114], 4
mov eax, dword [esp + 0x28]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x42d512
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
cmp dword [esp + 0x18], 0
jne 0x42d576
mov edx, dword [esp + 0x48]
mov ecx, dword [esp + 0x1c]
mov esi, dword [edx]
lea eax, [ecx - 0x10]
sub esi, 0x10
cmp eax, esi
je 0x42d571
cmp dword [esi + 0xc], 0
lea edi, [esi + 0xc]
jl 0x42d564
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x42d564
call fcn.0040a210
mov ebx, eax
or eax, 0xffffffff
lock xadd dword [edi], eax
dec eax
test eax, eax
jg 0x42d559
mov ecx, dword [esi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push esi
call eax
mov ecx, dword [esp + 0x48]
add ebx, 0x10
mov dword [ecx], ebx
jmp 0x42d571
mov ebx, dword [ecx - 0xc]
mov eax, dword [esp + 0x48]
push ecx
call fcn.004037a0
add dword [esp + 0x48], 4
mov byte [esp + 0x114], 3
mov eax, dword [esp + 0x1c]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x42d59e
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
add ebp, 1
cmp ebp, 0x3e8
mov dword [esp + 0x50], ebp
jl 0x42d0ca
mov byte [esp + 0x114], 2
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x42d5d9
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [esp + 0x4c]
push ecx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
push str.______________________________________________________________________
push 0x671404
call fcn.004fc6e0
push str.Rebuild_Preload_Brgin
push 0x671404
call fcn.004fc6e0
add esp, 0x10
call fcn.004fc910
push str.Delete_Preload
push 0x671404
call fcn.004fc6e0
add esp, 8
push str.Keyboard_LayoutPreload_
push SysReAllocStringLen
call dword [sym.imp.ADVAPI32.dll_RegDeleteKeyW]
push str.Create_Preload
push 0x671404
call fcn.004fc6e0
add esp, 8
lea edx, [esp + 0x40]
push edx
push str.Keyboard_LayoutPreload_
push SysReAllocStringLen
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyW]
xor esi, esi
cmp eax, esi
je 0x42d65d
mov dword [esp + 0x54], esi
lea eax, [esp + 0x3c]
push eax
mov ecx, 0x6244e0
mov dword [esp + 0x24], 1
mov dword [esp + 0x2c], esi
mov dword [esp + 0x48], 0xffffffff
call fcn.00409dd0
push 2
lea ecx, [esp + 0x48]
push ecx
push esi
push 0x59
mov byte [esp + 0x124], 9
call dword [sym.imp.USER32.dll_SystemParametersInfoW]
cmp eax, esi
mov ebp, dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
je 0x42d947
mov edx, dword [0x6784b8]
mov eax, dword [esp + 0x44]
push edx
push eax
push str.DefauleIme___08x_QQIme___08x
push 0x671404
call fcn.004fc6e0
mov ecx, dword [esp + 0x54]
add esp, 0x10
cmp ecx, dword [0x6784b8]
mov ecx, 0x677600
jne 0x42d812
mov edx, dword [0x677600]
mov eax, dword [edx + 0xc]
mov dword [esp + 0x28], 1
call eax
add eax, 0x10
mov dword [esp + 0x18], eax
mov bl, 0xa
mov byte [esp + 0x114], bl
mov ecx, dword [0x6784b8]
push ecx
push str._08X
lea edi, [esp + 0x20]
call fcn.0040ac80
mov esi, dword [esp + 0x20]
add esp, 8
cmp dword [esi - 0xc], 0
je 0x42d7db
mov edx, dword [0x677600]
mov eax, dword [edx + 0xc]
mov ecx, 0x677600
call eax
add eax, 0x10
mov dword [esp + 0x2c], eax
push 1
push 0x625d28
lea edi, [esp + 0x34]
mov byte [esp + 0x11c], 0xb
call fcn.0040ac80
push esi
push 1
push str.PreWrite_Preload_key___d_value___s
push 0x671404
call fcn.004fc6e0
add esp, 0x18
push 0
push ecx
lea eax, [esi - 0x10]
mov dword [esp + 0x38], esp
mov edi, esp
call fcn.0040a210
add eax, 0x10
mov dword [edi], eax
call fcn.00429c10
mov edi, dword [esp + 0x34]
add esp, 8
test eax, eax
jne 0x42d7b8
push esi
push 1
push str.Write_Preload_key___d_value___s
push 0x671404
call fcn.004fc6e0
mov ecx, dword [esp + 0x50]
add esp, 0x10
push 0x10
push esi
push 1
push 0
push edi
push ecx
call ebp
mov dword [esp + 0x20], 2
lea eax, [edi - 0x10]
mov byte [esp + 0x114], bl
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x42d7db
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
add esi, 0xfffffff0
mov byte [esp + 0x114], 9
lea ecx, [esi + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x42d947
mov ecx, dword [esi]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
push esi
call edx
jmp 0x42d947
push 0x80004005
call fcn.00403650
mov eax, dword [0x677600]
mov edx, dword [eax + 0xc]
call edx
add eax, 0x10
mov dword [esp + 0x18], eax
push 1
push 0x625d28
lea edi, [esp + 0x20]
mov byte [esp + 0x11c], 0xc
call fcn.0040ac80
mov eax, dword [esp + 0x4c]
push eax
push str._08X
lea edi, [esp + 0x4c]
call fcn.0040ac80
mov ecx, dword [esp + 0x4c]
push ecx
push 1
push str.PreWrite_Preload_key___d_value___s
push 0x671404
call fcn.004fc6e0
mov edx, dword [0x677600]
mov eax, dword [edx + 0xc]
add esp, 0x20
mov ecx, 0x677600
call eax
add eax, 0x10
mov dword [esp + 0x24], eax
mov byte [esp + 0x114], 0xd
mov eax, dword [esp + 0x44]
cmp eax, 0x8040804
lea edi, [esp + 0x24]
jne 0x42d89c
push 0x804
jmp 0x42d89d
push eax
push str._08X
call fcn.0040ac80
mov esi, dword [esp + 0x2c]
add esp, 8
push 0
push ecx
lea edi, [esi - 0x10]
mov eax, edi
mov dword [esp + 0x38], esp
mov ebx, esp
call fcn.0040a210
add eax, 0x10
mov dword [ebx], eax
call fcn.00429c10
mov ebx, dword [esp + 0x20]
add esp, 8
test eax, eax
jne 0x42d902
push esi
push 1
push str.Write_Preload_key___d_value___s
push 0x671404
call fcn.004fc6e0
mov ecx, dword [esp + 0x50]
add esp, 0x10
push 0x10
push esi
push 1
push 0
push ebx
push ecx
call ebp
mov dword [esp + 0x20], 2
mov byte [esp + 0x114], 0xc
lea edx, [edi + 0xc]
or eax, 0xffffffff
lock xadd dword [edx], eax
dec eax
test eax, eax
jg 0x42d923
mov ecx, dword [edi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push edi
call eax
lea eax, [ebx - 0x10]
mov byte [esp + 0x114], 9
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x42d947
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
xor esi, esi
lea edi, [esp + 0x84]
mov ecx, dword [edi]
cmp dword [ecx - 0xc], 0
je 0x42d96e
mov edx, ecx
push edx
push esi
push str.strHKL__d__value___s
push 0x671404
call fcn.004fc6e0
add esp, 0x10
add esi, 1
add edi, 4
cmp esi, 0x14
jl 0x42d950
mov dword [esp + 0x1c], 0
mov eax, dword [esp + 0x1c]
mov eax, dword [esp + eax*4 + 0x84]
cmp dword [eax - 0xc], 0
je 0x42dd14
mov ecx, dword [esp + 0x3c]
push eax
push ecx
call fcn.005d2da6
add esp, 8
test eax, eax
je 0x42dbc4
mov edx, dword [0x677600]
mov eax, dword [edx + 0xc]
mov ecx, 0x677600
call eax
add eax, 0x10
mov dword [esp + 0x2c], eax
mov byte [esp + 0x114], 0xe
mov ebp, dword [esp + 0x20]
push ebp
push 0x625d28
lea edi, [esp + 0x34]
call fcn.0040ac80
mov ecx, dword [esp + 0x24]
mov esi, dword [esp + ecx*4 + 0x8c]
mov ecx, dword [esi - 0x10]
mov edx, dword [ecx]
mov eax, dword [edx + 0x10]
sub esi, 0x10
add esp, 8
call eax
cmp dword [esi + 0xc], 0
lea edx, [esi + 0xc]
jl 0x42da13
cmp eax, dword [esi]
jne 0x42da13
mov edi, esi
mov ecx, 1
lock xadd dword [edx], ecx
jmp 0x42da4e
mov ecx, dword [esi + 4]
mov edx, dword [eax]
mov edx, dword [edx]
push 2
push ecx
mov ecx, eax
call edx
mov edi, eax
test edi, edi
je 0x42ddff
mov eax, dword [esi + 4]
mov dword [edi + 4], eax
mov eax, dword [esi + 4]
lea ecx, [eax + eax + 2]
push ecx
add esi, 0x10
lea edx, [eax + eax + 2]
push esi
push edx
lea eax, [edi + 0x10]
push eax
call fcn.005d2a01
add esp, 0x10
lea ebx, [edi + 0x10]
mov dword [esp + 0x18], ebx
push ebx
push ebp
push str.PreWrite_Preload_key___d_value___s
push 0x671404
mov byte [esp + 0x124], 0xf
call fcn.004fc6e0
mov ecx, dword [esp + 0x2c]
mov eax, dword [esp + ecx*4 + 0x94]
add esp, 0x10
mov ecx, str.08040804
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x42daa7
test dx, dx
je 0x42daa3
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x42daa7
add eax, 4
add ecx, 4
test dx, dx
jne 0x42da81
xor eax, eax
jmp 0x42daac
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
sete al
test al, al
je 0x42dacc
push str.00000804
mov ebx, 8
lea eax, [esp + 0x1c]
call fcn.004037a0
mov ebx, dword [esp + 0x18]
push 0
push ecx
mov ecx, dword [ebx - 0x10]
mov edx, dword [ecx]
mov eax, dword [edx + 0x10]
lea esi, [ebx - 0x10]
mov dword [esp + 0x74], esp
mov ebp, esp
call eax
cmp dword [esi + 0xc], 0
lea ecx, [esi + 0xc]
jl 0x42dafc
cmp eax, dword [esi]
jne 0x42dafc
mov edi, esi
mov edx, 1
lock xadd dword [ecx], edx
jmp 0x42db37
mov ecx, dword [esi + 4]
mov edx, dword [eax]
mov edx, dword [edx]
push 2
push ecx
mov ecx, eax
call edx
mov edi, eax
test edi, edi
je 0x42ddff
mov eax, dword [esi + 4]
mov dword [edi + 4], eax
mov eax, dword [esi + 4]
lea ecx, [eax + eax + 2]
push ecx
lea edx, [esi + 0x10]
push edx
lea eax, [eax + eax + 2]
push eax
lea ecx, [edi + 0x10]
push ecx
call fcn.005d2a01
add esp, 0x10
add edi, 0x10
mov dword [ebp], edi
call fcn.00429c10
mov edi, dword [esp + 0x34]
add esp, 8
test eax, eax
jne 0x42db7f
mov ebp, dword [esp + 0x20]
push ebx
push ebp
push str.Write_Preload_key___d_value___s
push 0x671404
call fcn.004fc6e0
mov edx, dword [esp + 0x50]
add esp, 0x10
push 0x10
push ebx
push 1
push 0
push edi
push edx
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
add ebp, 1
mov dword [esp + 0x20], ebp
mov byte [esp + 0x114], 0xe
lea eax, [esi + 0xc]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x42dba0
mov ecx, dword [esi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push esi
call eax
lea eax, [edi - 0x10]
mov byte [esp + 0x114], 9
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x42dbc4
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [esp + 0x58]
push ecx
mov ecx, str.00000804
call fcn.00409dd0
mov byte [esp + 0x114], 0x10
mov ecx, dword [eax]
mov edi, 1
or dword [esp + 0x14], edi
xor eax, eax
test ecx, ecx
setne al
test eax, eax
je 0x42d808
mov esi, dword [esp + 0x1c]
mov eax, dword [esp + esi*4 + 0x84]
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x42dc26
test dx, dx
je 0x42dc22
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x42dc26
add eax, 4
add ecx, 4
test dx, dx
jne 0x42dc00
xor eax, eax
jmp 0x42dc2b
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
sete al
test al, al
jne 0x42dc98
lea edx, [esp + 0x30]
push edx
mov ecx, str.08040804
call fcn.00409dd0
mov ecx, dword [eax]
or dword [esp + 0x14], 2
xor eax, eax
test ecx, ecx
setne al
test eax, eax
je 0x42d808
mov eax, dword [esp + esi*4 + 0x84]
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x42dc86
test dx, dx
je 0x42dc82
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x42dc86
add eax, 4
add ecx, 4
test dx, dx
jne 0x42dc60
xor eax, eax
jmp 0x42dc8b
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
sete al
test al, al
jne 0x42dc98
xor bl, bl
jmp 0x42dc9a
mov bl, 1
test byte [esp + 0x14], 2
je 0x42dcc6
mov eax, dword [esp + 0x30]
and dword [esp + 0x14], 0xfffffffd
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x42dcc6
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [esp + 0x114], 9
test byte [esp + 0x14], 1
je 0x42dcfd
mov eax, dword [esp + 0x58]
and dword [esp + 0x14], 0xfffffffe
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x42dcfd
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
test bl, bl
je 0x42dd05
mov dword [esp + 0x64], edi
add esi, edi
cmp esi, 0x14
mov dword [esp + 0x1c], esi
jl 0x42d981
mov edx, dword [0x677600]
mov eax, dword [edx + 0xc]
mov ecx, 0x677600
call eax
add eax, 0x10
mov dword [esp + 0x14], eax
mov byte [esp + 0x114], 0x11
mov ecx, dword [0x6784b8]
push ecx
push str._08X
lea edi, [esp + 0x1c]
call fcn.0040ac80
mov edx, dword [esp + 0x1c]
add esp, 8
cmp dword [edx - 0xc], 0
je 0x42de92
cmp dword [esp + 0x28], 0
jne 0x42de92
cmp dword [esp + 0x11c], 0
je 0x42de92
mov eax, dword [0x677600]
mov edx, dword [eax + 0xc]
mov ecx, 0x677600
call edx
add eax, 0x10
mov dword [esp + 0x18], eax
mov byte [esp + 0x114], 0x12
mov ebp, dword [esp + 0x20]
push ebp
push 0x625d28
lea edi, [esp + 0x20]
call fcn.0040ac80
mov esi, dword [esp + 0x1c]
push esi
push ebp
push str.PreWrite_Preload_key___d_value___s
push 0x671404
call fcn.004fc6e0
add esp, 0x18
push 0
push ecx
mov ecx, dword [esi - 0x10]
mov eax, dword [ecx]
mov edx, dword [eax + 0x10]
add esi, 0xfffffff0
mov dword [esp + 0x38], esp
mov ebx, esp
call edx
cmp dword [esi + 0xc], 0
lea edx, [esi + 0xc]
jl 0x42ddeb
cmp eax, dword [esi]
jne 0x42ddeb
mov edi, esi
mov eax, 1
lock xadd dword [edx], eax
jmp 0x42de27
mov ecx, dword [esi + 4]
mov edx, dword [eax]
mov edx, dword [edx]
push 2
push ecx
mov ecx, eax
call edx
mov edi, eax
test edi, edi
jne 0x42de04
jmp fcn.00403610
mov eax, dword [esi + 4]
mov dword [edi + 4], eax
mov eax, dword [esi + 4]
lea ecx, [eax + eax + 2]
push ecx
add esi, 0x10
lea edx, [eax + eax + 2]
push esi
push edx
lea eax, [edi + 0x10]
push eax
call fcn.005d2a01
add esp, 0x10
add edi, 0x10
mov dword [ebx], edi
call fcn.00429c10
mov esi, dword [esp + 0x20]
add esp, 8
test eax, eax
jne 0x42de6e
mov edi, dword [esp + 0x14]
push edi
push ebp
push str.Write_Preload_key___d_value___s
push 0x671404
call fcn.004fc6e0
mov ecx, dword [esp + 0x50]
add esp, 0x10
push 0x10
push edi
push 1
push 0
push esi
push ecx
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
add ebp, 1
mov dword [esp + 0x20], ebp
lea eax, [esi - 0x10]
mov byte [esp + 0x114], 0x11
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x42de92
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [esp + 0x3c]
mov ebp, dword [esp + 0x14]
push ecx
push ebp
push str.strQQPinyinHKL___s_strDefaultImeHKL___s
push 0x671404
call fcn.004fc6e0
mov edx, dword [0x67ba4c]
mov esi, dword [edx]
mov edi, 0x67ba48
add esp, 0x10
mov dword [esp + 0x38], esi
mov dword [esp + 0x34], edi
test edi, edi
mov ebx, dword [0x67ba4c]
je 0x42ded5
cmp edi, 0x67ba48
je 0x42deda
call fcn.005d29f1
cmp esi, ebx
je 0x42df36
test edi, edi
jne 0x42dee7
call fcn.005d29f1
cmp esi, dword [edi + 4]
jne 0x42df05
call fcn.005d29f1
cmp esi, dword [edi + 4]
jne 0x42df05
call fcn.005d29f1
cmp esi, dword [edi + 4]
jne 0x42df05
call fcn.005d29f1
mov eax, dword [esi + 0x54]
mov ecx, dword [esi + 0x5c]
mov edx, dword [esi + 0x10]
push eax
push ecx
push edx
push str.m_mapIME_type___d_inuse___d_value___08x
push 0x671404
call fcn.004fc6e0
add esp, 0x14
lea esi, [esp + 0x34]
call fcn.00433280
mov esi, dword [esp + 0x38]
mov edi, dword [esp + 0x34]
jmp 0x42dec3
mov eax, dword [0x67ba4c]
mov esi, dword [eax]
mov ebx, 0x67ba48
mov dword [esp + 0x38], esi
mov dword [esp + 0x34], ebx
lea ebx, [ebx]
test ebx, ebx
mov edi, dword [0x67ba4c]
je 0x42df62
cmp ebx, 0x67ba48
je 0x42df67
call fcn.005d29f1
cmp esi, edi
je 0x42e270
test ebx, ebx
jne 0x42df78
call fcn.005d29f1
cmp esi, dword [ebx + 4]
jne 0x42df82
call fcn.005d29f1
cmp dword [esi + 0x10], 0
jne 0x42e256
cmp esi, dword [ebx + 4]
jne 0x42df96
call fcn.005d29f1
cmp dword [esi + 0x5c], 0
je 0x42e256
mov edx, dword [0x677600]
mov eax, dword [edx + 0xc]
mov ecx, 0x677600
call eax
add eax, 0x10
mov dword [esp + 0x24], eax
mov byte [esp + 0x114], 0x13
mov ecx, dword [esp + 0x20]
push ecx
push 0x625d28
lea edi, [esp + 0x2c]
call fcn.0040ac80
mov edx, dword [0x677600]
mov eax, dword [edx + 0xc]
add esp, 8
mov ecx, 0x677600
call eax
add eax, 0x10
mov dword [esp + 0x1c], eax
mov byte [esp + 0x114], 0x14
cmp esi, dword [ebx + 4]
jne 0x42dffe
call fcn.005d29f1
mov ecx, dword [esi + 0x54]
push ecx
push str._08X
lea edi, [esp + 0x24]
call fcn.0040ac80
mov esi, dword [esp + 0x24]
push esi
push str.CheckValue___s
push 0x671404
call fcn.004fc6e0
mov edx, dword [esp + 0x28]
add esp, 0x14
push edx
push esi
call fcn.005d2da6
add esp, 8
test eax, eax
je 0x42e206
mov eax, dword [esp + 0x3c]
push eax
mov ecx, esi
push ecx
call fcn.005d2da6
add esp, 8
test eax, eax
je 0x42e206
mov ebp, esi
mov ecx, dword [ebp - 0x10]
mov edx, dword [ecx]
mov eax, dword [edx + 0x10]
lea esi, [ebp - 0x10]
call eax
cmp dword [esi + 0xc], 0
lea ecx, [esi + 0xc]
jl 0x42e07e
cmp eax, dword [esi]
jne 0x42e07e
mov edi, esi
mov edx, 1
lock xadd dword [ecx], edx
jmp 0x42e0b9
mov ecx, dword [esi + 4]
mov edx, dword [eax]
mov edx, dword [edx]
push 2
push ecx
mov ecx, eax
call edx
mov edi, eax
test edi, edi
je 0x42ddff
mov eax, dword [esi + 4]
mov dword [edi + 4], eax
mov eax, dword [esi + 4]
lea ecx, [eax + eax + 2]
push ecx
add esi, 0x10
lea edx, [eax + eax + 2]
push esi
push edx
lea eax, [edi + 0x10]
push eax
call fcn.005d2a01
add esp, 0x10
lea ebx, [edi + 0x10]
mov dword [esp + 0x18], ebx
mov byte [esp + 0x114], 0x15
mov ecx, dword [esp + 0x20]
push ebx
push ecx
push str.PreWrite_Preload_key___d_value___s
push 0x671404
call fcn.004fc6e0
add esp, 0x10
mov ecx, str.08040804
mov eax, ebp
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x42e10d
test dx, dx
je 0x42e109
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x42e10d
add eax, 4
add ecx, 4
test dx, dx
jne 0x42e0e7
xor eax, eax
jmp 0x42e112
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
sete al
test al, al
je 0x42e132
push str.00000804
mov ebx, 8
lea eax, [esp + 0x1c]
call fcn.004037a0
mov ebx, dword [esp + 0x18]
push 0
push ecx
mov ecx, dword [ebx - 0x10]
mov edx, dword [ecx]
mov eax, dword [edx + 0x10]
lea esi, [ebx - 0x10]
mov dword [esp + 0x38], esp
mov ebp, esp
call eax
cmp dword [esi + 0xc], 0
lea ecx, [esi + 0xc]
jl 0x42e162
cmp eax, dword [esi]
jne 0x42e162
mov edi, esi
mov edx, 1
lock xadd dword [ecx], edx
jmp 0x42e19d
mov ecx, dword [esi + 4]
mov edx, dword [eax]
mov edx, dword [edx]
push 2
push ecx
mov ecx, eax
call edx
mov edi, eax
test edi, edi
je 0x42ddff
mov eax, dword [esi + 4]
mov dword [edi + 4], eax
mov eax, dword [esi + 4]
lea ecx, [eax + eax + 2]
push ecx
lea edx, [esi + 0x10]
push edx
lea eax, [eax + eax + 2]
push eax
lea ecx, [edi + 0x10]
push ecx
call fcn.005d2a01
add esp, 0x10
add edi, 0x10
mov dword [ebp], edi
call fcn.00429c10
add esp, 8
test eax, eax
jne 0x42e1e5
mov edi, dword [esp + 0x20]
push ebx
push edi
push str.Write_Preload_key___d_value___s
push 0x671404
call fcn.004fc6e0
mov edx, dword [esp + 0x34]
mov eax, dword [esp + 0x50]
add esp, 0x10
push 0x10
push ebx
push 1
push 0
push edx
push eax
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
add edi, 1
mov dword [esp + 0x20], edi
mov byte [esp + 0x114], 0x14
lea ecx, [esi + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x42e206
mov ecx, dword [esi]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
push esi
call edx
mov byte [esp + 0x114], 0x13
mov eax, dword [esp + 0x1c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x42e22e
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x114], 0x11
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x42e256
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea esi, [esp + 0x34]
call fcn.00433280
mov esi, dword [esp + 0x38]
mov ebx, dword [esp + 0x34]
mov ebp, dword [esp + 0x14]
jmp 0x42df50
mov ecx, dword [esp + 0x40]
push ecx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
call fcn.004fc910
push str.Rebuild_Preload_Over
push 0x671404
call fcn.004fc6e0
add esp, 8
cmp dword [ebp - 0xc], 0
je 0x42e2d4
cmp dword [esp + 0x28], 0
jne 0x42e2cb
mov esi, dword [sym.imp.USER32.dll_LoadKeyboardLayoutW]
push 8
push ebp
call esi
mov eax, dword [esp + 0x5c]
cmp dword [eax - 0xc], 0
je 0x42e2b9
push 8
push eax
call esi
cmp dword [esp + 0x64], 0
je 0x42e2d4
push 8
push str.00000804
call esi
jmp 0x42e2d4
push 0x10
push ebp
call dword [sym.imp.USER32.dll_LoadKeyboardLayoutW]
lea eax, [ebp - 0x10]
mov byte [esp + 0x114], 9
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x42e2f8
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x114], 2
mov eax, dword [esp + 0x3c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x42e320
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x114], 1
mov eax, dword [esp + 0x5c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x42e348
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push fcn.00403870
push 0x14
push 4
lea ecx, [esp + 0x90]
push ecx
mov byte [esp + 0x124], 0
call fcn.005d26fa
mov dword [esp + 0x114], 0xffffffff
mov eax, dword [esp + 0x68]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x42e391
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x54]
mov ecx, dword [esp + 0x10c]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0xf0]
xor ecx, esp
call fcn.005d28b3
add esp, 0x104
ret