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

Disassembly:
sub esp, 0x84
push ebx
push ebp
push esi
mov esi, dword [esp + 0x94]
xor ebp, ebp
push edi
push 0x1c
push ebp
mov eax, dword [esi + 8]
mov edi, dword [esi]
mov dword [esp + 0x34], eax
lea eax, [esp + 0x64]
push eax
mov dword [esp + 0x24], edi
call sub.VCRUNTIME140.dll_memset
mov ebp, dword [esp + 0xb0]
add esp, 0xc
push 0x40
pop ecx
test ebp, ebp
je 0x101640b7
xor eax, eax
cmp dword [ebp], ecx
cmovge ebp, eax
mov dword [esp + 0xa4], ebp
mov ecx, dword [esp + 0xac]
mov eax, ecx
and eax, 0xfeff
mov dword [esp + 0x64], ebp
mov bl, byte [edi + 0x4c]
movzx edx, ax
and bl, 0x10
movzx eax, cx
cmove edx, eax
movzx eax, dx
mov ecx, eax
mov dword [esp + 0x14], ecx
mov ecx, dword [esp + 0x9c]
push 0x40
pop edx
mov ecx, dword [ecx]
cmp ecx, edx
jle 0x10164105
push edx
push str.at_most__d_tables_in_a_join
push esi
call fcn.10143429
add esp, 0xc
jmp 0x10164460
test al, 0x20
push 1
pop eax
cmovne ecx, eax
xor ebx, ebx
imul eax, ecx, 0x58
push ebx
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x28], eax
add eax, 0x2f7
and eax, 0xfffffff8
mov dword [esp + 0x38], eax
add eax, 0x48
push eax
push edi
call fcn.10141b1e
mov edi, eax
add esp, 0xc
mov eax, dword [esp + 0x18]
mov dword [esp + 0x44], edi
cmp byte [eax + 0x51], bl
je 0x10164157
test edi, edi
je 0x10164460
push edi
push eax
call fcn.10141a5b
jmp 0x1016445e
mov ecx, dword [esp + 0x98]
mov eax, dword [esp + 0x9c]
mov dword [edi + 4], eax
mov eax, dword [esp + 0xa8]
mov dword [edi + 0xc], eax
mov eax, dword [esp + 0x28]
mov dword [edi], esi
mov esi, dword [esp + 0xa0]
mov dword [edi + 8], ebp
mov dword [edi + 0x10], esi
or dword [edi + 0x18], 0xffffffff
or dword [edi + 0x14], 0xffffffff
mov byte [edi + 0x2c], al
mov eax, dword [ecx + 0x38]
dec eax
mov dword [ecx + 0x38], eax
mov dword [edi + 0x1c], eax
mov dword [edi + 0x20], eax
mov eax, dword [esp + 0x14]
mov word [edi + 0x28], ax
mov eax, dword [esp + 0xb0]
mov dword [esp + 0x48], eax
mov word [edi + 0x2a], ax
mov eax, dword [ecx + 0x88]
push 0x23
mov dword [edi + 0x24], eax
lea eax, [edi + 0x2d]
push ebx
push eax
call sub.VCRUNTIME140.dll_memset
mov eax, dword [esp + 0x30]
lea ecx, [edi + 0x2f0]
add eax, 0x48
push eax
push ebx
push ecx
call sub.VCRUNTIME140.dll_memset
lea eax, [edi + 0x50]
mov dword [esp + 0x74], edi
mov dword [esp + 0x54], eax
lea edx, [edi + 0x1e8]
mov dword [esp + 0x78], eax
mov eax, dword [esp + 0x4c]
add eax, edi
mov dword [esp + 0x3c], edx
push eax
mov dword [esp + 0x84], eax
call fcn.101712a6
mov dword [edx + 4], ebx
lea edx, [edi + 0x50]
push edi
push edx
call fcn.10164ae3
push 0x2c
push esi
push edx
call fcn.10166d08
add esp, 0x30
mov ecx, 0x100
cmp dword [esp + 0x28], ebx
jne 0x10164263
test ebp, ebp
je 0x10164238
mov al, byte [ebp]
mov byte [edi + 0x2d], al
test dword [esp + 0x14], ecx
je 0x10164244
xor eax, eax
inc eax
mov byte [edi + 0x2f], al
mov esi, dword [esp + 0x98]
push str.SCAN_CONSTANT_ROW
push ebx
push esi
call fcn.1015fa1f
mov eax, dword [esp + 0xa8]
add esp, 0xc
jmp 0x101642b8
mov esi, dword [esp + 0x9c]
mov ebp, ebx
mov edi, dword [esp + 0x98]
add esi, 8
mov ebx, dword [esp + 0x24]
mov ecx, dword [ebx + 4]
push dword [esp + 0x3c]
mov eax, dword [esi + 0x2c]
push esi
mov dword [ebx + ecx*4 + 8], eax
inc dword [ebx + 4]
push edi
call fcn.10166d57
mov eax, dword [esp + 0xa8]
add esp, 0xc
inc ebp
add esi, 0x48
cmp ebp, dword [eax]
jl 0x1016427a
mov edi, dword [esp + 0x44]
xor ebx, ebx
mov ebp, dword [esp + 0xa4]
mov esi, dword [esp + 0x98]
lea ecx, [edi + 0x50]
push ecx
push eax
call fcn.10166a24
mov eax, dword [esp + 0x20]
pop ecx
pop ecx
cmp byte [eax + 0x51], 0
jne 0x1016444b
mov ecx, dword [esp + 0x60]
mov dword [esp + 0x30], ebx
cmp dword [ecx + 0xc], ebx
jle 0x101643a3
mov ebp, dword [esp + 0x98]
mov edx, ebx
mov dword [esp + 0x10], edx
mov esi, dword [ecx + 0x14]
add esi, edx
test byte [esi + 0xa], 2
jne 0x10164383
mov eax, dword [esi + 0x28]
or eax, dword [esi + 0x2c]
jne 0x10164383
cmp dword [esp + 0x28], eax
je 0x10164364
mov eax, dword [esi]
push 0x1c
mov dword [esp + 0x28], eax
lea eax, [esp + 0x7c]
push ebx
push eax
call sub.VCRUNTIME140.dll_memset
xor eax, eax
mov dword [esp + 0x88], 0x1012a340
inc eax
mov dword [esp + 0x8c], 0x101557c0
mov word [esp + 0x98], ax
add esp, 0xc
mov eax, dword [esp + 0x24]
test eax, eax
je 0x10164364
push eax
lea eax, [esp + 0x7c]
push eax
call fcn.1016f153
cmp word [esp + 0x94], 0
pop ecx
pop ecx
je 0x1016437b
push 0x10
push dword [edi + 0x20]
push dword [esi]
push ebp
call fcn.10145a70
add esp, 0x10
push 4
pop eax
or word [esi + 0xa], ax
mov edx, dword [esp + 0x10]
mov ecx, dword [esp + 0x60]
mov esi, dword [esp + 0x30]
add edx, 0x30
inc esi
mov dword [esp + 0x10], edx
mov dword [esp + 0x30], esi
cmp esi, dword [ecx + 0xc]
jl 0x101642f0
mov ebp, dword [esp + 0xa4]
mov eax, dword [esp + 0x14]
mov esi, dword [esp + 0x98]
and eax, 0x100
mov dword [esp + 0x4c], eax
je 0x101643e0
push dword [esp + 0xa8]
lea eax, [edi + 0x50]
push eax
push dword [esp + 0xa4]
push esi
call fcn.1012e7be
add esp, 0x10
test eax, eax
je 0x1016446d
mov byte [edi + 0x2f], 1
mov ebp, dword [esp + 0xa8]
cmp dword [esp + 0x28], 1
jne 0x10164401
lea eax, [esp + 0x5c]
push eax
call fcn.10172c53
pop ecx
test eax, eax
jne 0x1016448d
lea eax, [esp + 0x5c]
push eax
call fcn.1016f755
pop ecx
test eax, eax
jne 0x10164444
push ebx
push edi
call fcn.10171fea
mov eax, dword [esp + 0x20]
pop ecx
pop ecx
cmp byte [eax + 0x51], 0
jne 0x10164444
cmp dword [edi + 8], ebx
je 0x10164496
mov ax, word [edi + 0x34]
inc ax
movzx eax, ax
push eax
push edi
call fcn.10171fea
mov eax, dword [esp + 0x20]
pop ecx
pop ecx
cmp byte [eax + 0x51], 0
je 0x10164491
mov esi, dword [esp + 0x98]
mov eax, dword [edi + 0x24]
push edi
push dword [esp + 0x1c]
mov dword [esi + 0x88], eax
call fcn.1016f69a
pop ecx
pop ecx
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x84
ret
test ebp, ebp
jne 0x101643e0
mov ebp, dword [esp + 0xa8]
mov eax, 0x80
or word [edi + 0x28], ax
mov dword [edi + 8], ebp
jmp 0x101643e7
mov eax, dword [esp + 0x18]
cmp dword [edi + 8], ebx
jne 0x101644aa
mov eax, dword [eax + 0x20]
and eax, 0x1000
or eax, ebx
je 0x101644aa
or dword [edi + 0x48], 0xffffffff
or dword [edi + 0x4c], 0xffffffff
cmp dword [esi + 0x24], ebx
jne 0x10164444
mov eax, dword [esp + 0x18]
cmp byte [eax + 0x51], 0
jne 0x10164444
or dword [esp + 0x38], 0xffffffff
or dword [esp + 0x30], 0xffffffff
cmp byte [edi + 0x2c], 2
jb 0x1016467f
test ebp, ebp
je 0x1016467f
mov ecx, 0x100
test word [eax + 0x4c], cx
jne 0x1016467f
push ebp
lea esi, [edi + 0x1e8]
push esi
call fcn.10166a45
cmp dword [esp + 0x6c], 0
mov ebp, eax
pop ecx
pop ecx
mov dword [esp + 0x3c], ebp
mov dword [esp + 0x10], edx
je 0x1016451a
push dword [esp + 0x64]
push esi
call fcn.10166a45
or ebp, eax
or dword [esp + 0x18], edx
pop ecx
pop ecx
mov dword [esp + 0x3c], ebp
movzx ebp, byte [edi + 0x2c]
xor eax, eax
dec ebp
inc eax
mov dword [esp + 0x20], ebp
cmp ebp, eax
jl 0x1016467f
imul eax, ebp, 0x58
add eax, 0x2f0
add eax, edi
mov dword [esp + 0x1c], eax
mov ecx, dword [eax + 0x48]
mov edx, dword [edi + 4]
mov dword [esp + 0x40], ecx
mov dword [esp + 0x54], edx
movzx eax, byte [ecx + 0x10]
imul eax, eax, 0x48
mov dword [esp + 0x50], eax
test byte [eax + edx + 0x2c], 8
je 0x10164664
cmp word [esp + 0x4c], 0
jne 0x10164575
test dword [ecx + 0x24], 0x1000
je 0x10164664
mov eax, dword [ecx + 8]
mov edx, dword [ecx + 0xc]
mov ecx, eax
and ecx, dword [esp + 0x3c]
mov dword [esp + 0x34], eax
mov eax, edx
and eax, dword [esp + 0x10]
or ecx, eax
mov dword [esp + 0x24], edx
jne 0x10164664
mov eax, dword [esp + 0x60]
imul ebx, dword [eax + 0xc], 0x30
mov edx, dword [eax + 0x14]
mov esi, edx
mov dword [esp + 0x58], edx
add ebx, edx
cmp esi, ebx
jae 0x101645f3
mov edi, dword [esp + 0x34]
mov ebp, dword [esp + 0x50]
mov edx, dword [esp + 0x54]
mov eax, dword [esi + 0x2c]
mov ecx, edi
and ecx, dword [esi + 0x28]
and eax, dword [esp + 0x24]
or ecx, eax
je 0x101645dc
mov eax, dword [esi]
test byte [eax + 4], 1
je 0x101645e3
movsx eax, word [eax + 0x24]
cmp eax, dword [edx + ebp + 0x34]
jne 0x101645e3
add esi, 0x30
cmp esi, ebx
jb 0x101645ba
mov edi, dword [esp + 0x44]
mov edx, dword [esp + 0x58]
mov ebp, dword [esp + 0x20]
cmp esi, ebx
jb 0x10164664
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x24]
not eax
and dword [esp + 0x38], eax
not ecx
and dword [esp + 0x30], ecx
cmp edx, ebx
jae 0x10164631
mov esi, dword [esp + 0x40]
push 4
pop ebp
mov ecx, dword [edx + 0x28]
mov eax, dword [edx + 0x2c]
and ecx, dword [esi + 8]
and eax, dword [esi + 0xc]
or ecx, eax
je 0x10164626
or word [edx + 0xa], bp
add edx, 0x30
cmp edx, ebx
jb 0x10164612
mov ebp, dword [esp + 0x20]
mov cl, byte [edi + 0x2c]
movzx edx, cl
lea eax, [edx - 1]
cmp ebp, eax
je 0x1016465b
mov ecx, dword [esp + 0x1c]
sub edx, ebp
imul eax, edx, 0x58
sub eax, 0x58
push eax
lea eax, [ecx + 0x58]
push eax
push ecx
call sub.VCRUNTIME140.dll_memmove
mov cl, byte [edi + 0x2c]
add esp, 0xc
dec cl
dec dword [esp + 0x28]
mov byte [edi + 0x2c], cl
mov eax, dword [esp + 0x1c]
dec ebp
sub eax, 0x58
mov dword [esp + 0x20], ebp
mov dword [esp + 0x1c], eax
cmp ebp, 1
jge 0x1016453c
xor ebx, ebx
mov ecx, dword [edi]
movsx eax, word [edi + 0x34]
mov esi, dword [esp + 0x9c]
mov dword [esp + 0x1c], ebx
add dword [ecx + 0x88], eax
mov eax, dword [esp + 0x14]
test al, 4
je 0x10164707
mov edx, dword [edi + 0x338]
mov ecx, dword [edx + 0x24]
bt ecx, 0xc
jb 0x101646d4
mov dword [esp + 0x1c], ebx
test al, 8
je 0x10164707
mov eax, dword [esi + 0x18]
mov dword [esp + 0x1c], ebx
cmp dword [eax + 0x38], ebx
jne 0x10164707
test ecx, 0x2000
je 0x101646d4
test byte [esp + 0x14], 0x10
mov dword [esp + 0x1c], ebx
je 0x10164707
bt ecx, 0xc
mov dword [esp + 0x1c], ebx
setae al
inc al
mov byte [edi + 0x2e], al
mov eax, dword [esi + 0x18]
test byte [eax + 0x24], 0x80
jne 0x10164707
mov dword [esp + 0x1c], ebx
test cl, 0x40
je 0x10164707
mov eax, dword [esp + 0x14]
and ecx, 0xffffffbf
and eax, 8
mov dword [edx + 0x24], ecx
mov dword [esp + 0x1c], eax
mov ecx, dword [esp + 0x28]
test ecx, ecx
jle 0x10164984
lea eax, [edi + 0x338]
mov dword [esp + 0x34], ecx
mov dword [esp + 0x20], eax
jmp 0x1016472a
mov esi, dword [esp + 0x9c]
movzx eax, byte [eax - 0x14]
imul ebp, eax, 0x48
mov dword [esp + 0x40], ebp
mov esi, dword [esi + ebp + 0x18]
push dword [esi + 0x48]
push dword [esp + 0x1c]
call fcn.10153cd9
test byte [esi + 0x24], 2
mov edx, eax
pop ecx
pop ecx
mov ecx, dword [esp + 0x20]
mov dword [esp + 0x24], edx
mov eax, dword [ecx]
mov dword [esp + 0x10], eax
jne 0x1016486d
cmp dword [esi + 0xc], ebx
jne 0x1016486d
test dword [eax + 0x24], 0x400
je 0x101647a3
push esi
push dword [esp + 0x1c]
call fcn.1014a1ff
push 0xfffffffffffffff4
push eax
mov eax, dword [esp + 0xac]
push ebx
push ebx
push dword [eax + ebp + 0x34]
push 0xa6
push dword [esp + 0x4c]
call fcn.1014ecdb
add esp, 0x24
jmp 0x10164865
cmp dword [esi + 0x38], ebx
jne 0x1016486d
test byte [eax + 0x24], 0x40
jne 0x1016484f
test byte [esp + 0x14], 0x20
jne 0x1016484f
cmp byte [edi + 0x2e], 0
push 0x60
pop ecx
je 0x101647db
mov eax, dword [esp + 0x9c]
push 0x61
pop ecx
mov eax, dword [eax + ebp + 0x34]
mov dword [edi + 0x14], eax
mov eax, dword [esp + 0x9c]
push ecx
push esi
push edx
push dword [eax + ebp + 0x34]
push dword [esp + 0xa8]
call fcn.1014ecdb
add esp, 0x14
cmp byte [edi + 0x2e], 0
jne 0x1016483e
push 0x40
pop eax
cmp word [esi + 0x2a], ax
jge 0x1016483e
test byte [esi + 0x24], 0xe0
jne 0x1016483e
mov eax, dword [esp + 0x9c]
mov edx, dword [eax + ebp + 0x40]
mov ecx, dword [eax + ebp + 0x44]
mov ebp, ebx
jmp 0x10164827
shrd edx, ecx, 1
shr ecx, 1
inc ebp
mov eax, edx
or eax, ecx
jne 0x10164820
push 0xfffffffffffffffd
push ebp
push 0xffffffffffffffff
push dword [esp + 0x38]
call fcn.1014ecdb
add esp, 0x10
push dword [esp + 0x1c]
push dword [esp + 0x30]
call fcn.10159a50
pop ecx
pop ecx
jmp 0x10164865
push dword [esi]
push ebx
push dword [esi + 0x1c]
push edx
push dword [esp + 0xa8]
call fcn.10156889
add esp, 0x14
mov ecx, dword [esp + 0x20]
mov eax, dword [esp + 0x10]
test dword [eax + 0x24], 0x200
je 0x10164950
mov ebp, dword [eax + 0x20]
push 0x60
pop edx
lea eax, [edx + 0x20]
test byte [esi + 0x24], al
je 0x101648a0
mov eax, dword [ebp + 0x38]
and al, 3
cmp al, 2
mov eax, dword [esp + 0x14]
jne 0x101648a4
test al, 0x20
je 0x101648a4
mov ecx, dword [ecx - 0x44]
mov edx, ebx
jmp 0x101648e4
mov eax, dword [esp + 0x14]
cmp byte [edi + 0x2e], 0
je 0x101648d5
mov ecx, dword [esp + 0x9c]
mov eax, dword [esp + 0x40]
mov eax, dword [eax + ecx + 0x18]
mov ecx, dword [esp + 0x48]
mov eax, dword [eax + 8]
jmp 0x101648ca
cmp eax, ebp
je 0x101648ce
mov eax, dword [eax + 0x14]
inc ecx
test eax, eax
jne 0x101648c2
push 0x61
mov dword [edi + 0x18], ecx
jmp 0x101648e3
mov ecx, dword [esp + 0x48]
test ecx, ecx
je 0x101648ed
test al, 0x20
je 0x101648ed
push 0x5f
pop edx
mov esi, dword [esp + 0x98]
jmp 0x101648fd
mov esi, dword [esp + 0x98]
mov ecx, dword [esi + 0x28]
lea eax, [ecx + 1]
mov dword [esi + 0x28], eax
mov eax, dword [esp + 0x20]
mov dword [eax - 0x40], ecx
test edx, edx
je 0x10164950
push dword [esp + 0x24]
push dword [ebp + 0x2c]
push ecx
push edx
push dword [esp + 0x3c]
call fcn.1014ecdb
push ebp
push esi
call fcn.1016209c
mov eax, dword [esp + 0x2c]
add esp, 0x1c
test byte [eax + 0x24], 0xf
je 0x10164950
test dword [eax + 0x24], 0x188002
jne 0x10164950
test byte [edi + 0x28], 1
jne 0x10164950
cmp byte [edi + 0x2f], 2
je 0x10164950
push 2
push dword [esp + 0x30]
call fcn.10159a50
pop ecx
pop ecx
mov eax, dword [esp + 0x24]
test eax, eax
js 0x1016496a
push eax
push dword [esp + 0x9c]
lfence
call fcn.1013ff8f
pop ecx
pop ecx
mov eax, dword [esp + 0x20]
add eax, 0x58
sub dword [esp + 0x34], 1
mov dword [esp + 0x20], eax
jne 0x10164723
mov ecx, dword [esp + 0x28]
mov eax, dword [esp + 0x2c]
mov esi, dword [esp + 0x18]
mov eax, dword [eax + 0x6c]
mov dword [edi + 0x38], eax
cmp byte [esi + 0x51], 0
jne 0x10164444
test ecx, ecx
jle 0x10164a54
lea ebx, [edi + 0x324]
xor ebp, ebp
mov eax, dword [ebx + 0x14]
test dword [eax + 0x24], 0x4000
je 0x101649f4
mov ecx, dword [esp + 0x9c]
lea eax, [ebx - 0x34]
push eax
movzx eax, byte [ebx]
add ecx, 8
push dword [esp + 0x34]
imul eax, eax, 0x48
push dword [esp + 0x40]
add eax, ecx
push eax
lea eax, [edi + 0x50]
push eax
push dword [esp + 0xac]
call fcn.10126368
add esp, 0x18
cmp byte [esi + 0x51], 0
jne 0x10164444
push dword [esp + 0x14]
lea esi, [ebx - 0x34]
push esi
push dword [esp + 0xa4]
push dword [esp + 0xa4]
call fcn.1016678f
push dword [esp + 0x40]
mov ecx, dword [esp + 0x40]
push dword [esp + 0x4c]
push esi
mov eax, dword [ecx + 0x6c]
push ebp
push edi
push ecx
push dword [esp + 0xc0]
mov dword [ebx - 0x14], eax
call fcn.10164b06
mov ecx, dword [ebx - 0x1c]
add esp, 0x2c
mov esi, dword [esp + 0x18]
inc ebp
add ebx, 0x58
mov dword [esp + 0x38], eax
mov dword [esp + 0x30], edx
mov dword [edi + 0x1c], ecx
cmp ebp, dword [esp + 0x28]
jl 0x101649ac
mov eax, dword [esp + 0x2c]
mov ecx, dword [eax + 0x6c]
mov eax, edi
mov dword [edi + 0x3c], ecx
jmp 0x10164462