Function at 0x407ef0
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x4d180c
mov eax, dword fs:[0]
push eax
sub esp, 0x98
push ebx
push esi
push edi
mov eax, dword [0x50397c]
xor eax, esp
push eax
lea eax, [esp + 0xa8]
mov dword fs:[0], eax
push 1
mov ecx, 0x4e3790
call fcn.00417610
xor ebx, ebx
add esp, 4
cmp eax, ebx
je 0x407f54
push str.SetDllDirectoryW
push eax
call dword [0x4d528c]
cmp eax, ebx
je 0x407f54
push 0x4e355c
call eax
call dword [0x4d5300]
mov dword [esp + 0x50], vtable.CSingleModule.0
mov dword [esp + 0x54], ebx
lea eax, [esp + 0x50]
mov dword [esp + 0xb0], ebx
call fcn.00429ba0
test eax, eax
je 0x408015
call dword [0x4d543c]
cmp eax, ebx
jne 0x407f86
xor esi, esi
jmp 0x407f8d
call fcn.00429c30
mov esi, eax
push esi
call dword [0x4d5394]
test eax, eax
je 0x407fd7
push esi
call dword [0x4d5410]
test eax, eax
je 0x407fcc
xor edi, edi
call dword [0x4d54a4]
cmp esi, ebx
je 0x407fb1
mov edi, eax
push 9
push esi
call dword [0x4d53dc]
cmp edi, ebx
je 0x407fec
push edi
call dword [0x4d53d0]
test eax, eax
je 0x407fec
push edi
jmp 0x407fe6
push 4
push esi
call dword [0x4d53dc]
jmp 0x407fec
push 4
push esi
call dword [0x4d53dc]
cmp dword [ebp + 0x14], ebx
je 0x407fec
push esi
call dword [0x4d5420]
mov eax, dword [esp + 0x54]
cmp eax, ebx
je 0x407ffb
push eax
call dword [0x4d52d8]
xor eax, eax
mov ecx, dword [esp + 0xa8]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
mov eax, dword [ebp + 8]
push ebx
mov dword [0x50dda0], eax
call dword [0x4d5558]
lea ebx, [esp + 0x14]
call fcn.0042f2e0
mov byte [esp + 0xb0], 1
mov edx, dword [esp + 0x14]
mov eax, dword [edx - 0xc]
test eax, eax
jle 0x408066
lea ecx, [eax - 1]
test ecx, ecx
jl 0x4080ff
cmp ecx, eax
jg 0x4080ff
movzx eax, word [edx + ecx*2]
cmp ax, 0x5c
je 0x408066
push 0x5c
mov edi, ebx
call fcn.00406b00
lea ecx, [esp + 0x14]
push ecx
lea edx, [esp + 0x1c]
push edx
mov ebx, str.zlib1.dll
call fcn.004065b0
add esp, 8
mov byte [esp + 0xb0], 2
mov ecx, dword [eax]
call fcn.004238d0
mov byte [esp + 0xb0], 1
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 0x4080b4
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
call fcn.0042bc30
mov ecx, 0x50b258
mov dword [esp + 0x84], ecx
call fcn.004299f0
push 0x8dc
mov byte [esp + 0xb4], 3
call fcn.004a91fd
add esp, 4
mov dword [esp + 0x10], eax
xor esi, esi
cmp eax, esi
mov byte [esp + 0xb0], 4
je 0x408109
push eax
call fcn.0040a060
mov ebx, eax
mov dword [esp + 0x1c], ebx
jmp 0x40810f
push 0x80070057
call fcn.00402940
mov dword [esp + 0x1c], esi
mov ebx, esi
cmp ebx, esi
mov byte [esp + 0xb0], 3
jne 0x408196
mov eax, dword [0x50b260]
cmp eax, esi
je 0x408131
push eax
call dword [0x4d5270]
mov dword [0x50b260], esi
mov eax, dword [0x50b25c]
cmp eax, esi
mov edi, dword [0x4d52d8]
je 0x408149
push eax
call edi
mov dword [0x50b25c], esi
mov byte [esp + 0xb0], 0
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x408171
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x54]
cmp eax, esi
je 0x40817c
push eax
call edi
xor eax, eax
mov ecx, dword [esp + 0xa8]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
mov edi, ebx
call fcn.00408530
mov dword [esp + 0x70], esi
mov dword [esp + 0x74], esi
mov dword [esp + 0x78], esi
mov dword [esp + 0x7c], esi
mov byte [esp + 0xb0], 5
push 1
lea edi, [esp + 0x70]
mov dword [esp + 0x84], esi
call fcn.0043c7e0
xor eax, eax
mov dword [esp + 0x38], esi
mov dword [esp + 0x3c], eax
mov dword [esp + 0x40], eax
mov dword [esp + 0x44], eax
lea esi, [esp + 0x38]
mov eax, edi
call fcn.0043c970
mov ecx, dword [0x4e2844]
mov edi, dword [0x4e2840]
lea edx, [esp + 0x48]
push edx
mov dword [esp + 0x34], ecx
xor esi, esi
push str.HandInputPosX
mov ecx, str.SOFTWARETencentQQPinyin
mov dword [esp + 0x34], edi
mov dword [esp + 0x50], esi
mov dword [esp + 0x54], esi
call fcn.00428820
add esp, 8
test eax, eax
je 0x40850a
lea eax, [esp + 0x4c]
push eax
push str.HandInputPosY
mov ecx, str.SOFTWARETencentQQPinyin
call fcn.00428820
add esp, 8
test eax, eax
je 0x40850a
mov eax, dword [esp + 0x4c]
mov edx, dword [esp + 0x48]
lea ecx, [eax + 0x1d]
add edi, edx
cmp eax, ecx
mov dword [esp + 0x5c], edx
mov dword [esp + 0x60], eax
mov dword [esp + 0x20], eax
jg 0x408261
mov dword [esp + 0x20], ecx
cmp edx, edi
mov esi, edx
jg 0x408269
mov esi, edi
cmp eax, ecx
mov dword [esp + 0x28], eax
jl 0x408275
mov dword [esp + 0x28], ecx
cmp edx, edi
mov dword [esp + 0x34], edx
jl 0x408281
mov dword [esp + 0x34], edi
mov ebx, dword [esp + 0x3c]
mov edi, dword [esp + 0x44]
cmp ebx, edi
jg 0x40828f
mov ebx, edi
mov eax, dword [esp + 0x38]
mov edx, dword [esp + 0x40]
cmp eax, edx
mov ecx, eax
jg 0x40829f
mov ecx, edx
cmp dword [esp + 0x3c], edi
jge 0x4082a9
mov edi, dword [esp + 0x3c]
cmp eax, edx
mov dword [esp + 0x18], edi
mov dword [esp + 0x24], eax
jl 0x4082b9
mov dword [esp + 0x24], edx
mov eax, dword [esp + 0x34]
sub eax, ecx
mov dword [esp + 0x58], eax
cdq
mov edi, eax
mov eax, dword [esp + 0x24]
sub eax, esi
xor edi, edx
mov dword [esp + 0x10], eax
sub edi, edx
cdq
xor eax, edx
sub eax, edx
cmp edi, eax
mov eax, dword [esp + 0x58]
jg 0x4082e5
mov eax, dword [esp + 0x10]
sub ecx, dword [esp + 0x24]
sub esi, dword [esp + 0x34]
cdq
mov edi, eax
xor edi, edx
sub edi, edx
mov eax, ecx
cdq
mov ecx, eax
xor ecx, edx
sub ecx, edx
mov eax, esi
mov esi, dword [esp + 0x28]
cdq
xor eax, edx
sub eax, edx
add ecx, eax
xor edx, edx
cmp ecx, edi
mov edi, dword [esp + 0x18]
setg dl
sub edi, dword [esp + 0x20]
sub esi, ebx
mov eax, esi
mov dword [esp + 0x10], edx
cdq
mov ecx, eax
xor ecx, edx
sub ecx, edx
mov eax, edi
cdq
xor eax, edx
sub eax, edx
cmp ecx, eax
mov eax, esi
jg 0x408337
mov eax, edi
sub ebx, dword [esp + 0x18]
cdq
mov ecx, eax
mov eax, dword [esp + 0x20]
sub eax, dword [esp + 0x28]
xor ecx, edx
mov esi, eax
sub ecx, edx
mov eax, ebx
cdq
mov edi, eax
xor edi, edx
sub edi, edx
mov eax, esi
cdq
xor eax, edx
sub eax, edx
add edi, eax
xor eax, eax
cmp edi, ecx
setg al
cmp dword [esp + 0x10], 0
je 0x408370
test eax, eax
jne 0x408388
mov eax, dword [esp + 0x40]
sub eax, dword [esp + 0x2c]
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0x44]
sub eax, dword [esp + 0x30]
mov dword [esp + 0x60], eax
mov ebx, dword [esp + 0x1c]
mov edi, dword [esp + 0x2c]
xor esi, esi
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x60]
mov edx, dword [esp + 0x5c]
push 1
push eax
mov eax, dword [ebx + 4]
push edi
push ecx
push edx
push eax
call dword [0x4d540c]
mov ecx, dword [ebx + 4]
push 4
push ecx
call dword [0x4d53dc]
push esi
push 1
lea eax, [esp + 0x18]
mov dword [esp + 0x18], 0x121
call fcn.0042bad0
mov eax, dword [ebx + 4]
push eax
push str.Tencent_QQpinyin_Hand_Input_JKR
push eax
call dword [0x4d5440]
mov edi, dword [0x4d541c]
push esi
push esi
push esi
lea edx, [esp + 0x94]
push edx
call edi
test eax, eax
je 0x40842e
mov esi, dword [0x4d5408]
jmp 0x408400
lea eax, [esp + 0x88]
push eax
call esi
lea ecx, [esp + 0x88]
push ecx
call dword [0x4d5418]
push 0
push 0
push 0
lea edx, [esp + 0x94]
push edx
call edi
test eax, eax
jne 0x408400
xor esi, esi
mov eax, dword [ebx]
mov edx, dword [eax + 4]
push 1
mov ecx, ebx
call edx
cmp byte [0x50de5d], 0
je 0x40844e
call fcn.0042bea0
mov byte [0x50de5d], 0
lea edi, [esp + 0x6c]
call fcn.0043c7a0
mov eax, dword [0x50de88]
cmp eax, esi
mov dword [0x50de8c], esi
mov dword [0x50de90], esi
je 0x408479
push eax
call dword [0x4d5240]
mov dword [0x50de88], esi
call dword [0x4d5554]
mov ebx, dword [esp + 0x90]
lea edi, [esp + 0x6c]
call fcn.0043c750
mov eax, dword [0x50b260]
cmp eax, esi
je 0x4084a5
push eax
call dword [0x4d5270]
mov dword [0x50b260], esi
mov eax, dword [0x50b25c]
cmp eax, esi
mov edi, dword [0x4d52d8]
je 0x4084bd
push eax
call edi
mov dword [0x50b25c], esi
mov byte [esp + 0xb0], 0
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4084e5
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x54]
cmp eax, esi
je 0x4084f0
push eax
call edi
mov eax, ebx
mov ecx, dword [esp + 0xa8]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10
mov eax, dword [esp + 0x40]
sub eax, edi
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0x44]
sub eax, dword [esp + 0x30]
mov dword [esp + 0x60], eax
jmp 0x408392