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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x9c
push ebx
push esi
mov esi, dword [ebp + 0xc]
lea eax, [esp + 0x54]
mov ebx, edx
mov dword [esp + 0x7c], ecx
push edi
lea edx, [esp + 0x60]
mov dword [esp + 0x5c], ebx
mov ecx, esi
mov dword [esp + 0x58], 0
mov dword [esp + 0x60], 1
mov dword [esp + 0x64], 1
mov dword [esp + 0x68], eax
call fcn.10016000
test eax, eax
jne 0x10016b37
mov eax, 0xfffffff4
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov edx, esi
mov dword [esp + 0x10], 1
mov esi, dword [ebp + 8]
xor edi, edi
mov ecx, esi
mov dword [esp + 0x14], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x30], 1
mov dword [esp + 0x34], 0
mov dword [esp + 0x38], 0
mov dword [esp + 0x74], 1
mov dword [esp + 0x78], 0
mov dword [esp + 0x7c], 0
mov dword [esp + 0x1c], 1
mov dword [esp + 0x20], 0
mov dword [esp + 0x24], 0
mov dword [esp + 0x44], 1
mov dword [esp + 0x48], 0
mov dword [esp + 0x4c], edi
call fcn.10015f70
test eax, eax
jns 0x10016bfe
mov eax, dword [esp + 0x80]
test eax, eax
je 0x10016bde
xor edx, edx
mov ecx, eax
call fcn.10015720
mov esi, eax
test esi, esi
jne 0x100172af
mov esi, dword [ebp + 8]
test ebx, ebx
je 0x10016bf5
mov edx, esi
mov ecx, ebx
call fcn.10015320
mov esi, eax
test esi, esi
jne 0x100172af
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov edx, esi
lea ecx, [esp + 0x10]
call fcn.10015320
mov esi, eax
test esi, esi
jne 0x100172af
mov edx, dword [ebp + 0xc]
lea ecx, [esp + 0x30]
call fcn.10015320
mov esi, eax
test esi, esi
jne 0x100172af
mov edx, dword [ebp + 8]
lea ecx, [esp + 0x74]
mov dword [esp + 0x30], 1
mov dword [esp + 0x10], 1
mov edx, dword [edx + 4]
add edx, 2
call fcn.10015220
mov esi, eax
test esi, esi
jne 0x100172af
xor edx, edx
lea ecx, [esp + 0x74]
call fcn.10015720
mov esi, eax
test esi, esi
jne 0x100172af
push 4
push 2
call fcn.1004b0e2
add esp, 8
test eax, eax
jne 0x10016c82
lea esi, [eax - 0x10]
jmp 0x100172af
push 4
push 3
mov dword [esp + 0x28], 2
mov dword [esp + 0x2c], eax
call fcn.1004b0e2
add esp, 8
test eax, eax
jne 0x10016ca8
mov esi, 0xfffffff0
jmp 0x100172af
mov edi, eax
mov dword [esp + 0x48], 3
lea ecx, [esp + 0x30]
mov dword [esp + 0x4c], edi
call fcn.10015900
and eax, 0x1f
cmp eax, 0x1f
jae 0x10016cfe
mov ebx, 0x1f
lea ecx, [esp + 0x10]
sub ebx, eax
mov edx, ebx
mov dword [esp + 0x58], ebx
call fcn.10015cc0
mov esi, eax
test esi, esi
jne 0x100172af
mov edx, ebx
lea ecx, [esp + 0x30]
call fcn.10015cc0
mov esi, eax
test esi, esi
jne 0x100172af
jmp 0x10016d06
mov dword [esp + 0x58], 0
mov ebx, dword [esp + 0x14]
mov ecx, dword [esp + 0x34]
dec ebx
dec ecx
mov dword [esp + 0x50], ebx
mov eax, ebx
mov dword [esp + 0x54], ecx
sub eax, ecx
lea ecx, [esp + 0x30]
mov dword [esp + 0x3c], eax
shl eax, 5
mov edx, eax
mov dword [esp + 0x40], eax
call fcn.10015cc0
mov esi, eax
test esi, esi
jne 0x100172af
mov eax, dword [esp + 0x3c]
lea edx, [esp + 0x30]
lea ecx, [esp + 0x10]
lea esi, [eax*4]
mov dword [esp + 0x2c], esi
call fcn.10016000
test eax, eax
js 0x10016e01
mov eax, dword [esp + 0x7c]
add eax, esi
mov dword [esp + 0x3c], eax
nop word [eax + eax]
inc dword [eax]
lea ecx, [esp + 0x10]
mov ebx, dword [esp + 0x10]
mov eax, ebx
imul eax, dword [esp + 0x30]
test eax, eax
jle 0x10016dc3
lea edx, [esp + 0x30]
call fcn.10015f70
lea ecx, [esp + 0x10]
test eax, eax
js 0x10016da4
lea eax, [esp + 0x30]
mov edx, ecx
push eax
call fcn.10016300
jmp 0x10016dd1
lea eax, [esp + 0x10]
push eax
lea edx, [esp + 0x34]
call fcn.10016300
mov esi, eax
add esp, 4
test esi, esi
jne 0x100172af
neg ebx
jmp 0x10016dde
lea eax, [esp + 0x30]
push eax
lea edx, [esp + 0x14]
call fcn.100160c0
mov esi, eax
add esp, 4
test esi, esi
jne 0x100172af
lea edx, [esp + 0x30]
mov dword [esp + 0x10], ebx
lea ecx, [esp + 0x10]
call fcn.10016000
test eax, eax
mov eax, dword [esp + 0x3c]
jns 0x10016d70
mov ebx, dword [esp + 0x50]
jmp 0x10016e05
mov dword [esp + 0x2c], esi
mov edx, dword [esp + 0x40]
lea ecx, [esp + 0x30]
call fcn.10015e40
mov esi, eax
test esi, esi
jne 0x100172af
mov ecx, dword [esp + 0x54]
cmp ebx, ecx
jbe 0x10017210
mov eax, dword [esp + 0x38]
lea edx, [eax + ecx*4]
mov eax, dword [esp + 0x7c]
add eax, 0xfffffffc
mov dword [esp + 0x40], edx
add eax, dword [esp + 0x2c]
mov dword [esp + 0x28], eax
mov eax, ebx
sub eax, ecx
shl eax, 5
sub eax, 0x20
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x18]
mov esi, dword [eax + ebx*4]
lea ecx, [eax + ebx*4]
mov edx, dword [edx]
cmp esi, edx
jae 0x10016e86
test edx, edx
je 0x10016e86
mov ecx, dword [ecx - 4]
xor eax, eax
push 0
push edx
or eax, esi
push eax
push ecx
call fcn.10057640
test edx, edx
jne 0x10016e7e
cmp eax, 0xffffffff
jbe 0x10016e89
mov dword [esp + 0x64], 0
or eax, 0xffffffff
mov ecx, dword [esp + 0x28]
inc eax
mov dword [ecx], eax
mov eax, dword [esp + 0x18]
lea eax, [eax + ebx*4]
mov dword [esp + 0x3c], eax
jmp 0x10016ea4
mov ecx, dword [esp + 0x28]
dec dword [ecx]
xor edx, edx
lea ecx, [esp + 0x1c]
call fcn.10015720
mov esi, eax
test esi, esi
jne 0x100172af
cmp dword [esp + 0x54], 1
jb 0x10016ec9
mov eax, dword [esp + 0x40]
mov eax, dword [eax - 4]
mov ecx, dword [esp + 0x24]
lea edx, [esp + 0x1c]
mov dword [esp + 0x90], 1
mov dword [esp + 0x94], 1
mov dword [ecx], eax
mov eax, dword [esp + 0x40]
mov eax, dword [eax]
mov dword [ecx + 4], eax
lea eax, [esp + 0x60]
mov dword [esp + 0x98], eax
mov ecx, edx
mov eax, dword [esp + 0x28]
mov eax, dword [eax]
mov dword [esp + 0x60], eax
lea eax, [esp + 0x90]
push eax
call fcn.100167c0
mov esi, eax
add esp, 4
test esi, esi
jne 0x100172af
mov esi, dword [esp + 0x48]
cmp esi, 1
jae 0x10016f7b
push 4
push 1
call fcn.1004b0e2
mov ebx, eax
add esp, 8
test ebx, ebx
je 0x10016c9e
test edi, edi
je 0x10016f68
shl esi, 2
push esi
push edi
push ebx
call fcn.10047450
mov eax, dword [fcn.10046690]
push esi
push 0
push edi
call eax
push dword [esp + 0x64]
call fcn.1004b0ed
add esp, 0x1c
mov edi, ebx
mov esi, 1
mov ebx, dword [esp + 0x50]
mov dword [esp + 0x48], esi
mov dword [esp + 0x4c], edi
lea eax, [esi*4]
push eax
push 0
push edi
call fcn.10046690
add esp, 0xc
mov dword [edi], 0
mov dword [esp + 0x44], 1
cmp ebx, 2
jae 0x10016fb0
mov dword [edi], 0
cmp ebx, 1
jae 0x10016fba
xor eax, eax
jmp 0x10016fc1
mov eax, dword [esp + 0x18]
mov eax, dword [eax + ebx*4 - 8]
mov dword [edi], eax
mov eax, dword [esp + 0x3c]
mov eax, dword [eax - 4]
mov dword [edi + 4], eax
lea edx, [esp + 0x44]
mov eax, dword [esp + 0x3c]
lea ecx, [esp + 0x1c]
mov eax, dword [eax]
mov dword [edi + 8], eax
call fcn.10016000
test eax, eax
jg 0x10016ea0
lea eax, [esp + 0x60]
mov dword [esp + 0x9c], 1
mov dword [esp + 0xa4], eax
lea edx, [esp + 0x30]
mov eax, dword [esp + 0x28]
lea ecx, [esp + 0x1c]
mov dword [esp + 0xa0], 1
mov eax, dword [eax]
mov dword [esp + 0x60], eax
lea eax, [esp + 0x9c]
push eax
call fcn.100167c0
mov esi, eax
add esp, 4
test esi, esi
jne 0x100172af
mov edx, dword [esp + 0x2c]
lea ecx, [esp + 0x1c]
call fcn.10015cc0
mov esi, eax
test esi, esi
jne 0x100172af
mov ebx, dword [esp + 0x10]
lea ecx, [esp + 0x10]
mov eax, ebx
imul eax, dword [esp + 0x1c]
test eax, eax
jle 0x10017178
lea edx, [esp + 0x1c]
call fcn.10015f70
lea ecx, [esp + 0x10]
test eax, eax
js 0x10017152
lea eax, [esp + 0x1c]
mov edx, ecx
push eax
call fcn.10016300
add esp, 4
test eax, eax
je 0x1001716d
mov esi, eax
test eax, eax
jne 0x100172af
mov ebx, dword [esp + 0x10]
lea eax, [esp + 0x60]
mov dword [esp + 0x60], 0
lea edx, [esp + 0x84]
mov dword [esp + 0x84], 1
lea ecx, [esp + 0x10]
mov dword [esp + 0x88], 1
mov dword [esp + 0x8c], eax
call fcn.10016000
test eax, eax
jns 0x100171e8
lea edx, [esp + 0x30]
lea ecx, [esp + 0x1c]
call fcn.10015320
mov esi, eax
test esi, esi
jne 0x100172af
mov edx, dword [esp + 0x2c]
lea ecx, [esp + 0x1c]
call fcn.10015cc0
mov esi, eax
test esi, esi
jne 0x100172af
mov eax, ebx
lea ecx, [esp + 0x10]
imul eax, dword [esp + 0x1c]
test eax, eax
jns 0x100171c1
lea edx, [esp + 0x1c]
call fcn.10015f70
lea ecx, [esp + 0x10]
test eax, eax
js 0x1001719c
lea eax, [esp + 0x1c]
mov edx, ecx
push eax
call fcn.10016300
add esp, 4
test eax, eax
je 0x100171b3
mov esi, eax
test eax, eax
jne 0x100172af
mov eax, dword [esp + 0x28]
dec dword [eax]
jmp 0x100171ec
lea eax, [esp + 0x10]
push eax
lea edx, [esp + 0x20]
call fcn.10016300
add esp, 4
test eax, eax
jne 0x10017089
neg ebx
mov dword [esp + 0x10], ebx
mov esi, eax
jmp 0x10017097
lea eax, [esp + 0x1c]
push eax
lea edx, [esp + 0x14]
call fcn.100160c0
add esp, 4
mov esi, eax
test eax, eax
jne 0x10017089
mov dword [esp + 0x10], ebx
jmp 0x10017097
lea eax, [esp + 0x10]
push eax
lea edx, [esp + 0x20]
call fcn.10016300
add esp, 4
test eax, eax
jne 0x1001713d
neg ebx
mov esi, eax
mov dword [esp + 0x10], ebx
mov eax, dword [esp + 0x28]
dec dword [eax]
jmp 0x100171ec
lea eax, [esp + 0x1c]
push eax
lea edx, [esp + 0x14]
call fcn.100160c0
add esp, 4
mov esi, eax
test eax, eax
jne 0x1001713d
mov eax, dword [esp + 0x28]
mov dword [esp + 0x10], ebx
dec dword [eax]
jmp 0x100171ec
mov eax, dword [esp + 0x28]
mov ebx, dword [esp + 0x50]
sub eax, 4
sub dword [esp + 0x2c], 0x20
dec ebx
mov dword [esp + 0x50], ebx
mov dword [esp + 0x28], eax
cmp ebx, dword [esp + 0x54]
jbe 0x10017210
mov edx, dword [esp + 0x40]
jmp 0x10016e50
mov ebx, dword [esp + 0x80]
test ebx, ebx
je 0x1001723d
lea edx, [esp + 0x74]
mov ecx, ebx
call fcn.10015320
mov esi, eax
test esi, esi
jne 0x100172af
mov eax, dword [ebp + 8]
mov ecx, dword [ebp + 0xc]
mov eax, dword [eax]
imul eax, dword [ecx]
mov dword [ebx], eax
mov ebx, dword [esp + 0x5c]
test ebx, ebx
je 0x100172af
mov edx, dword [esp + 0x58]
lea ecx, [esp + 0x10]
call fcn.10015e40
mov esi, eax
test esi, esi
jne 0x100172af
mov eax, dword [ebp + 8]
lea edx, [esp + 0x10]
mov ecx, ebx
mov eax, dword [eax]
mov dword [esp + 0x10], eax
call fcn.10015320
mov esi, eax
test esi, esi
jne 0x100172af
mov dword [esp + 0x5c], eax
lea edx, [esp + 0x84]
lea eax, [esp + 0x5c]
mov dword [esp + 0x84], 1
mov ecx, ebx
mov dword [esp + 0x88], 1
mov dword [esp + 0x8c], eax
call fcn.10016000
test eax, eax
jne 0x100172af
mov dword [ebx], 1
mov ecx, dword [esp + 0x18]
test ecx, ecx
je 0x100172d9
mov eax, dword [esp + 0x14]
shl eax, 2
push eax
mov eax, dword [fcn.10046690]
push 0
push ecx
call eax
push dword [esp + 0x24]
call fcn.1004b0ed
mov edi, dword [esp + 0x5c]
add esp, 0x10
mov ecx, dword [esp + 0x38]
test ecx, ecx
je 0x10017303
mov eax, dword [esp + 0x34]
shl eax, 2
push eax
mov eax, dword [fcn.10046690]
push 0
push ecx
call eax
push dword [esp + 0x44]
call fcn.1004b0ed
mov edi, dword [esp + 0x5c]
add esp, 0x10
mov ecx, dword [esp + 0x7c]
test ecx, ecx
je 0x10017330
mov eax, dword [esp + 0x78]
shl eax, 2
push eax
mov eax, dword [fcn.10046690]
push 0
push ecx
call eax
push dword [esp + 0x88]
call fcn.1004b0ed
mov edi, dword [esp + 0x5c]
add esp, 0x10
mov ecx, dword [esp + 0x24]
test ecx, ecx
je 0x1001735a
mov eax, dword [esp + 0x20]
shl eax, 2
push eax
mov eax, dword [fcn.10046690]
push 0
push ecx
call eax
push dword [esp + 0x30]
call fcn.1004b0ed
mov edi, dword [esp + 0x5c]
add esp, 0x10
test edi, edi
je 0x1001737c
mov eax, dword [esp + 0x48]
shl eax, 2
push eax
mov eax, dword [fcn.10046690]
push 0
push edi
call eax
push dword [esp + 0x58]
call fcn.1004b0ed
add esp, 0x10
pop edi
mov eax, esi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret