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

Disassembly:
push 0xffffffffffffffff
push 0x530004
mov eax, dword fs:[0]
push eax
sub esp, 0x23c
mov eax, dword [0x56b1dc]
xor eax, esp
mov dword [esp + 0x238], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x56b1dc]
xor eax, esp
push eax
lea eax, [esp + 0x250]
mov dword fs:[0], eax
mov eax, dword [esp + 0x260]
lea ecx, [esp + 0x74]
xor ebp, ebp
push ecx
mov ecx, str.Keyboard_LayoutPreload_
mov dword [esp + 0x38], eax
mov dword [esp + 0x18], ebp
mov dword [esp + 0x60], ebp
call fcn.00402550
push fcn.00402660
push fcn.00402680
push 0x64
push 4
lea edx, [esp + 0x9c]
push edx
mov dword [esp + 0x26c], ebp
call fcn.00501f10
mov byte [esp + 0x258], 1
mov eax, dword [0x5759e8]
mov edx, dword [eax + 0xc]
mov ecx, 0x5759e8
lea esi, [ebp + 1]
mov dword [esp + 0x6c], ebp
call edx
add eax, 0x10
mov dword [esp + 0x60], eax
mov byte [esp + 0x258], 2
mov ecx, dword [esp + 0x74]
lea eax, [esp + 0x54]
push eax
push ecx
push 0x80000001
mov dword [esp + 0x60], ebp
call dword [0x531018]
cmp eax, ebp
jne 0x4235e1
mov edx, dword [0x5759e8]
mov eax, dword [edx + 0xc]
mov ecx, 0x5759e8
mov dword [esp + 0x5c], esi
mov dword [esp + 0x68], 0x18
mov dword [esp + 0x28], ebp
mov dword [esp + 0x30], ebp
call eax
add eax, 0x10
mov dword [esp + 0x38], eax
lea ecx, [esp + 0x8c]
mov byte [esp + 0x258], 3
mov dword [esp + 0x58], esi
mov dword [esp + 0x1c], ecx
cmp dword [esp + 0x30], 0x64
jae 0x4235b9
mov edx, dword [esp + 0x58]
push edx
push 0x542480
lea edi, [esp + 0x40]
mov dword [esp + 0x28], ebp
call fcn.00401f20
xor eax, eax
add esp, 8
mov dword [esp + 0x234], eax
mov dword [esp + 0x238], eax
mov dword [esp + 0x23c], eax
mov dword [esp + 0x240], eax
mov dword [esp + 0x244], eax
mov dword [esp + 0x248], eax
lea eax, [esp + 0x68]
push eax
mov eax, dword [esp + 0x3c]
lea ecx, [esp + 0x238]
push ecx
mov ecx, dword [esp + 0x5c]
lea edx, [esp + 0x30]
push edx
push ebp
push eax
push ecx
mov dword [esp + 0x80], 0x18
call dword [0x531040]
cmp eax, ebp
jne 0x4235b9
lea edx, [esp + 0x18]
push edx
lea ecx, [esp + 0x238]
call fcn.00402550
lea edi, [esp + 0x18]
mov byte [esp + 0x258], 4
call fcn.0040d1b0
mov eax, dword [0x576728]
mov ebx, dword [eax]
mov esi, 0x576724
mov dword [esp + 0x7c], ebx
mov dword [esp + 0x78], esi
mov edi, edi
cmp esi, ebp
mov edi, dword [0x576728]
je 0x423192
cmp esi, 0x576724
je 0x423197
call fcn.00500ad0
cmp ebx, edi
je 0x42324e
mov edx, dword [0x5759e8]
mov eax, dword [edx + 0xc]
mov ecx, 0x5759e8
call eax
add eax, 0x10
mov dword [esp + 0x44], eax
cmp esi, ebp
mov byte [esp + 0x258], 5
jne 0x4231c7
call fcn.00500ad0
cmp ebx, dword [esi + 4]
jne 0x4231d1
call fcn.00500ad0
mov ecx, dword [ebx + 0x54]
push ecx
push str._08x
lea edi, [esp + 0x4c]
call fcn.00401f20
mov esi, dword [esp + 0x4c]
mov edx, dword [esp + 0x20]
push esi
push edx
call fcn.005006a9
add esp, 0x10
or edx, 0xffffffff
test eax, eax
lea eax, [esi - 0x10]
mov byte [esp + 0x258], 4
lea ecx, [eax + 0xc]
je 0x423233
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x42321d
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea esi, [esp + 0x78]
call fcn.00426dc0
mov ebx, dword [esp + 0x7c]
mov esi, dword [esp + 0x78]
jmp 0x423180
mov dword [esp + 0x20], 1
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x42324e
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [esp + 0x70]
push ecx
mov ecx, 0x542904
call fcn.00402550
mov esi, eax
mov eax, 4
lea ecx, [esp + 0x80]
lea edx, [esp + 0x18]
mov byte [esp + 0x258], 6
call fcn.00401d40
mov ecx, dword [esi]
xor edx, edx
cmp ecx, ebp
setne dl
cmp edx, ebp
je 0x4237f9
mov eax, dword [eax]
nop
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x4232b6
cmp dx, bp
je 0x4232b2
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x4232b6
add eax, 4
add ecx, 4
cmp dx, bp
jne 0x423290
xor eax, eax
jmp 0x4232bb
sbb eax, eax
sbb eax, 0xffffffff
cmp eax, ebp
mov eax, dword [esp + 0x80]
sete bl
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x4232e3
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x258], 4
mov eax, dword [esp + 0x70]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x42330b
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
test bl, bl
je 0x423512
mov edx, dword [0x5759e8]
mov eax, dword [edx + 0xc]
mov ecx, 0x5759e8
call eax
add eax, 0x10
mov dword [esp + 0x44], eax
mov ecx, dword [esp + 0x58]
add ecx, 1
push ecx
push 0x542480
lea edi, [esp + 0x4c]
mov byte [esp + 0x260], 7
call fcn.00401f20
xor eax, eax
add esp, 8
mov dword [esp + 0x21e], eax
mov dword [esp + 0x222], eax
mov dword [esp + 0x226], eax
mov dword [esp + 0x22a], eax
mov dword [esp + 0x22e], eax
mov word [esp + 0x232], ax
lea edx, [esp + 0x64]
push edx
mov edx, dword [esp + 0x48]
lea eax, [esp + 0x220]
push eax
mov eax, dword [esp + 0x5c]
lea ecx, [esp + 0x30]
push ecx
push ebp
push edx
push eax
mov word [esp + 0x234], bp
mov dword [esp + 0x7c], 0x18
call dword [0x531040]
cmp eax, ebp
jne 0x4234ea
push 0x10
lea ecx, [esp + 0x220]
push 0
push ecx
call fcn.0050095a
mov edx, dword [0x5759e8]
mov ebp, eax
mov eax, dword [edx + 0xc]
add esp, 0xc
mov ecx, 0x5759e8
call eax
add eax, 0x10
mov dword [esp + 0x24], eax
lea ecx, [esp + 0x24]
push ecx
mov byte [esp + 0x25c], 8
lea ecx, [esp + 0x30]
mov dword [esp + 0x30], ebp
call fcn.00420900
mov edx, dword [esp + 0x24]
cmp dword [edx - 0xc], 0
jl 0x4234c0
mov eax, edx
push 0x542910
push eax
call fcn.0050016e
add esp, 8
test eax, eax
je 0x4234c0
sub eax, dword [esp + 0x24]
sar eax, 1
cmp eax, 0xffffffff
je 0x4234c0
mov ecx, dword [0x576728]
mov ebx, dword [ecx]
mov esi, 0x576724
mov dword [esp + 0x40], ebx
mov dword [esp + 0x3c], esi
test esi, esi
mov edi, dword [0x576728]
je 0x423456
cmp esi, 0x576724
je 0x42345b
call fcn.00500ad0
cmp ebx, edi
je 0x4234c0
test esi, esi
jne 0x423468
call fcn.00500ad0
cmp ebx, dword [esi + 4]
jne 0x423472
call fcn.00500ad0
cmp dword [ebx + 0x54], ebp
jne 0x423487
cmp ebx, dword [esi + 4]
jne 0x423481
call fcn.00500ad0
cmp dword [ebx + 0x5c], 0
jne 0x42349a
lea esi, [esp + 0x3c]
call fcn.00426dc0
mov ebx, dword [esp + 0x40]
mov esi, dword [esp + 0x3c]
jmp 0x423444
push ebp
push str._08x
lea edi, [esp + 0x68]
call fcn.00401f20
add esp, 8
push ebx
push esi
lea edx, [esp + 0x8c]
push edx
push 0x576724
call fcn.00425a60
mov byte [esp + 0x258], 7
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 0x4234e8
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
xor ebp, ebp
mov byte [esp + 0x258], 4
mov eax, dword [esp + 0x44]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x423512
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
cmp dword [esp + 0x20], ebp
jne 0x42357b
mov edx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x18]
mov esi, dword [edx]
lea eax, [ecx - 0x10]
sub esi, 0x10
cmp eax, esi
je 0x423571
cmp dword [esi + 0xc], ebp
lea edi, [esi + 0xc]
jl 0x423562
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x423562
call fcn.004020b0
mov ebx, eax
or eax, 0xffffffff
lock xadd dword [edi], eax
dec eax
test eax, eax
jg 0x423557
mov ecx, dword [esi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push esi
call eax
mov ecx, dword [esp + 0x1c]
add ebx, 0x10
mov dword [ecx], ebx
jmp 0x423571
mov ebx, dword [ecx - 0xc]
mov eax, dword [esp + 0x1c]
push ecx
call fcn.004026c0
xor ebp, ebp
add dword [esp + 0x30], 1
add dword [esp + 0x1c], 4
mov byte [esp + 0x258], 3
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x4235a3
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x58]
add eax, 1
cmp eax, 0x3e8
mov dword [esp + 0x58], eax
jl 0x4230c1
mov byte [esp + 0x258], 2
mov eax, dword [esp + 0x38]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4235e1
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [esp + 0x54]
push ecx
call dword [0x531004]
mov esi, dword [esp + 0x34]
lea ebp, [esi + 0x5c]
push str.______________________________________________________________________
push ebp
mov dword [esp + 0x2c], ebp
call fcn.00466f70
push str.Rebuild_Preload_Brgin
push ebp
call fcn.00466f70
add esp, 0x10
mov ebx, ebp
call fcn.00467100
push str.Delete_Preload
push ebp
call fcn.00466f70
add esp, 8
push str.Keyboard_LayoutPreload_
push 0x80000001
call dword [0x531014]
push str.Create_Preload
push ebp
call fcn.00466f70
add esp, 8
lea edx, [esp + 0x48]
push edx
push str.Keyboard_LayoutPreload_
push 0x80000001
call dword [0x53101c]
xor edi, edi
cmp eax, edi
je 0x423662
mov dword [esp + 0x5c], edi
lea eax, [esp + 0x4c]
push eax
mov ecx, 0x535ef0
mov dword [esp + 0x20], 1
mov dword [esp + 0x34], edi
mov dword [esp + 0x54], 0xffffffff
call fcn.00402550
push 2
lea ecx, [esp + 0x54]
push ecx
push edi
push 0x59
mov byte [esp + 0x268], 9
call dword [0x5313c8]
test eax, eax
je 0x423936
mov edx, dword [esi + 0x2c]
mov eax, dword [esp + 0x50]
push edx
push eax
push str.DefauleIme___08x_QQIme___08x
push ebp
call fcn.00466f70
mov ecx, dword [esp + 0x60]
add esp, 0x10
cmp ecx, dword [esi + 0x2c]
mov ecx, 0x5759e8
jne 0x423803
mov edx, dword [0x5759e8]
mov eax, dword [edx + 0xc]
mov dword [esp + 0x30], 1
call eax
add eax, 0x10
mov dword [esp + 0x20], eax
mov bl, 0xa
mov byte [esp + 0x258], bl
mov ecx, dword [esp + 0x34]
mov edx, dword [ecx + 0x2c]
push edx
push str._08X
lea edi, [esp + 0x28]
call fcn.00401f20
mov esi, dword [esp + 0x28]
add esp, 8
cmp dword [esi - 0xc], 0
je 0x4237cc
mov eax, dword [0x5759e8]
mov edx, dword [eax + 0xc]
mov ecx, 0x5759e8
call edx
add eax, 0x10
mov dword [esp + 0x28], eax
push 1
push 0x542480
lea edi, [esp + 0x30]
mov byte [esp + 0x260], 0xb
call fcn.00401f20
push esi
push 1
push str.PreWrite_Preload_key___d_value___s
push ebp
call fcn.00466f70
add esp, 0x18
push 0
push ecx
lea eax, [esi - 0x10]
mov dword [esp + 0x34], esp
mov edi, esp
call fcn.004020b0
add eax, 0x10
mov dword [edi], eax
call fcn.0041f5a0
mov edi, dword [esp + 0x30]
add esp, 8
test eax, eax
jne 0x4237a9
push esi
push 1
push str.Write_Preload_key___d_value___s
push ebp
call fcn.00466f70
mov eax, dword [esp + 0x58]
add esp, 0x10
push 0x10
push esi
push 1
push 0
push edi
push eax
call dword [0x531010]
mov dword [esp + 0x1c], 2
lea eax, [edi - 0x10]
mov byte [esp + 0x258], bl
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4237cc
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
add esi, 0xfffffff0
mov byte [esp + 0x258], 9
lea ecx, [esi + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x423944
mov ecx, dword [esi]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
push esi
call edx
jmp 0x423944
push 0x80004005
call fcn.004026a0
mov eax, dword [0x5759e8]
mov edx, dword [eax + 0xc]
call edx
add eax, 0x10
mov dword [esp + 0x20], eax
push 1
push 0x542480
lea edi, [esp + 0x28]
mov byte [esp + 0x260], 0xc
call fcn.00401f20
mov eax, dword [esp + 0x58]
push eax
push str._08X
lea edi, [esp + 0x5c]
call fcn.00401f20
mov ecx, dword [esp + 0x5c]
push ecx
push 1
push str.PreWrite_Preload_key___d_value___s
push ebp
call fcn.00466f70
mov edx, dword [0x5759e8]
mov eax, dword [edx + 0xc]
add esp, 0x20
mov ecx, 0x5759e8
call eax
add eax, 0x10
mov dword [esp + 0x38], eax
mov byte [esp + 0x258], 0xd
mov eax, dword [esp + 0x50]
cmp eax, 0x8040804
lea edi, [esp + 0x38]
jne 0x423889
push 0x804
jmp 0x42388a
push eax
push str._08X
call fcn.00401f20
mov esi, dword [esp + 0x40]
add esp, 8
push 0
push ecx
lea edi, [esi - 0x10]
mov eax, edi
mov dword [esp + 0x34], esp
mov ebx, esp
call fcn.004020b0
add eax, 0x10
mov dword [ebx], eax
call fcn.0041f5a0
mov ebx, dword [esp + 0x28]
add esp, 8
test eax, eax
jne 0x4238ef
push esi
push 1
push str.Write_Preload_key___d_value___s
push ebp
call fcn.00466f70
mov ecx, dword [esp + 0x58]
add esp, 0x10
push 0x10
push esi
push 1
push 0
push ebx
push ecx
call dword [0x531010]
mov dword [esp + 0x1c], 2
mov byte [esp + 0x258], 0xc
lea edx, [edi + 0xc]
or eax, 0xffffffff
lock xadd dword [edx], eax
dec eax
test eax, eax
jg 0x423910
mov ecx, dword [edi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push edi
call eax
lea eax, [ebx - 0x10]
mov byte [esp + 0x258], 9
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x423944
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
jmp 0x423944
push str.GetDefaultIme_Error
push ebp
call fcn.00466f70
add esp, 8
xor esi, esi
lea edi, [esp + 0x8c]
lea ecx, [ecx]
mov ecx, dword [edi]
cmp dword [ecx - 0xc], 0
je 0x42396a
mov edx, ecx
push edx
push esi
push str.strHKL__d__value___s
push ebp
call fcn.00466f70
add esp, 0x10
add esi, 1
add edi, 4
cmp esi, 0x14
jl 0x423950
mov dword [esp + 0x18], 0
lea ecx, [ecx]
mov eax, dword [esp + 0x18]
mov eax, dword [esp + eax*4 + 0x8c]
cmp dword [eax - 0xc], 0
je 0x423d14
mov ecx, dword [esp + 0x4c]
push eax
push ecx
call fcn.005006a9
add esp, 8
test eax, eax
je 0x423bc3
mov edx, dword [0x5759e8]
mov eax, dword [edx + 0xc]
mov ecx, 0x5759e8
call eax
add eax, 0x10
mov dword [esp + 0x28], eax
mov ebp, dword [esp + 0x1c]
push ebp
push 0x542480
lea edi, [esp + 0x30]
mov byte [esp + 0x260], 0xe
call fcn.00401f20
mov ecx, dword [esp + 0x20]
mov esi, dword [esp + ecx*4 + 0x94]
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 0x423a12
cmp eax, dword [esi]
jne 0x423a12
mov edi, esi
mov ecx, 1
lock xadd dword [edx], ecx
jmp 0x423a4d
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 0x423e01
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.004ffedf
add esp, 0x10
lea ebx, [edi + 0x10]
mov dword [esp + 0x20], ebx
push ebx
push ebp
mov byte [esp + 0x260], 0xf
mov ecx, dword [esp + 0x2c]
push str.PreWrite_Preload_key___d_value___s
push ecx
call fcn.00466f70
mov edx, dword [esp + 0x28]
mov eax, dword [esp + edx*4 + 0x9c]
add esp, 0x10
mov ecx, str.08040804
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x423aa6
test dx, dx
je 0x423aa2
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x423aa6
add eax, 4
add ecx, 4
test dx, dx
jne 0x423a80
xor eax, eax
jmp 0x423aab
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
sete al
test al, al
je 0x423acb
push str.00000804
mov ebx, 8
lea eax, [esp + 0x24]
call fcn.004026c0
mov ebx, dword [esp + 0x20]
push 0
push ecx
mov ecx, dword [ebx - 0x10]
mov eax, dword [ecx]
mov edx, dword [eax + 0x10]
lea esi, [ebx - 0x10]
mov dword [esp + 0x78], esp
mov ebp, esp
call edx
cmp dword [esi + 0xc], 0
lea ecx, [esi + 0xc]
jl 0x423afb
cmp eax, dword [esi]
jne 0x423afb
mov edi, esi
mov eax, 1
lock xadd dword [ecx], eax
jmp 0x423b36
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 0x423e01
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.004ffedf
add esp, 0x10
add edi, 0x10
mov dword [ebp], edi
call fcn.0041f5a0
mov edi, dword [esp + 0x30]
add esp, 8
test eax, eax
jne 0x423b7e
mov ebp, dword [esp + 0x1c]
mov edx, dword [esp + 0x24]
push ebx
push ebp
push str.Write_Preload_key___d_value___s
push edx
call fcn.00466f70
mov eax, dword [esp + 0x58]
add esp, 0x10
push 0x10
push ebx
push 1
push 0
push edi
push eax
call dword [0x531010]
add ebp, 1
mov dword [esp + 0x1c], ebp
mov byte [esp + 0x258], 0xe
lea ecx, [esi + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x423b9f
mov ecx, dword [esi]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
push esi
call edx
lea eax, [edi - 0x10]
mov byte [esp + 0x258], 9
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x423bc3
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [esp + 0x64]
push ecx
mov ecx, str.00000804
call fcn.00402550
mov byte [esp + 0x258], 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 0x4237f9
mov esi, dword [esp + 0x18]
mov eax, dword [esp + esi*4 + 0x8c]
nop
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x423c26
test dx, dx
je 0x423c22
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x423c26
add eax, 4
add ecx, 4
test dx, dx
jne 0x423c00
xor eax, eax
jmp 0x423c2b
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
sete al
test al, al
jne 0x423c98
lea edx, [esp + 0x2c]
push edx
mov ecx, str.08040804
call fcn.00402550
mov ecx, dword [eax]
or dword [esp + 0x14], 2
xor eax, eax
test ecx, ecx
setne al
test eax, eax
je 0x4237f9
mov eax, dword [esp + esi*4 + 0x8c]
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x423c86
test dx, dx
je 0x423c82
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x423c86
add eax, 4
add ecx, 4
test dx, dx
jne 0x423c60
xor eax, eax
jmp 0x423c8b
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
sete al
test al, al
jne 0x423c98
xor bl, bl
jmp 0x423c9a
mov bl, 1
test byte [esp + 0x14], 2
je 0x423cc6
mov eax, dword [esp + 0x2c]
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 0x423cc6
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [esp + 0x258], 9
test byte [esp + 0x14], 1
je 0x423cfd
mov eax, dword [esp + 0x64]
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 0x423cfd
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
test bl, bl
je 0x423d05
mov dword [esp + 0x6c], edi
add esi, edi
cmp esi, 0x14
mov dword [esp + 0x18], esi
jl 0x423980
mov edx, dword [0x5759e8]
mov eax, dword [edx + 0xc]
mov ecx, 0x5759e8
call eax
add eax, 0x10
mov dword [esp + 0x14], eax
mov byte [esp + 0x258], 0x11
mov ecx, dword [esp + 0x34]
mov edx, dword [ecx + 0x2c]
push edx
push str._08X
lea edi, [esp + 0x1c]
call fcn.00401f20
mov eax, dword [esp + 0x1c]
add esp, 8
cmp dword [eax - 0xc], 0
je 0x423e94
cmp dword [esp + 0x30], 0
jne 0x423e94
cmp dword [esp + 0x264], 0
je 0x423e94
mov edx, dword [0x5759e8]
mov eax, dword [edx + 0xc]
mov ecx, 0x5759e8
call eax
add eax, 0x10
mov dword [esp + 0x20], eax
mov ebp, dword [esp + 0x1c]
push ebp
push 0x542480
lea edi, [esp + 0x28]
mov byte [esp + 0x260], 0x12
call fcn.00401f20
mov esi, dword [esp + 0x1c]
mov ecx, dword [esp + 0x2c]
push esi
push ebp
push str.PreWrite_Preload_key___d_value___s
push ecx
call fcn.00466f70
add esp, 0x18
push 0
push ecx
mov ecx, dword [esi - 0x10]
mov edx, dword [ecx]
mov eax, dword [edx + 0x10]
add esi, 0xfffffff0
mov dword [esp + 0x34], esp
mov ebx, esp
call eax
cmp dword [esi + 0xc], 0
lea edx, [esi + 0xc]
jl 0x423ded
cmp eax, dword [esi]
jne 0x423ded
mov edi, esi
mov ecx, 1
lock xadd dword [edx], ecx
jmp 0x423e29
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 0x423e06
call fcn.004020a0
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.004ffedf
add esp, 0x10
add edi, 0x10
mov dword [ebx], edi
call fcn.0041f5a0
mov esi, dword [esp + 0x28]
add esp, 8
test eax, eax
jne 0x423e70
mov edi, dword [esp + 0x14]
mov ecx, dword [esp + 0x24]
push edi
push ebp
push str.Write_Preload_key___d_value___s
push ecx
call fcn.00466f70
mov edx, dword [esp + 0x58]
add esp, 0x10
push 0x10
push edi
push 1
push 0
push esi
push edx
call dword [0x531010]
add ebp, 1
mov dword [esp + 0x1c], ebp
lea eax, [esi - 0x10]
mov byte [esp + 0x258], 0x11
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x423e94
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [esp + 0x4c]
mov edx, dword [esp + 0x14]
mov ebp, dword [esp + 0x24]
push ecx
push edx
push str.strQQPinyinHKL___s_strDefaultImeHKL___s
push ebp
call fcn.00466f70
mov eax, dword [0x576728]
mov esi, dword [eax]
mov edi, 0x576724
add esp, 0x10
mov dword [esp + 0x40], esi
mov dword [esp + 0x3c], edi
test edi, edi
mov ebx, dword [0x576728]
je 0x423ed6
cmp edi, 0x576724
je 0x423edb
call fcn.00500ad0
cmp esi, ebx
je 0x423f33
test edi, edi
jne 0x423ee8
call fcn.00500ad0
cmp esi, dword [edi + 4]
jne 0x423f06
call fcn.00500ad0
cmp esi, dword [edi + 4]
jne 0x423f06
call fcn.00500ad0
cmp esi, dword [edi + 4]
jne 0x423f06
call fcn.00500ad0
mov ecx, dword [esi + 0x54]
mov edx, dword [esi + 0x5c]
mov eax, dword [esi + 0x10]
push ecx
push edx
push eax
push str.m_mapIME_type___d_inuse___d_value___08x
push ebp
call fcn.00466f70
add esp, 0x14
lea esi, [esp + 0x3c]
call fcn.00426dc0
mov esi, dword [esp + 0x40]
mov edi, dword [esp + 0x3c]
jmp 0x423ec4
mov ecx, dword [0x576728]
mov esi, dword [ecx]
mov ebx, 0x576724
mov dword [esp + 0x40], esi
mov dword [esp + 0x3c], ebx
jmp 0x423f50
test ebx, ebx
mov edi, dword [0x576728]
je 0x423f62
cmp ebx, 0x576724
je 0x423f67
call fcn.00500ad0
cmp esi, edi
je 0x424270
test ebx, ebx
jne 0x423f78
call fcn.00500ad0
cmp esi, dword [ebx + 4]
jne 0x423f82
call fcn.00500ad0
cmp dword [esi + 0x10], 0
jne 0x424256
cmp esi, dword [ebx + 4]
jne 0x423f96
call fcn.00500ad0
cmp dword [esi + 0x5c], 0
je 0x424256
mov edx, dword [0x5759e8]
mov eax, dword [edx + 0xc]
mov ecx, 0x5759e8
call eax
add eax, 0x10
mov dword [esp + 0x34], eax
mov ecx, dword [esp + 0x1c]
push ecx
push 0x542480
lea edi, [esp + 0x3c]
mov byte [esp + 0x260], 0x13
call fcn.00401f20
mov edx, dword [0x5759e8]
mov eax, dword [edx + 0xc]
add esp, 8
mov ecx, 0x5759e8
call eax
add eax, 0x10
mov dword [esp + 0x18], eax
mov byte [esp + 0x258], 0x14
cmp esi, dword [ebx + 4]
jne 0x423ffe
call fcn.00500ad0
mov ecx, dword [esi + 0x54]
push ecx
push str._08X
lea edi, [esp + 0x20]
call fcn.00401f20
mov esi, dword [esp + 0x20]
mov edx, dword [esp + 0x2c]
push esi
push str.CheckValue___s
push edx
call fcn.00466f70
mov eax, dword [esp + 0x28]
add esp, 0x14
push eax
push esi
call fcn.005006a9
add esp, 8
test eax, eax
je 0x424206
mov ecx, dword [esp + 0x4c]
push ecx
mov edx, esi
push edx
call fcn.005006a9
add esp, 8
test eax, eax
je 0x424206
mov ebp, esi
mov ecx, dword [ebp - 0x10]
mov eax, dword [ecx]
mov edx, dword [eax + 0x10]
lea esi, [ebp - 0x10]
call edx
cmp dword [esi + 0xc], 0
lea ecx, [esi + 0xc]
jl 0x42407e
cmp eax, dword [esi]
jne 0x42407e
mov edi, esi
mov eax, 1
lock xadd dword [ecx], eax
jmp 0x4240b9
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 0x423e01
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.004ffedf
add esp, 0x10
lea ebx, [edi + 0x10]
mov dword [esp + 0x20], ebx
mov ecx, dword [esp + 0x1c]
push ebx
push ecx
mov byte [esp + 0x260], 0x15
mov edx, dword [esp + 0x2c]
push str.PreWrite_Preload_key___d_value___s
push edx
call fcn.00466f70
add esp, 0x10
mov ecx, str.08040804
mov eax, ebp
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x42410d
test dx, dx
je 0x424109
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x42410d
add eax, 4
add ecx, 4
test dx, dx
jne 0x4240e7
xor eax, eax
jmp 0x424112
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
sete al
test al, al
je 0x424132
push str.00000804
mov ebx, 8
lea eax, [esp + 0x24]
call fcn.004026c0
mov ebx, dword [esp + 0x20]
push 0
push ecx
mov ecx, dword [ebx - 0x10]
mov eax, dword [ecx]
mov edx, dword [eax + 0x10]
lea esi, [ebx - 0x10]
mov dword [esp + 0x34], esp
mov ebp, esp
call edx
cmp dword [esi + 0xc], 0
lea ecx, [esi + 0xc]
jl 0x424162
cmp eax, dword [esi]
jne 0x424162
mov edi, esi
mov eax, 1
lock xadd dword [ecx], eax
jmp 0x42419d
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 0x423e01
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.004ffedf
add esp, 0x10
add edi, 0x10
mov dword [ebp], edi
call fcn.0041f5a0
add esp, 8
test eax, eax
jne 0x4241e5
mov edi, dword [esp + 0x1c]
mov edx, dword [esp + 0x24]
push ebx
push edi
push str.Write_Preload_key___d_value___s
push edx
call fcn.00466f70
mov eax, dword [esp + 0x44]
mov ecx, dword [esp + 0x58]
add esp, 0x10
push 0x10
push ebx
push 1
push 0
push eax
push ecx
call dword [0x531010]
add edi, 1
mov dword [esp + 0x1c], edi
mov byte [esp + 0x258], 0x14
lea edx, [esi + 0xc]
or eax, 0xffffffff
lock xadd dword [edx], eax
dec eax
test eax, eax
jg 0x424206
mov ecx, dword [esi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push esi
call eax
mov byte [esp + 0x258], 0x13
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x42422e
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x258], 0x11
mov eax, dword [esp + 0x34]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x424256
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea esi, [esp + 0x3c]
call fcn.00426dc0
mov esi, dword [esp + 0x40]
mov ebx, dword [esp + 0x3c]
mov ebp, dword [esp + 0x24]
jmp 0x423f50
mov ecx, dword [esp + 0x48]
push ecx
call dword [0x531004]
mov ebx, ebp
call fcn.00467100
push str.Rebuild_Preload_Over
push ebp
call fcn.00466f70
mov edi, dword [esp + 0x1c]
add esp, 8
cmp dword [edi - 0xc], 0
je 0x4242d6
cmp dword [esp + 0x30], 0
jne 0x4242cd
mov esi, dword [0x5314d4]
push 8
push edi
call esi
mov eax, dword [esp + 0x60]
cmp dword [eax - 0xc], 0
je 0x4242bb
push 8
push eax
call esi
cmp dword [esp + 0x6c], 0
je 0x4242d6
push 8
push str.00000804
call esi
jmp 0x4242d6
push 0x10
push edi
call dword [0x5314d4]
lea eax, [edi - 0x10]
mov byte [esp + 0x258], 9
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x4242fa
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x258], 2
mov eax, dword [esp + 0x4c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x424322
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x258], 1
mov eax, dword [esp + 0x60]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x42434a
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push fcn.00402660
push 0x64
push 4
lea ecx, [esp + 0x98]
push ecx
mov byte [esp + 0x268], 0
call fcn.005019d2
mov dword [esp + 0x258], 0xffffffff
mov eax, dword [esp + 0x74]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x424393
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x5c]
mov ecx, dword [esp + 0x250]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x238]
xor ecx, esp
call fcn.004ff939
add esp, 0x248
ret 8