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

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x3c
mov eax, dword [0x10052004]
xor eax, esp
mov dword [esp + 0x38], eax
push ebx
push esi
mov esi, ecx
xor eax, eax
mov ebx, 0x200
mov dword [esp + 0x14], esi
push edi
mov dword [esp + 0x10], eax
mov ecx, dword [esi]
mov dword [esp + 0x14], ebx
test ecx, ecx
je 0x1003272e
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0xf80]
mov eax, dword [eax]
add eax, ecx
mov ecx, dword [eax]
mov eax, dword [ecx]
mov edi, dword [eax]
lea eax, [esp + 0x30]
push eax
push 0x10001ad0
push ecx
cmp edi, fcn.10025620
je 0x10016ccb
mov ecx, edi
call dword [0x100532e8]
call edi
test eax, eax
jns 0x10016cd5
cmp ebx, 0x200
jne 0x1003274f
mov edx, dword [esi]
test edx, edx
je 0x10032748
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0xf80]
mov ecx, dword [eax]
add ecx, edx
mov ecx, dword [ecx]
lea eax, [esp + 0x2c]
push eax
push 0x200
lea eax, [esi + 8]
mov edi, dword [ecx]
push eax
push 0
push 0
mov edi, dword [edi + 0xc]
push ecx
mov ecx, edi
call dword [0x100532e8]
call edi
mov ebx, eax
cmp ebx, 0x8000000a
je 0x100327cb
test ebx, ebx
js 0x10016cb5
cmp dword [ebp + 8], 0
mov edi, dword [esp + 0x14]
je 0x1001678e
mov ecx, edi
mov eax, 0
add ecx, dword [ebp + 0x10]
push 0
adc eax, dword [ebp + 0x14]
add ecx, 0xffffffff
push edi
adc eax, 0xffffffff
push eax
push ecx
call fcn.10028af0
mov ecx, eax
add ecx, 0xffffffff
adc edx, 0xffffffff
test edx, edx
jb 0x10016789
ja 0x100327d5
cmp ecx, 0xffffffff
jae 0x100327d5
dec eax
mov dword [esp + 0x10], eax
movzx eax, word [esi + 0x26]
mov edx, 1
mov cl, al
mov word [esi + 0x4c2], ax
shl dx, cl
mov dword [esi + 0x208], 0
mov word [esi + 0x4c0], dx
lea eax, [edx - 1]
mov word [esi + 0x4c4], ax
cmp dword [esp + 0x2c], edi
jne 0x100327dd
lea ecx, [esi + 8]
call fcn.1000aa30
mov ebx, eax
test ebx, ebx
js 0x10016cb5
mov ecx, esi
call fcn.100173b0
mov ebx, eax
test ebx, ebx
js 0x10016cb5
cmp dword [ebp + 8], 0
mov edi, dword [esp + 0x10]
je 0x10016809
mov ebx, dword [esi + 0x50]
cmp ebx, edi
ja 0x100327e7
cmp dword [esi + 0x34], edi
ja 0x100327e7
mov eax, dword fs:[0x18]
mov ebx, dword [esi + 0x50]
push ebx
push esi
mov ecx, dword [eax + 0xf80]
mov eax, esi
mov dword [esp + 0x14], ebx
sub eax, dword [ecx]
lea ecx, [esi + 0x298]
mov dword [esi + 0x2b8], eax
movzx eax, word [esi + 0x4c0]
shr eax, 2
mov word [esi + 0x2b6], ax
dec eax
mov word [esi + 0x2b4], ax
call fcn.10020440
mov ebx, eax
test ebx, ebx
js 0x10016cb5
mov eax, dword [esp + 0xc]
mov dword [esi + 0x2bc], eax
push ecx
push dword [esi + 0x34]
lea ecx, [esi + 0x23c]
push esi
call fcn.1001b860
mov ebx, eax
test ebx, ebx
js 0x10016cb5
cmp word [esi + 0x4c2], 9
ja 0x10016d0b
mov eax, dword [esi + 0x278]
lea edx, [esi + 0x23c]
mov cl, byte [edx + 0x38]
inc eax
mov edi, dword [esi + 0x38]
xor ebx, ebx
shl eax, cl
mov dword [esp + 0x14], ebx
mov dword [esp + 0x20], eax
cmp edi, 0xfffffffe
je 0x100169ec
mov dword [esp + 0x40], edi
cmp edi, 0xfffffffa
ja 0x100329bc
mov cl, byte [edx + 0x38]
mov eax, edi
shr eax, cl
mov ecx, edx
mov dword [esp + 0x10], eax
mov ax, word [edx + 0x3a]
and ax, di
mov dword [esp + 0x1c], ebx
movzx eax, ax
mov dword [esp + 0xc], eax
lea eax, [esp + 0x1c]
push eax
push 0
push dword [esp + 0x18]
call fcn.1001f370
mov edi, dword [esp + 0x1c]
cmp eax, 0x302ff
je 0x10032922
test eax, eax
js 0x100329ad
mov eax, dword [esp + 0xc]
lea edx, [esi + 0x23c]
mov ecx, dword [edx + 8]
movzx eax, ax
mov edi, dword [edi + eax*4]
test ecx, ecx
je 0x1003295d
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0xf80]
mov eax, dword [eax]
add eax, ecx
je 0x1003295d
mov ecx, dword [edx + 8]
test ecx, ecx
je 0x10032948
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0xf80]
mov eax, dword [eax]
add eax, ecx
mov ecx, dword [esp + 0x10]
mov eax, dword [eax + ecx*4]
lea esi, [ecx*4]
mov dword [esp + 0x10], esi
mov dword [esp + 0xc], eax
test eax, eax
je 0x10032961
mov eax, dword fs:[0x18]
mov esi, dword [esp + 0x18]
mov eax, dword [eax + 0xf80]
mov eax, dword [eax]
add eax, dword [esp + 0xc]
je 0x10032961
mov ecx, dword [edx + 8]
test ecx, ecx
je 0x1003294f
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0xf80]
mov eax, dword [eax]
add eax, ecx
mov ecx, dword [esp + 0x10]
mov ecx, dword [eax + ecx]
test ecx, ecx
je 0x10032956
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0xf80]
mov eax, dword [eax]
add eax, ecx
dec dword [eax + 0x1c]
cmp dword [esp + 0x40], edi
je 0x100329bc
mov eax, dword [esp + 0x14]
inc eax
mov dword [esp + 0x14], eax
cmp eax, dword [esp + 0x20]
ja 0x10032918
cmp edi, 0xfffffffe
jne 0x100168b0
test ebx, ebx
js 0x10016cb5
mov eax, dword fs:[0x18]
lea edi, [esi + 0x20c]
push dword [esp + 0x14]
push esi
mov ecx, dword [eax + 0xf80]
mov eax, esi
sub eax, dword [ecx]
mov ecx, edi
mov dword [edi + 0x24], eax
movzx eax, word [esi + 0x4c0]
shr ax, 7
mov word [edi + 0x28], ax
movzx eax, word [esi + 0x4c0]
mov word [edi + 0x1c], ax
call fcn.10020440
mov ebx, eax
test ebx, ebx
js 0x10016cb5
mov eax, dword [esp + 0x14]
xor edx, edx
movzx ecx, word [edi + 0x28]
mov dword [edi + 0x20], eax
xor eax, eax
div ecx
lea ecx, [esp + 0x38]
push ecx
push 0xfffffffffffffffe
push 0
push eax
mov ecx, edi
call fcn.1001f720
mov ebx, eax
cmp ebx, 0x302ff
je 0x100329c6
test ebx, ebx
js 0x10016a95
movzx ecx, word [edi + 0x28]
xor eax, eax
xor edx, edx
div ecx
movzx ecx, dx
shl ecx, 7
add ecx, dword [esp + 0x38]
movzx ecx, byte [ecx + 0x42]
mov dword [esp + 0x20], ecx
mov ecx, edi
push eax
call fcn.1001f3a0
mov eax, dword [esp + 0x20]
test ebx, ebx
js 0x10016cb5
cmp eax, 5
jne 0x100329ff
test ebx, ebx
js 0x10016cb5
push ecx
push dword [esi + 0x48]
lea ecx, [esi + 0x328]
push esi
call fcn.1001b860
mov ebx, eax
test ebx, ebx
js 0x10016cb5
call fcn.1001a850
movzx edx, word [esi + 0x4c0]
push edx
push eax
mov ecx, dword [eax]
mov ebx, dword [ecx + 0xc]
cmp ebx, fcn.100180d0
jne 0x10032a09
call fcn.100180d0
test eax, eax
je 0x10032a7c
mov ecx, dword fs:[0x18]
xor edx, edx
mov ecx, dword [ecx + 0xf80]
sub eax, dword [ecx]
mov dword [esi + 0x48c], eax
xor eax, eax
movzx ecx, word [edi + 0x28]
div ecx
lea ecx, [esp + 0x34]
push ecx
push 0xfffffffffffffffe
push 0
push eax
mov ecx, edi
call fcn.1001f720
mov ebx, eax
cmp ebx, 0x302ff
je 0x10032a18
test ebx, ebx
js 0x10032a51
movzx edi, word [edi + 0x28]
xor eax, eax
mov ecx, edi
xor edx, edx
div ecx
movzx ecx, dx
shl ecx, 7
add ecx, dword [esp + 0x34]
cmp edi, 4
ja 0x10016d1f
mov edi, dword [ecx + 0x78]
mov dword [esp + 0xc], edi
mov dword [esp + 0x10], 0
push eax
lea ecx, [esi + 0x20c]
call fcn.1001f3a0
test ebx, ebx
js 0x10016cb5
call fcn.1001a850
call fcn.1001a850
push 0xb0
push eax
mov ecx, dword [eax]
mov edi, dword [ecx + 0xc]
cmp edi, fcn.100180d0
jne 0x10032a66
call fcn.100180d0
mov edi, eax
test edi, edi
je 0x10032a7c
mov dword [edi + 8], 2
lea ecx, [edi + 0x14]
mov dword [edi + 0xc], 0
mov dword [edi + 0x10], 0xffffffff
call fcn.100149e0
mov eax, dword fs:[0x18]
mov dword [edi + 0xa8], 0
mov dword [edi + 4], 0
mov dword [edi], 0x52545344
mov eax, dword [eax + 0xf80]
sub edi, dword [eax]
mov dword [esi + 0x484], edi
mov ecx, edi
je 0x10032a75
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0xf80]
mov edx, dword [eax]
add edx, ecx
mov eax, dword fs:[0x18]
mov ecx, esi
mov eax, dword [eax + 0xf80]
sub ecx, dword [eax]
mov eax, dword [esp + 0xc]
mov dword [edx + 0xc], ecx
mov ecx, dword [esp + 0x10]
mov dword [edx + 0x10], 0
mov dword [edx + 0xa0], eax
mov dword [edx + 0x98], eax
mov eax, dword fs:[0x18]
mov dword [edx + 0xa4], ecx
mov dword [edx + 0x9c], ecx
mov eax, dword [eax + 0xf80]
sub esi, dword [eax]
mov eax, dword fs:[0x18]
mov dword [edx + 0x84], esi
mov dword [edx + 0x88], 0
mov ecx, dword [eax + 0xf80]
mov eax, edx
sub eax, dword [ecx]
mov ecx, 9
mov dword [edx + 0x80], eax
lea eax, [edx + 0x1c]
mov dword [eax - 8], 0xffffffff
lea eax, [eax + 0xc]
mov dword [eax - 0x10], 0xfffffffe
mov dword [eax - 0xc], 0
sub ecx, 1
jne 0x10016c86
inc word [edx + 0x90]
xor eax, eax
mov dword [edx + 0x8c], eax
inc dword [edx + 4]
mov ecx, dword [esp + 0x44]
mov eax, ebx
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.100281a0
mov esp, ebp
pop ebp
ret 0x10
call fcn.10025620
jmp 0x100166df
mov edi, dword [esp + 0x30]
push edi
mov eax, dword [edi]
mov ebx, dword [eax + 0x1c]
cmp ebx, fcn.10010ff0
jne 0x10032735
call fcn.10010ff0
mov ebx, eax
mov eax, dword [edi]
push edi
mov dword [esp + 0x18], ebx
mov edi, dword [eax + 8]
mov ecx, edi
call dword [0x100532e8]
call edi
jmp 0x100166e7
mov ecx, dword [esi + 0x30]
mov dword [esp + 0x14], ecx
cmp ecx, edi
jbe 0x100169f4
jmp 0x1003288f
mov edx, dword [ecx + 0x78]
mov ecx, dword [ecx + 0x7c]
mov dword [esp + 0xc], edx
mov dword [esp + 0x10], ecx
jmp 0x10016b6c
xor eax, eax
jmp 0x100166b8
mov ecx, ebx
call dword [0x100532e8]
call ebx
mov edi, dword [esp + 0x30]
jmp 0x10016cf0
xor ecx, ecx
jmp 0x1001670d
push ebx
call dword [sym.imp.api_ms_win_core_com_l1_1_1.dll_CoTaskMemAlloc]
mov ecx, eax
mov dword [esp + 0xc], ecx
test ecx, ecx
je 0x10032a7c
mov edx, dword [esi]
test edx, edx
je 0x1003277c
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0xf80]
mov eax, dword [eax]
add eax, edx
jmp 0x1003277e
xor eax, eax
mov eax, dword [eax]
lea edx, [esp + 0x2c]
push edx
push ebx
push ecx
mov edi, dword [eax]
push 0
push 0
push eax
mov edi, dword [edi + 0xc]
mov ecx, edi
call dword [0x100532e8]
call edi
mov ebx, eax
mov eax, dword [esp + 0xc]
test ebx, ebx
js 0x100327bf
cmp dword [esp + 0x2c], 0x200
jb 0x100327bf
lea edi, [esi + 8]
mov ecx, 0x80
mov esi, eax
rep movsd dword es:[edi], dword [esi]
mov esi, dword [esp + 0x18]
push eax
call dword [sym.imp.api_ms_win_core_com_l1_1_1.dll_CoTaskMemFree]
jmp 0x10016733
mov ebx, 0x80030204
jmp 0x10016cb5
or eax, 0xffffffff
jmp 0x1001678a
mov ebx, 0x800300fb
jmp 0x10016cb5
cmp dword [ebp + 0xc], 0
jne 0x10032918
mov eax, dword [esi + 0x34]
cmp ebx, eax
ja 0x100327fa
mov ebx, eax
movzx eax, word [esi + 0x4c0]
xor ecx, ecx
mov dword [esp + 0x10], eax
add ebx, 1
cdq
push edx
push eax
adc ecx, ecx
mov dword [esp + 0x24], eax
push ecx
push ebx
mov dword [esp + 0x1c], edx
call fcn.10028a40
mov ebx, eax
mov ecx, edx
mov eax, dword [esp + 0x1c]
mov edx, dword [esp + 0xc]
add eax, ebx
mov dword [esp + 0x14], ecx
adc edx, ecx
jne 0x1003283b
cmp eax, 0x7fffff00
jbe 0x10032853
test ecx, ecx
ja 0x10032853
jb 0x10032849
cmp ebx, 0x7fffffe3
ja 0x10032853
mov ebx, eax
mov eax, edx
mov dword [esp + 0x14], eax
jmp 0x10032857
mov eax, dword [esp + 0x14]
mov edx, dword [esi]
test edx, edx
je 0x10032873
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0xf80]
mov ecx, dword [eax]
mov eax, dword [esp + 0x14]
add ecx, edx
jmp 0x10032875
xor ecx, ecx
mov edx, dword [esp + 0x10]
mov ecx, dword [ecx]
push eax
push ebx
call fcn.1004d8cc
test eax, eax
js 0x10032918
jmp 0x10016809
cmp dword [ebp + 8], 0
je 0x100169f4
cmp dword [ebp + 0xc], 0
jne 0x10032918
movzx eax, word [esi + 0x4c0]
mov edi, ecx
mov dword [esp + 0xc], eax
xor ecx, ecx
cdq
add edi, 1
push edx
mov ebx, eax
mov dword [esp + 0x20], edx
push ebx
adc ecx, ecx
push ecx
push edi
call fcn.10028a40
mov edi, eax
mov eax, dword [esp + 0x1c]
add ebx, edi
adc eax, edx
jne 0x100328d7
cmp ebx, 0x7fffff00
jbe 0x100328e9
test edx, edx
ja 0x100328e9
jb 0x100328e5
cmp edi, 0x7fffffe3
ja 0x100328e9
mov edi, ebx
mov edx, eax
mov ebx, dword [esi]
test ebx, ebx
je 0x10032901
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0xf80]
mov ecx, dword [eax]
add ecx, ebx
jmp 0x10032903
xor ecx, ecx
mov ecx, dword [ecx]
push edx
mov edx, dword [esp + 0x10]
push edi
call fcn.1004d8cc
test eax, eax
jns 0x100169f4
mov ebx, 0x80030109
jmp 0x10016cb5
test edi, edi
je 0x10016903
movzx eax, word [esi + 0x25a]
shl eax, 2
push eax
push 0xff
push edi
call sub.msvcrt.dll_memset
add esp, 0xc
jmp 0x10016903
xor eax, eax
jmp 0x1001694f
xor eax, eax
jmp 0x100169a4
xor eax, eax
jmp 0x100169c3
mov ecx, dword [esp + 0x10]
mov eax, dword [edx]
mov dword [esp + 0xc], eax
test eax, eax
je 0x1003297f
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0xf80]
mov eax, dword [eax]
add eax, dword [esp + 0xc]
jmp 0x10032981
xor eax, eax
lea esi, [esp + 0x3c]
push esi
push ecx
push dword [edx + 0x10]
mov ecx, eax
push edx
call fcn.10037374
mov esi, dword [esp + 0x18]
lea edx, [esi + 0x23c]
test eax, eax
js 0x100169c6
mov eax, dword [esp + 0x3c]
jmp 0x100169c3
mov ebx, eax
mov eax, dword [esp + 0x20]
mov dword [esp + 0x14], eax
jmp 0x100169ec
mov ebx, 0x800300fa
jmp 0x10016cb5
movzx eax, word [edi + 0x1c]
shr eax, 7
mov dword [esp + 0x20], eax
test eax, eax
je 0x10016a71
mov edi, dword [esp + 0x38]
mov esi, eax
push 0
mov ecx, edi
call fcn.10021009
sub edi, 0xffffff80
sub esi, 1
jne 0x100329df
mov esi, dword [esp + 0x18]
lea edi, [esi + 0x20c]
jmp 0x10016a71
mov ebx, 0x80030109
jmp 0x10016aaa
mov ecx, ebx
call dword [0x100532e8]
call ebx
jmp 0x10016af0
movzx eax, word [edi + 0x1c]
shr eax, 7
mov dword [esp + 0x20], eax
test eax, eax
je 0x10016b3e
mov edi, dword [esp + 0x34]
mov esi, eax
push 0
mov ecx, edi
call fcn.10021009
sub edi, 0xffffff80
sub esi, 1
jne 0x10032a31
mov esi, dword [esp + 0x18]
lea edi, [esi + 0x20c]
jmp 0x10016b3e
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x20]
mov dword [esp + 0x10], ecx
mov dword [esp + 0xc], edx
jmp 0x10016b78
mov ecx, edi
call dword [0x100532e8]
call edi
jmp 0x10016ba6
xor edx, edx
jmp 0x10016c10
mov ebx, 0x80030008
jmp 0x10016cb5