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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0xd0
mov ebx, dword [ebp + 0xc]
mov eax, dword [ebp + 8]
mov ecx, dword [ebp + 0x10]
cmp ebx, 0x21
mov dword [esp + 0xc], eax
jae 0x10016b0a
push dword [ebp + 0x20]
push dword [ebp + 0x14]
push ecx
push ebx
push dword [esp + 0x1c]
call fcn.10019000
add esp, 0x14
jmp 0x10016fb7
mov eax, dword [ebp + 0x1c]
mov esi, dword [ebp + 0x18]
lea edx, [ecx - 0x78]
lea edi, [esp + 0x50]
mov dword [esp + 0x28], edx
mov dword [esp + 0x24], eax
mov eax, ebx
nop word cs:[eax + eax]
nop dword [eax + eax]
sub esi, 1
jb 0x10016fa1
mov ebx, dword [ebp + 0x20]
mov dword [esp + 0x2c], esi
push ebx
mov dword [esp + 0x18], eax
push eax
mov esi, dword [esp + 0x14]
push esi
call fcn.100183c0
add esp, 0xc
imul ebx, eax, 0x78
mov dword [esp + 0x20], eax
mov ecx, 0x1e
mov eax, dword [esp + 0x24]
add ebx, esi
mov esi, ebx
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [ebp + 0x20]
mov dword [esp + 0x10], ebx
test eax, eax
mov ecx, dword [ecx]
mov dword [esp + 0x1c], ecx
je 0x10016ba0
mov ecx, eax
mov eax, dword [eax]
mov esi, ebx
xor eax, 2
or eax, dword [ecx + 4]
mov eax, dword [ebx]
mov ecx, dword [ebx + 4]
jne 0x10016bc0
mov edx, dword [ebp + 0x10]
xor eax, 2
or eax, ecx
jne 0x10016ba5
jmp 0x10016df0
mov edx, dword [ebp + 0x10]
mov esi, ebx
mov eax, dword [esp + 0x14]
cmp eax, dword [ebp + 0x14]
jbe 0x10016c07
jmp 0x10016fbf
mov edx, dword [ebp + 0x10]
xor eax, 2
or eax, ecx
je 0x10016df0
mov eax, dword [esp + 0x1c]
mov eax, dword [eax]
mov eax, dword [eax]
mov ecx, dword [eax + 4]
push esi
push dword [esp + 0x28]
push dword [eax]
call dword [ecx + 0x10]
mov edx, dword [ebp + 0x10]
add esp, 0xc
cmp al, 0xff
jne 0x10016df0
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x14]
cmp eax, dword [ebp + 0x14]
ja 0x10016fbf
imul eax, eax, 0x78
mov ebx, dword [esp + 0xc]
mov dword [esp + 8], 0
mov dword [esp + 0x30], eax
add eax, edx
mov dword [esp + 4], eax
mov eax, dword [esp + 0x20]
nop word cs:[eax + eax]
nop
mov dword [esp + 0x34], eax
imul eax, eax, 0x78
add eax, dword [esp + 0xc]
cmp ebx, eax
mov dword [esp + 0x18], eax
jb 0x10016cb1
mov edi, dword [esp + 0x14]
cmp dword [esp + 0x34], edi
je 0x10016d40
imul eax, dword [esp + 8], 0x78
mov ecx, dword [esp + 4]
mov edx, edi
mov esi, ebx
add ebx, 0x78
lea edi, [ecx + eax - 0x78]
add ecx, 0xffffff88
mov eax, edx
mov edx, dword [ebp + 0x10]
mov dword [esp + 4], ecx
mov ecx, 0x1e
rep movsd dword es:[edi], dword [esi]
mov esi, dword [esp + 0x10]
jmp 0x10016c30
mov edx, dword [ebp + 0x10]
mov dword [esp + 4], esi
mov eax, 1
mov ecx, edx
mov esi, dword [esp + 8]
imul edi, esi, 0x78
add esi, eax
add edi, ecx
mov dword [esp + 8], esi
mov esi, ebx
mov ecx, 0x1e
add ebx, 0x78
rep movsd dword es:[edi], dword [esi]
cmp ebx, dword [esp + 0x18]
mov esi, dword [esp + 0x10]
jae 0x10016c43
mov eax, dword [ebx]
mov ecx, dword [esi + 4]
xor eax, 2
or eax, dword [ebx + 4]
mov eax, dword [esi]
jne 0x10016ce0
mov esi, dword [esp + 4]
xor eax, 2
add esi, 0xffffff88
or eax, ecx
jne 0x10016c81
xor eax, eax
mov ecx, esi
mov dword [esp + 4], esi
jmp 0x10016c8c
xor eax, 2
or eax, ecx
jne 0x10016d00
mov ecx, dword [esp + 4]
xor eax, eax
add ecx, 0xffffff88
mov dword [esp + 4], ecx
jmp 0x10016c8c
mov eax, dword [esp + 0x1c]
mov eax, dword [eax]
mov eax, dword [eax]
mov ecx, dword [eax + 4]
push esi
push ebx
push dword [eax]
call dword [ecx + 0x10]
add esp, 0xc
mov esi, dword [esp + 4]
add esi, 0xffffff88
cmp al, 0xff
je 0x10016c7e
mov edx, dword [ebp + 0x10]
xor eax, eax
mov dword [esp + 4], esi
mov ecx, esi
jmp 0x10016c8c
mov esi, dword [esp + 8]
imul ecx, esi, 0x78
mov dword [esp + 4], ecx
push ecx
push edx
push dword [esp + 0x14]
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov ebx, dword [esp + 0x30]
mov eax, edi
sub eax, esi
mov dword [esp + 0x18], eax
je 0x10016d94
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 4]
add ebx, dword [esp + 0x28]
mov edx, dword [esp + 0x18]
add eax, ecx
nop dword [eax]
mov edi, eax
mov esi, ebx
mov ecx, 0x1e
add eax, 0x78
add ebx, 0xffffff88
dec edx
rep movsd dword es:[edi], dword [esi]
jne 0x10016d80
mov ebx, dword [esp + 8]
mov edx, dword [ebp + 0x10]
mov esi, dword [esp + 0x10]
test ebx, ebx
je 0x10016df0
cmp dword [esp + 0x14], ebx
jb 0x10016fc1
mov eax, dword [esp + 4]
add eax, dword [esp + 0xc]
push dword [ebp + 0x20]
lea edi, [esp + 0x54]
push edi
mov esi, dword [esp + 0x34]
push esi
push dword [ebp + 0x14]
push edx
push dword [esp + 0x2c]
push eax
call fcn.10016ad0
mov ecx, dword [ebp + 0x10]
add esp, 0x1c
cmp ebx, 0x21
mov eax, ebx
jae 0x10016b30
jmp 0x10016af1
mov eax, dword [esp + 0x14]
cmp eax, dword [ebp + 0x14]
ja 0x10016fbf
imul eax, eax, 0x78
mov ebx, dword [esp + 0xc]
mov dword [esp + 4], 0
mov dword [esp + 0x1c], eax
add eax, edx
mov dword [esp + 8], eax
mov eax, dword [esp + 0x20]
nop word [eax + eax]
mov dword [esp + 0x20], eax
imul eax, eax, 0x78
add eax, dword [esp + 0xc]
cmp ebx, eax
mov dword [esp + 0x18], eax
jb 0x10016ea7
mov esi, dword [esp + 0x14]
cmp dword [esp + 0x20], esi
je 0x10016f10
mov eax, dword [esp + 4]
mov esi, ebx
add dword [esp + 8], 0xffffff88
mov ecx, 0x1e
add ebx, 0x78
imul edi, eax, 0x78
inc eax
add edi, edx
rep movsd dword es:[edi], dword [esi]
mov dword [esp + 4], eax
mov esi, dword [esp + 0x10]
mov eax, dword [esp + 0x14]
jmp 0x10016e20
mov esi, dword [esp + 8]
mov eax, 1
mov ecx, edx
add esi, 0xffffff88
mov dword [esp + 8], esi
mov esi, dword [esp + 4]
imul edi, esi, 0x78
add esi, eax
add edi, ecx
mov dword [esp + 4], esi
mov esi, ebx
mov ecx, 0x1e
add ebx, 0x78
rep movsd dword es:[edi], dword [esi]
cmp ebx, dword [esp + 0x18]
mov esi, dword [esp + 0x10]
jae 0x10016e33
mov eax, dword [esi]
mov ecx, dword [ebx + 4]
xor eax, 2
or eax, dword [esi + 4]
mov eax, dword [ebx]
jne 0x10016ed0
mov esi, dword [esp + 8]
xor eax, 2
add esi, 0xffffff88
or eax, ecx
mov eax, 1
mov ecx, edx
je 0x10016e7e
jmp 0x10016f06
xor eax, 2
or eax, ecx
je 0x10016e70
mov eax, dword [ebp + 0x20]
mov eax, dword [eax]
mov eax, dword [eax]
mov eax, dword [eax]
mov ecx, dword [eax + 4]
push ebx
push esi
push dword [eax]
call dword [ecx + 0x10]
mov edx, dword [ebp + 0x10]
add esp, 0xc
mov esi, dword [esp + 8]
mov ecx, edx
add esi, 0xffffff88
cmp al, 0xff
mov eax, 1
jne 0x10016e7e
xor eax, eax
mov ecx, esi
jmp 0x10016e7e
mov edi, dword [esp + 4]
imul ecx, edi, 0x78
mov dword [esp + 0x10], ecx
push ecx
push edx
push dword [esp + 0x14]
call sub.VCRUNTIME140.dll_memcpy
add esp, 0xc
mov ebx, dword [esp + 0x1c]
sub esi, edi
mov dword [esp + 8], esi
je 0x10016f64
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x10]
add ebx, dword [esp + 0x28]
mov edx, dword [esp + 8]
add eax, ecx
nop word [eax + eax]
mov edi, eax
mov esi, ebx
mov ecx, 0x1e
add eax, 0x78
add ebx, 0xffffff88
dec edx
rep movsd dword es:[edi], dword [esi]
jne 0x10016f50
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 4]
cmp eax, ecx
jb 0x10016ff8
mov eax, dword [esp + 0x10]
mov ebx, dword [esp + 8]
mov ecx, dword [ebp + 0x10]
mov esi, dword [esp + 0x2c]
lea edi, [esp + 0x50]
mov dword [esp + 0x24], 0
add dword [esp + 0xc], eax
cmp ebx, 0x21
jae 0x10016b1f
jmp 0x10016af1
push dword [ebp + 0x20]
push 1
push dword [ebp + 0x14]
push ecx
push eax
push dword [esp + 0x20]
call fcn.10019650
add esp, 0x18
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
ud2
mov dword [esp + 0x38], 0x101cd40c
mov dword [esp + 0x3c], 1
mov dword [esp + 0x48], 0
mov dword [esp + 0x40], 4
mov dword [esp + 0x44], 0
lea eax, [esp + 0x38]
push 0x101cd414
push eax
call fcn.101cb880
push 0x101cd424
push eax
push ecx
call fcn.101cbc60
int3