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

Disassembly:
push 0xffffffffffffffff
push 0x52fe04
mov eax, dword fs:[0]
push eax
sub esp, 0x5c
push ebx
push ebp
push esi
push edi
mov eax, dword [0x56b1dc]
xor eax, esp
push eax
lea eax, [esp + 0x70]
mov dword fs:[0], eax
mov esi, dword [esp + 0x84]
mov ebx, ecx
mov ebp, dword [esp + 0x80]
lea edi, [ebp + 0x38]
mov eax, ebx
call fcn.00401dd0
push 0xf
call dword [0x5314f8]
mov ebx, dword [ebx]
mov dword [esp + 0x2c], eax
mov eax, dword [ebp + 0x30]
push ebx
push eax
call fcn.00433570
xor ebx, ebx
cmp eax, ebx
mov dword [esi], eax
je 0x432481
mov eax, dword [eax + 0x30]
cmp eax, ebx
je 0x4319db
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx]
push 1
call eax
mov ecx, dword [esi]
mov dword [ecx + 0x30], ebx
mov edx, dword [esi]
mov ecx, dword [edx + 0x34]
cmp ecx, ebx
je 0x4319f1
mov eax, dword [ecx]
mov edx, dword [eax]
push 1
call edx
mov eax, dword [esi]
mov dword [eax + 0x34], ebx
mov ecx, dword [esi]
add ecx, 4
push ecx
mov ecx, str.10000000_0000_0000_0000_000000000001
call fcn.0040d440
mov edi, dword [ebp + 0x2c]
add esp, 4
test al, al
je 0x431a15
cmp edi, ebx
je 0x431a2a
push 3
push ebx
push ebx
jmp 0x431a25
cmp edi, ebx
je 0x431a2a
mov esi, dword [esi]
mov eax, dword [esi + 0xc]
mov esi, dword [esi + 8]
push 1
push eax
push esi
call fcn.00469700
mov eax, dword [ebp + 0x2c]
call fcn.004686f0
test eax, eax
je 0x431a46
mov esi, dword [ebp + 0x2c]
call fcn.00468750
mov esi, dword [ebp + 0x2c]
call fcn.004687a0
mov edi, dword [0x576b7c]
xor esi, esi
xor edx, edx
xor ecx, ecx
mov dword [esp + 0x20], edi
mov dword [esp + 0x4c], esi
mov dword [esp + 0x50], edx
mov dword [esp + 0x54], ecx
mov dword [esp + 0x78], ebx
mov dword [esp + 0x3c], ebx
mov dword [esp + 0x40], ebx
mov dword [esp + 0x44], ebx
mov byte [esp + 0x78], 1
xor eax, eax
cmp dword [0x576b6c], 4
mov dword [esp + 0x28], eax
jne 0x431a8f
mov eax, 1
mov dword [esp + 0x28], eax
cmp dword [0x576b84], ebx
je 0x431ac3
cmp dword [0x576b9c], ebx
jne 0x431ac3
test dword [0x576b8c], 0x100
je 0x431ac3
cmp eax, ebx
je 0x431ab9
mov dword [esp + 0x18], 0x572e68
jmp 0x431ad7
mov dword [esp + 0x18], 0x572e20
jmp 0x431ad7
cmp eax, ebx
mov dword [esp + 0x18], 0x572e44
jne 0x431ad7
mov dword [esp + 0x18], 0x572dfc
cmp edi, ebx
mov dword [esp + 0x24], ebx
mov dword [esp + 0x1c], ebx
jbe 0x431bcc
mov edi, ebx
jmp 0x431af8
mov ecx, dword [esp + 0x54]
mov esi, dword [esp + 0x4c]
mov eax, dword [esp + 0x18]
mov ebp, dword [eax + edi*4]
test ebp, ebp
je 0x431b72
mov eax, ebp
lea edx, [eax + 2]
jmp 0x431b10
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x431b10
sub eax, edx
sar eax, 1
mov esi, eax
xor ecx, ecx
lea edi, [esi + 1]
mov eax, edi
mov edx, 2
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.005002a8
mov ebx, eax
add esp, 4
lea eax, [edi + edi]
push eax
push 0
push ebx
mov dword [esp + 0x30], ebx
call fcn.00508d80
add esp, 0xc
lea ecx, [esi + esi]
push ecx
push ebp
push ebx
call fcn.00505700
mov ecx, dword [esp + 0x60]
mov edx, dword [esp + 0x5c]
mov esi, dword [esp + 0x58]
mov edi, dword [esp + 0x28]
add esp, 0xc
test esi, esi
je 0x431b93
mov eax, edx
sub eax, esi
sub ecx, esi
sar eax, 2
sar ecx, 2
cmp eax, ecx
jae 0x431b93
mov eax, edx
mov dword [edx], ebx
lea edx, [eax + 4]
mov dword [esp + 0x50], edx
jmp 0x431bbb
cmp esi, edx
mov ebp, edx
jbe 0x431b9e
call fcn.00500ad0
push ebp
lea eax, [esp + 0x4c]
push eax
lea edx, [esp + 0x2c]
push edx
lea eax, [esp + 0x3c]
push eax
lea eax, [esp + 0x58]
call fcn.004a7190
mov edx, dword [esp + 0x50]
add edi, 1
cmp edi, dword [esp + 0x20]
mov dword [esp + 0x1c], edi
jb 0x431af0
xor ebx, ebx
cmp dword [esp + 0x28], ebx
jne 0x431fb4
mov edx, dword [0x5759e8]
mov eax, dword [edx + 0xc]
mov ecx, 0x5759e8
call eax
lea ebp, [eax + 0x10]
mov dword [esp + 0x24], ebp
mov byte [esp + 0x78], 2
cmp dword [0x57673c], 1
jne 0x431f41
lea ecx, [esp + 0x58]
push ecx
mov ecx, 0x542e58
call fcn.00402550
lea edx, [esp + 0x5c]
push edx
mov ecx, 0x543250
mov byte [esp + 0x7c], 3
call fcn.00402550
lea eax, [esp + 0x60]
push eax
mov ecx, 0x542e70
mov byte [esp + 0x7c], 4
call fcn.00402550
lea ecx, [esp + 0x64]
push ecx
mov ecx, 0x543620
mov byte [esp + 0x7c], 5
call fcn.00402550
lea edx, [esp + 0x68]
push edx
mov ecx, 0x54362c
mov byte [esp + 0x7c], 6
call fcn.00402550
lea eax, [esp + 0x6c]
push eax
mov ecx, 0x535ef0
mov byte [esp + 0x7c], 7
call fcn.00402550
mov byte [esp + 0x78], 8
mov ecx, dword [esp + 0x58]
xor edi, edi
xor esi, esi
cmp dword [ecx - 0xc], ebx
je switch.0x00431d2c
lea ebx, [ebx]
lea edx, [esp + 0x28]
push edx
mov ecx, 0x57674c
call fcn.00402550
mov ecx, dword [eax]
xor eax, eax
test ecx, ecx
setne al
test eax, eax
je 0x431d17
mov eax, dword [esp + esi*4 + 0x58]
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x431cd6
test dx, dx
je 0x431cd2
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x431cd6
add eax, 4
add ecx, 4
test dx, dx
jne 0x431cb0
xor eax, eax
jmp 0x431cdb
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
mov eax, dword [esp + 0x28]
sete bl
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x431d00
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
test bl, bl
jne 0x431d21
mov ecx, dword [esp + esi*4 + 0x5c]
add esi, 1
cmp dword [ecx - 0xc], 0
jne 0x431c90
jmp switch.0x00431d2c
push 0x80004005
call fcn.004026a0
cmp esi, 4
mov edi, esi
ja 0x431e23
jmp dword [edi*4 + 0x43249c]
push 0x20
call fcn.00500104
add esp, 4
test eax, eax
je 0x431d4a
call fcn.00430830
mov esi, eax
jmp 0x431d4c
xor esi, esi
mov edi, str.plyl
push 0xff
push 1
mov eax, esi
mov dword [esp + 0x30], esi
call fcn.00430870
test esi, esi
je 0x431d74
lea ebx, [esp + 0x28]
lea esi, [esp + 0x38]
call fcn.00492700
push 0x20
call fcn.00500104
add esp, 4
test eax, eax
je 0x431d8b
call fcn.00430830
mov esi, eax
jmp 0x431d8d
xor esi, esi
push 0x60
push 9
mov edi, str._pinyin_
mov eax, esi
mov dword [esp + 0x30], esi
call fcn.00430870
test esi, esi
jmp 0x431f0d
push 0x20
call fcn.00500104
add esp, 4
test eax, eax
je 0x431dc4
call fcn.00430830
mov esi, eax
mov edi, str.pnyn
jmp 0x431d51
xor esi, esi
mov edi, str.pnyn
jmp 0x431d51
push 0x20
call fcn.00500104
add esp, 4
test eax, eax
je 0x431dec
call fcn.00430830
mov esi, eax
mov edi, str.pcyc
jmp 0x431d51
xor esi, esi
mov edi, str.pcyc
jmp 0x431d51
push 0x20
call fcn.00500104
add esp, 4
test eax, eax
je 0x431e17
call fcn.00430830
mov esi, eax
mov edi, str.pyyy
jmp 0x431d51
xor esi, esi
mov edi, str.pyyy
jmp 0x431d51
push 0x20
call fcn.00500104
mov esi, eax
add esp, 4
mov dword [esp + 0x28], esi
xor ebx, ebx
cmp esi, ebx
mov byte [esp + 0x78], 9
je 0x431e72
mov edx, dword [0x5759e8]
mov eax, dword [edx + 0xc]
mov ecx, 0x5759e8
call eax
add eax, 0x10
mov dword [esi], eax
call fcn.00402600
xor eax, eax
mov dword [esi + 4], eax
mov dword [esi + 8], eax
mov dword [esi + 0xc], eax
mov dword [esi + 0x10], eax
mov dword [esi + 0x14], ebx
mov dword [esi + 0x18], ebx
mov byte [esi + 0x1c], 0xff
jmp 0x431e74
xor esi, esi
push 0xff
mov byte [esp + 0x7c], 8
push 1
mov edi, str.pnyn
mov eax, esi
mov dword [esp + 0x30], esi
call fcn.00430870
cmp esi, ebx
je 0x431ea1
lea ebx, [esp + 0x28]
lea esi, [esp + 0x38]
call fcn.00492700
push 0x20
call fcn.00500104
mov esi, eax
add esp, 4
mov dword [esp + 0x28], esi
xor ebx, ebx
cmp esi, ebx
mov byte [esp + 0x78], 0xa
je 0x431ef0
mov edx, dword [0x5759e8]
mov eax, dword [edx + 0xc]
mov ecx, 0x5759e8
call eax
add eax, 0x10
mov dword [esi], eax
call fcn.00402600
xor eax, eax
mov dword [esi + 4], eax
mov dword [esi + 8], eax
mov dword [esi + 0xc], eax
mov dword [esi + 0x10], eax
mov dword [esi + 0x14], ebx
mov dword [esi + 0x18], ebx
mov byte [esi + 0x1c], 0xff
jmp 0x431ef2
xor esi, esi
push 0x60
mov byte [esp + 0x7c], 8
push 9
mov edi, str._pinyin_
mov eax, esi
mov dword [esp + 0x30], esi
call fcn.00430870
cmp esi, ebx
je 0x431f1c
lea ebx, [esp + 0x28]
lea esi, [esp + 0x38]
call fcn.00492700
push fcn.00402660
push 6
push 4
lea ecx, [esp + 0x64]
push ecx
mov dword [esp + 0x28], 5
mov byte [esp + 0x88], 2
call fcn.005019d2
jmp 0x431f8a
push 0x20
call fcn.00500104
add esp, 4
cmp eax, ebx
je 0x431f58
call fcn.00430830
mov esi, eax
jmp 0x431f5a
xor esi, esi
push 0xff
push 1
mov edi, str.pinyin
mov eax, esi
mov dword [esp + 0x30], esi
call fcn.00430870
cmp esi, ebx
je 0x431f82
lea ebx, [esp + 0x28]
lea esi, [esp + 0x38]
call fcn.00492700
mov dword [esp + 0x18], 7
lea eax, [ebp - 0x10]
mov byte [esp + 0x78], 1
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x432038
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
jmp 0x432038
push 0x20
call fcn.00500104
mov esi, eax
add esp, 4
mov dword [esp + 0x28], esi
cmp esi, ebx
mov byte [esp + 0x78], 0xb
je 0x432001
mov edx, dword [0x5759e8]
mov eax, dword [edx + 0xc]
mov ecx, 0x5759e8
call eax
add eax, 0x10
mov dword [esi], eax
call fcn.00402600
xor eax, eax
mov dword [esi + 4], eax
mov dword [esi + 8], eax
mov dword [esi + 0xc], eax
mov dword [esi + 0x10], eax
mov dword [esi + 0x14], ebx
mov dword [esi + 0x18], ebx
mov byte [esi + 0x1c], 0xff
jmp 0x432003
xor esi, esi
push 0xff
mov byte [esp + 0x7c], 1
push 2
mov edi, 0x543314
mov eax, esi
mov dword [esp + 0x30], esi
call fcn.00430870
cmp esi, ebx
je 0x432030
lea ebx, [esp + 0x28]
lea esi, [esp + 0x38]
call fcn.00492700
mov dword [esp + 0x18], 1
cmp dword [0x577024], 0
je 0x4321b1
mov ecx, dword [esp + 0x80]
mov ebp, dword [ecx + 0x2c]
test ebp, ebp
je 0x4322dd
mov eax, dword [ebp + 0x58]
xor edx, edx
cmp dword [0x577028], edx
setne dl
test eax, eax
mov esi, edx
je 0x432079
mov eax, dword [eax + 8]
test eax, eax
je 0x432079
push eax
call dword [0x531328]
mov edi, dword [ebp + 0x58]
test edi, edi
je 0x4320e2
mov ebx, esi
sub ebx, 4
neg ebx
sbb ebx, ebx
and ebx, esi
cmp dword [edi + 0xb4], 1
jne 0x43209c
cmp dword [edi + 0x84], ebx
je 0x4320bd
lea eax, [edi + 0xac]
test eax, eax
je 0x4320a9
add dword [eax], 1
mov esi, dword [edi + 0x24]
test esi, esi
je 0x4320bd
call fcn.004955b0
mov esi, dword [edi + 0x24]
call fcn.004955b0
test ebx, ebx
mov dword [edi + 0xb4], 1
je 0x4320dc
cmp ebx, 1
je 0x4320dc
mov dword [edi + 0x84], 0
jmp 0x4320e2
mov dword [edi + 0x84], ebx
mov eax, dword [ebp + 0x58]
test eax, eax
mov edi, dword [0x531324]
je 0x4320f9
mov eax, dword [eax + 8]
test eax, eax
je 0x4320f9
push eax
call edi
mov eax, dword [esp + 0x80]
mov esi, dword [eax + 0x2c]
mov eax, dword [esi + 0x58]
test eax, eax
je 0x432118
mov eax, dword [eax + 8]
test eax, eax
je 0x432118
push eax
call dword [0x531328]
mov eax, dword [esi + 0x4c]
test eax, eax
je 0x43212a
lea ecx, [esp + 0x48]
push ecx
push eax
call fcn.0046fc40
mov esi, dword [esi + 0x58]
test esi, esi
je 0x43213b
mov esi, dword [esi + 8]
test esi, esi
je 0x43213b
push esi
call edi
mov edx, dword [esp + 0x80]
mov esi, dword [edx + 0x2c]
mov eax, dword [esi + 0x58]
test eax, eax
je 0x43215a
mov eax, dword [eax + 8]
test eax, eax
je 0x43215a
push eax
call dword [0x531328]
mov eax, dword [esi + 0x4c]
test eax, eax
je 0x43216c
lea ecx, [esp + 0x38]
push ecx
push eax
call fcn.0046f8a0
mov esi, dword [esi + 0x58]
test esi, esi
je 0x43217d
mov esi, dword [esi + 8]
test esi, esi
je 0x43217d
push esi
call edi
mov ebx, dword [esp + 0x80]
mov edi, dword [esp + 0x18]
mov esi, dword [ebx + 0x2c]
call fcn.004689a0
mov edx, dword [esp + 0x84]
mov eax, dword [edx]
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x2c]
push ecx
push edx
mov edx, dword [ebx + 0x2c]
lea ecx, [eax + 0x28]
add eax, 0x34
jmp 0x4322d5
mov ebp, dword [esp + 0x80]
mov ebx, dword [ebp + 0x2c]
test ebx, ebx
je 0x4322dd
mov eax, dword [ebx + 0x58]
test eax, eax
je 0x4321d8
mov eax, dword [eax + 8]
test eax, eax
je 0x4321d8
push eax
call dword [0x531328]
mov edi, dword [ebx + 0x58]
test edi, edi
je 0x432220
cmp dword [edi + 0xb4], 0
jne 0x4321f1
cmp dword [edi + 0x84], 0
je 0x432212
lea eax, [edi + 0xac]
test eax, eax
je 0x4321fe
add dword [eax], 1
mov esi, dword [edi + 0x24]
test esi, esi
je 0x432212
call fcn.004955b0
mov esi, dword [edi + 0x24]
call fcn.004955b0
xor eax, eax
mov dword [edi + 0xb4], eax
mov dword [edi + 0x84], eax
mov eax, dword [ebx + 0x58]
test eax, eax
mov edi, dword [0x531324]
je 0x432237
mov eax, dword [eax + 8]
test eax, eax
je 0x432237
push eax
call edi
mov esi, dword [ebp + 0x2c]
mov eax, dword [esi + 0x58]
test eax, eax
je 0x43224f
mov eax, dword [eax + 8]
test eax, eax
je 0x43224f
push eax
call dword [0x531328]
mov eax, dword [esi + 0x4c]
test eax, eax
je 0x432261
lea ecx, [esp + 0x48]
push ecx
push eax
call fcn.0046fc40
mov esi, dword [esi + 0x58]
test esi, esi
je 0x432272
mov esi, dword [esi + 8]
test esi, esi
je 0x432272
push esi
call edi
mov esi, dword [ebp + 0x2c]
mov eax, dword [esi + 0x58]
test eax, eax
je 0x43228a
mov eax, dword [eax + 8]
test eax, eax
je 0x43228a
push eax
call dword [0x531328]
mov eax, dword [esi + 0x4c]
test eax, eax
je 0x43229c
lea edx, [esp + 0x38]
push edx
push eax
call fcn.0046f8a0
mov esi, dword [esi + 0x58]
test esi, esi
je 0x4322ad
mov esi, dword [esi + 8]
test esi, esi
je 0x4322ad
push esi
call edi
mov edi, dword [esp + 0x18]
mov esi, dword [ebp + 0x2c]
call fcn.004689a0
mov ecx, dword [esp + 0x20]
mov eax, dword [esp + 0x84]
mov eax, dword [eax]
mov edx, dword [esp + 0x2c]
push ecx
push edx
mov edx, dword [ebp + 0x2c]
lea ecx, [eax + 0x28]
add eax, 0x30
push ecx
push eax
push edx
call fcn.0046b5c0
mov edx, dword [esp + 0x50]
mov eax, dword [esp + 0x4c]
xor ebx, ebx
xor esi, esi
lea esp, [esp]
cmp eax, ebx
jne 0x4322f8
xor ecx, ecx
jmp 0x4322ff
mov ecx, edx
sub ecx, eax
sar ecx, 2
cmp esi, ecx
jge 0x432377
cmp eax, ebx
je 0x432312
mov ecx, edx
sub ecx, eax
sar ecx, 2
cmp esi, ecx
jb 0x43231f
call fcn.00500ad0
mov edx, dword [esp + 0x50]
mov eax, dword [esp + 0x4c]
cmp dword [eax + esi*4], ebx
je 0x43236f
cmp eax, ebx
je 0x432331
sub edx, eax
sar edx, 2
cmp esi, edx
jb 0x43233a
call fcn.00500ad0
mov eax, dword [esp + 0x4c]
mov eax, dword [eax + esi*4]
push eax
call fcn.00500319
mov ecx, dword [esp + 0x50]
add esp, 4
cmp ecx, ebx
je 0x43235b
mov eax, dword [esp + 0x50]
sub eax, ecx
sar eax, 2
cmp esi, eax
jb 0x432364
call fcn.00500ad0
mov ecx, dword [esp + 0x4c]
mov dword [ecx + esi*4], ebx
mov edx, dword [esp + 0x50]
mov eax, dword [esp + 0x4c]
add esi, 1
jmp 0x4322f0
lea eax, [esp + 0x48]
call fcn.0046bc10
mov edx, dword [esp + 0x40]
mov eax, dword [esp + 0x3c]
xor edi, edi
lea ebx, [ebx]
cmp eax, ebx
jne 0x432398
xor ecx, ecx
jmp 0x43239f
mov ecx, edx
sub ecx, eax
sar ecx, 2
cmp edi, ecx
jge 0x432443
cmp eax, ebx
je 0x4323b6
mov ecx, edx
sub ecx, eax
sar ecx, 2
cmp edi, ecx
jb 0x4323c3
call fcn.00500ad0
mov edx, dword [esp + 0x40]
mov eax, dword [esp + 0x3c]
cmp dword [eax + edi*4], ebx
je 0x43243b
cmp eax, ebx
je 0x4323d7
mov ecx, edx
sub ecx, eax
sar ecx, 2
cmp edi, ecx
jb 0x4323e4
call fcn.00500ad0
mov edx, dword [esp + 0x40]
mov eax, dword [esp + 0x3c]
mov esi, dword [eax + edi*4]
cmp esi, ebx
je 0x43241a
mov eax, dword [esi]
sub eax, 0x10
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x432409
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push esi
call fcn.004ffbbe
mov edx, dword [esp + 0x44]
mov eax, dword [esp + 0x40]
add esp, 4
cmp eax, ebx
je 0x432427
sub edx, eax
sar edx, 2
cmp edi, edx
jb 0x432430
call fcn.00500ad0
mov eax, dword [esp + 0x3c]
mov dword [eax + edi*4], ebx
mov edx, dword [esp + 0x40]
mov eax, dword [esp + 0x3c]
add edi, 1
jmp 0x432390
lea eax, [esp + 0x38]
call fcn.0046bc10
mov eax, dword [esp + 0x3c]
cmp eax, ebx
je 0x43245d
push eax
call fcn.004ffbbe
add esp, 4
mov eax, dword [esp + 0x4c]
cmp eax, ebx
mov dword [esp + 0x3c], ebx
mov dword [esp + 0x40], ebx
mov dword [esp + 0x44], ebx
je 0x43247a
push eax
call fcn.004ffbbe
add esp, 4
mov eax, 1
jmp 0x432483
xor eax, eax
mov ecx, dword [esp + 0x70]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x68
ret 8