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

Disassembly:
sub esp, 0x8c
mov edx, dword [esp + 0x90]
push ebx
push ebp
push esi
mov ecx, dword [edx]
mov esi, dword [esp + 0xa0]
mov edx, dword [edx + 0x14]
push edi
mov ebp, dword [ecx + 0x68]
movsx edi, word [esi + 2]
mov ebx, dword [ecx + 0x2e4]
add edi, 4
cmp byte [ecx + 0x2e1], 0
mov eax, dword [ebp + 0x1c]
mov dword [esp + 0x7c], ecx
mov dword [esp + 0x30], ebp
mov dword [esp + 0x14], eax
mov dword [esp + 0x18], edi
mov dword [esp + 0x20], 0
mov dword [esp + 0x44], 0
mov dword [esp + 0x54], 0
mov dword [esp + 0x48], 0
mov dword [esp + 0x4c], ebx
mov dword [esp + 0x80], 0
mov dword [esp + 0x64], 0
mov dword [esp + 0x6c], 0
mov dword [esp + 0x34], 0
je 0x10164e18
test ebx, ebx
je 0x10164e18
xor ecx, ecx
test edi, edi
je 0x101644a4
mov ebp, dword [esp + 0xa8]
nop dword [eax]
mov eax, dword [esi + 4]
mov eax, dword [eax + ecx*8]
shl eax, 6
mov dword [ebp + ecx*8], eax
mov eax, dword [esi + 4]
mov eax, dword [eax + ecx*8 + 4]
shl eax, 6
mov dword [ebp + ecx*8 + 4], eax
inc ecx
cmp ecx, edi
jb 0x10164480
mov ebp, dword [esp + 0x30]
cmp edx, dword [ebx + 0x44]
jae 0x10164e0b
mov ecx, dword [ebx + 0x48]
lea esi, [edx*4]
mov eax, dword [ecx + esi]
cmp eax, dword [ecx + esi + 4]
je 0x10164e0b
lea eax, [esp + 0x10]
push eax
push 0
push edi
push 0
push 8
push dword [esp + 0x28]
call fcn.10150230
add esp, 0x18
mov dword [esp + 0x40], eax
cmp dword [esp + 0x10], 0
jne 0x10164dd7
lea eax, [esp + 0x10]
push eax
push 0
push edi
push 0
push 8
push dword [esp + 0x28]
call fcn.10150230
add esp, 0x18
mov dword [esp + 0x20], eax
cmp dword [esp + 0x10], 0
jne 0x10164dd7
lea eax, [esp + 0x10]
push eax
push 0
push edi
push 0
push 1
push dword [esp + 0x28]
call fcn.10150230
add esp, 0x18
mov dword [esp + 0x44], eax
cmp dword [esp + 0x10], 0
jne 0x10164dd7
mov ecx, dword [ebx + 0x48]
mov edx, dword [ecx + esi]
mov esi, dword [ecx + esi + 4]
push edx
push ebp
sub esi, edx
call fcn.1014e6c0
add esp, 8
mov dword [esp + 0x10], eax
test eax, eax
jne 0x10164dd7
push esi
push ebp
call fcn.1014dc30
add esp, 8
mov dword [esp + 0x10], eax
test eax, eax
jne 0x10164dd7
mov eax, dword [ebp + 0x20]
sub eax, dword [ebp]
mov dword [esp + 0x5c], eax
lea eax, [esp + 0x10]
push eax
push 0
push dword [ebx]
push 0
push 4
push dword [esp + 0x28]
call fcn.10150230
add esp, 0x18
mov dword [esp + 0x50], eax
cmp dword [esp + 0x10], 0
jne 0x10164da0
lea eax, [esp + 0x10]
push eax
push 0
push dword [ebx]
push 0
push 4
push dword [esp + 0x28]
call fcn.10150230
add esp, 0x18
mov dword [esp + 0x54], eax
cmp dword [esp + 0x10], 0
jne 0x10164da0
lea eax, [esp + 0x10]
push eax
push 0
push dword [ebx]
push 0
push 4
push dword [esp + 0x28]
call fcn.10150230
add esp, 0x18
mov dword [esp + 0x48], eax
cmp dword [esp + 0x10], 0
jne 0x10164da0
push ebp
call fcn.1014de60
movzx eax, ax
push ebp
mov dword [esp + 0x68], eax
call fcn.1014de60
movzx edx, ax
add esp, 8
cmp edx, esi
ja 0x10164d98
mov ecx, dword [esp + 0x60]
mov eax, ecx
and eax, 0xfff
mov dword [esp + 0x60], eax
shl eax, 2
cmp eax, esi
ja 0x10164d98
add edx, dword [esp + 0x5c]
mov dword [esp + 0x24], edx
test ecx, 0x8000
je 0x10164691
mov edx, dword [ebp + 0x24]
mov eax, edx
mov ecx, dword [ebp]
sub eax, ecx
mov esi, dword [ebp + 0x20]
sub esi, ecx
cmp dword [esp + 0x24], eax
jae 0x10164659
mov edx, dword [esp + 0x24]
add edx, ecx
lea eax, [esp + 0x80]
mov dword [ebp + 0x20], edx
push eax
push dword [ebx + 0x4c]
push ebp
call fcn.10166060
mov ecx, dword [ebp + 0x20]
add esp, 0xc
mov edx, dword [ebp + 0x24]
mov dword [esp + 0x64], eax
mov eax, dword [ebp]
sub ecx, eax
mov dword [esp + 0x24], ecx
mov ecx, edx
sub ecx, eax
cmp esi, ecx
jae 0x1016468e
lea edx, [eax + esi]
mov dword [ebp + 0x20], edx
mov esi, dword [esp + 0x14]
lea eax, [esp + 0x10]
push eax
push 0
push edi
push 0
push 4
push esi
call fcn.10150230
add esp, 0x18
mov dword [esp + 0x3c], eax
cmp dword [esp + 0x10], 0
jne 0x10164d72
lea eax, [esp + 0x10]
push eax
push 0
push edi
push 0
push 4
push esi
call fcn.10150230
add esp, 0x18
mov edx, eax
cmp dword [esp + 0x10], 0
mov dword [esp + 0x34], edx
jne 0x10164d72
xor ecx, ecx
test edi, edi
je 0x1016471d
mov esi, dword [esp + 0xa4]
mov ebx, dword [esp + 0x40]
add esi, 4
mov eax, dword [esi]
mov eax, dword [eax + ecx*8]
shl eax, 0x10
mov dword [ebx + ecx*8], eax
mov eax, dword [esi]
mov eax, dword [eax + ecx*8 + 4]
shl eax, 0x10
mov dword [ebx + ecx*8 + 4], eax
inc ecx
cmp ecx, edi
jb 0x101646f3
mov ebx, dword [esp + 0x4c]
mov eax, dword [esp + 0xa4]
jmp 0x10164727
mov eax, dword [esp + 0xa4]
lea esi, [eax + 4]
cmp dword [esp + 0x60], 0
mov dword [esp + 0x5c], 0
jbe 0x10164bdc
nop word [eax + eax]
push ebp
call fcn.1014de60
push ebp
mov word [esp + 0x72], ax
call fcn.1014de60
movzx esi, ax
add esp, 8
mov dword [esp + 0x58], eax
mov dword [esp + 0x1c], esi
test esi, 0x8000
je 0x1016485e
xor esi, esi
cmp dword [ebx], esi
jbe 0x1016478e
mov edi, dword [esp + 0x50]
push ebp
call fcn.1014de60
cwde
add esp, 4
shl eax, 2
mov dword [edi + esi*4], eax
inc esi
cmp esi, dword [ebx]
jb 0x10164775
mov edi, dword [esp + 0x18]
mov esi, dword [esp + 0x1c]
test esi, 0x4000
je 0x101647ed
mov eax, dword [ebx]
xor esi, esi
test eax, eax
je 0x101647c1
mov edi, dword [esp + 0x54]
push ebp
call fcn.1014de60
cwde
add esp, 4
shl eax, 2
mov dword [edi + esi*4], eax
inc esi
mov eax, dword [ebx]
cmp esi, eax
jb 0x101647a6
mov edi, dword [esp + 0x18]
xor esi, esi
test eax, eax
je 0x101647e9
mov edi, dword [esp + 0x48]
nop dword [eax + eax]
push ebp
call fcn.1014de60
cwde
add esp, 4
shl eax, 2
mov dword [edi + esi*4], eax
inc esi
cmp esi, dword [ebx]
jb 0x101647d0
mov edi, dword [esp + 0x18]
mov esi, dword [esp + 0x1c]
push dword [esp + 0x48]
push dword [esp + 0x58]
push dword [esp + 0x58]
push dword [esp + 0x64]
push ebx
call fcn.10165120
add esp, 0x14
mov dword [esp + 0x1c], eax
test eax, eax
je 0x10164bb2
mov ecx, dword [ebp]
mov eax, dword [ebp + 0x20]
mov edx, dword [ebp + 0x24]
sub eax, ecx
mov dword [esp + 0x98], eax
mov eax, edx
sub eax, ecx
cmp dword [esp + 0x24], eax
jae 0x10164834
mov edx, dword [esp + 0x24]
add edx, ecx
mov dword [ebp + 0x20], edx
test esi, 0x2000
je 0x10164894
lea eax, [esp + 0x38]
push eax
push dword [ebx + 0x4c]
push ebp
call fcn.10166060
mov dword [esp + 0x78], eax
add esp, 0xc
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x38]
jmp 0x101648a7
mov edx, esi
and edx, 0xfff
cmp edx, dword [ebx + 0x3c]
jae 0x10164c12
mov ecx, dword [ebx]
imul edx, ecx
lea eax, [ecx*4]
push eax
mov eax, dword [ebx + 0x40]
lea eax, [eax + edx*4]
push eax
push dword [esp + 0x58]
call fcn.10266230
add esp, 0xc
jmp 0x10164792
mov ecx, dword [esp + 0x64]
mov eax, dword [esp + 0x80]
mov dword [esp + 0x28], ecx
mov dword [esp + 0x38], eax
test eax, eax
mov esi, eax
cmove esi, edi
push esi
push dword [ebx + 0x4c]
push ebp
call fcn.10165f10
push esi
push dword [ebx + 0x4c]
mov dword [esp + 0x84], eax
push ebp
call fcn.10165f10
mov edx, dword [esp + 0x40]
add esp, 0x18
mov ecx, eax
mov dword [esp + 0x58], ecx
test edx, edx
je 0x10164b61
test ecx, ecx
je 0x10164b61
mov eax, dword [esp + 0x70]
test eax, eax
je 0x10164b61
cmp edx, 0xffffffff
jne 0x101649c9
test edi, edi
je 0x10164b61
mov ebx, dword [esp + 0x3c]
sub eax, ecx
mov edx, dword [esp + 0x34]
sub ecx, ebx
sub edx, ebx
mov dword [esp + 0x78], eax
mov ebp, ebx
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x88], edx
mov dword [esp + 0x28], edi
mov edi, dword [ebp]
lea esi, [ecx + ebp]
mov eax, dword [esi + eax]
mov ebx, dword [edx + ebp]
mov dword [esp + 0x74], eax
mov eax, dword [esp + 0x74]
mov edx, dword [esp + 0x1c]
imul edx
mov ecx, edx
sar ecx, 0x1f
add ecx, 0x8000
add eax, ecx
adc edx, 0
shr eax, 0x10
shl edx, 0x10
add eax, edx
mov dword [esp + 0x8c], eax
mov eax, dword [esi]
mov dword [esp + 0x74], eax
mov eax, dword [esp + 0x74]
mov edx, dword [esp + 0x1c]
imul edx
mov ecx, edx
sar ecx, 0x1f
add ecx, 0x8000
add eax, ecx
adc edx, 0
shr eax, 0x10
shl edx, 0x10
add eax, edx
mov dword [esp + 0x84], eax
mov eax, dword [esp + 0x8c]
lea ebp, [ebp + 4]
mov edx, dword [esp + 0x88]
add eax, edi
mov ecx, dword [esp + 0x2c]
mov dword [ebp - 4], eax
mov eax, dword [esp + 0x84]
add eax, ebx
sub dword [esp + 0x28], 1
mov dword [edx + ebp - 4], eax
mov eax, dword [esp + 0x78]
jne 0x10164926
jmp 0x10164b55
xor esi, esi
test edi, edi
je 0x10164a0d
mov edi, dword [esp + 0x40]
mov edx, dword [esp + 0x20]
sub edi, edx
mov ebx, dword [esp + 0x18]
mov ebp, dword [esp + 0x44]
mov byte [esi + ebp], 0
lea edx, [edx + 8]
mov eax, dword [edx + edi - 8]
inc esi
mov ecx, dword [edx + edi - 4]
mov dword [edx - 8], eax
mov dword [edx - 4], ecx
cmp esi, ebx
jb 0x101649e1
mov ebp, dword [esp + 0x30]
mov edi, ebx
mov edx, dword [esp + 0x28]
mov ecx, dword [esp + 0x58]
mov eax, dword [esp + 0x70]
xor esi, esi
cmp dword [esp + 0x38], esi
jbe 0x10164ae3
mov ebp, eax
mov edi, ecx
mov eax, dword [esp + 0x18]
sub ebp, ecx
mov ecx, dword [esp + 0x38]
nop word [eax + eax]
movzx ebx, word [edx + esi*2]
cmp ebx, eax
jae 0x10164acf
mov eax, dword [esp + 0x44]
mov byte [ebx + eax], 1
mov eax, dword [edi + ebp]
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x2c]
mov edx, dword [esp + 0x1c]
imul edx
mov ecx, edx
sar ecx, 0x1f
add ecx, 0x8000
add eax, ecx
adc edx, 0
shr eax, 0x10
shl edx, 0x10
add eax, edx
mov dword [esp + 0x90], eax
mov ecx, dword [esp + 0x20]
mov eax, dword [ecx + ebx*8]
add eax, dword [esp + 0x90]
mov dword [ecx + ebx*8], eax
mov eax, dword [edi]
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x2c]
mov edx, dword [esp + 0x1c]
imul edx
mov ecx, edx
sar ecx, 0x1f
add ecx, 0x8000
add eax, ecx
adc edx, 0
shr eax, 0x10
shl edx, 0x10
add eax, edx
mov dword [esp + 0x94], eax
mov ecx, dword [esp + 0x20]
mov eax, dword [esp + 0x94]
mov edx, dword [esp + 0x28]
add dword [ecx + ebx*8 + 4], eax
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x38]
inc esi
add edi, 4
cmp esi, ecx
jb 0x10164a30
mov ebp, dword [esp + 0x30]
mov edi, dword [esp + 0x18]
push dword [esp + 0x44]
push dword [esp + 0x44]
push dword [esp + 0x28]
push dword [esp + 0xb0]
call fcn.10168330
add esp, 0x10
xor ebx, ebx
test edi, edi
je 0x10164b5d
mov eax, dword [esp + 0x40]
mov ebp, dword [esp + 0x20]
mov esi, dword [esp + 0x34]
sub ebp, eax
mov dword [esp + 0x78], ebp
lea edi, [eax + 4]
mov eax, dword [esp + 0x3c]
sub eax, esi
mov dword [esp + 0x2c], eax
mov ecx, dword [edi + ebp]
lea edi, [edi + 8]
mov eax, dword [esp + 0x20]
lea esi, [esi + 4]
sub ecx, dword [edi - 8]
mov edx, dword [esi - 4]
mov ebp, dword [esp + 0x2c]
mov eax, dword [eax + ebx*8]
inc ebx
sub eax, dword [edi - 0xc]
add dword [esi + ebp - 4], eax
lea eax, [ecx + edx]
mov ebp, dword [esp + 0x78]
mov dword [esi - 4], eax
cmp ebx, dword [esp + 0x18]
jb 0x10164b23
mov edi, dword [esp + 0x18]
mov ebp, dword [esp + 0x30]
mov ebx, dword [esp + 0x4c]
mov eax, dword [esp + 0x6c]
mov esi, dword [esp + 0x14]
cmp eax, 0xffffffff
je 0x10164b80
push eax
push esi
call fcn.101500c0
add esp, 8
mov dword [esp + 0x6c], 0
push dword [esp + 0x70]
push esi
call fcn.101500c0
push dword [esp + 0x60]
push esi
call fcn.101500c0
mov ecx, dword [ebp + 0x24]
add esp, 0x10
mov edx, dword [ebp]
mov eax, ecx
mov esi, dword [esp + 0x98]
sub eax, edx
cmp esi, eax
jae 0x10164baf
lea ecx, [edx + esi]
mov dword [ebp + 0x20], ecx
mov ecx, dword [esp + 0x5c]
movzx eax, word [esp + 0x6a]
inc ecx
add dword [esp + 0x24], eax
mov dword [esp + 0x5c], ecx
cmp ecx, dword [esp + 0x60]
jb 0x10164740
mov eax, dword [esp + 0xa4]
mov edx, dword [esp + 0x34]
lea esi, [eax + 4]
mov ebx, dword [esp + 0x7c]
mov ecx, dword [esp + 0x3c]
test byte [ebx + 0x2e8], 2
je 0x10164c1f
mov dword [ecx + edi*4 - 0x10], 0
add eax, 4
mov dword [edx + edi*4 - 0x10], 0
mov dword [ecx + edi*4 - 0xc], 0
mov dword [edx + edi*4 - 0xc], 0
jmp 0x10164c21
mov dword [esp + 0x10], 8
jmp 0x10164d72
mov eax, esi
test byte [ebx + 0x2e8], 0x10
je 0x10164c4c
mov dword [ecx + edi*4 - 8], 0
mov esi, eax
mov dword [edx + edi*4 - 8], 0
mov dword [ecx + edi*4 - 4], 0
mov dword [edx + edi*4 - 4], 0
mov ebx, dword [esp + 0x18]
xor edi, edi
test ebx, ebx
je 0x10164cc0
mov ebp, dword [esp + 0xa4]
mov esi, ecx
sub esi, dword [esp + 0x34]
mov eax, dword [edx + esi]
lea edx, [edx + 4]
mov ecx, dword [esp + 0xa8]
add eax, 0x200
sar eax, 0xa
add dword [ecx + edi*8], eax
mov eax, dword [edx - 4]
add eax, 0x200
sar eax, 0xa
add dword [ecx + edi*8 + 4], eax
mov eax, dword [ebp + 4]
lea ecx, [eax + edi*8]
mov eax, dword [edx + esi - 4]
add eax, 0x8000
shr eax, 0x10
cwde
add dword [ecx], eax
mov eax, dword [ebp + 4]
lea ecx, [eax + edi*8]
mov eax, dword [edx - 4]
add eax, 0x8000
inc edi
shr eax, 0x10
cwde
add dword [ecx + 4], eax
cmp edi, ebx
jb 0x10164c63
lea esi, [ebp + 4]
mov ebp, dword [esp + 0x30]
mov eax, dword [esp + 0x7c]
mov edi, dword [esp + 0xa0]
test byte [eax + 0x2e8], 2
jne 0x10164d19
mov eax, dword [esi]
mov ecx, dword [eax + ebx*8 - 0x20]
mov eax, dword [eax + ebx*8 - 0x1c]
mov dword [edi + 0x48], eax
mov dword [edi + 0x44], ecx
mov eax, dword [esi]
mov ecx, dword [eax + ebx*8 - 0x18]
mov eax, dword [eax + ebx*8 - 0x14]
mov dword [edi + 0x4c], ecx
mov ecx, dword [esp + 0xa8]
mov dword [edi + 0x50], eax
mov eax, dword [ecx + ebx*8 - 0x18]
sub eax, dword [ecx + ebx*8 - 0x20]
add eax, 0x20
and eax, 0xffffffc0
cdq
and edx, 0x3f
add eax, edx
sar eax, 6
mov dword [edi + 0x3c], eax
mov eax, dword [esp + 0x7c]
test byte [eax + 0x2e8], 0x10
jne 0x10164d72
mov eax, dword [esi]
mov ecx, dword [eax + ebx*8 - 0x10]
mov eax, dword [eax + ebx*8 - 0xc]
mov dword [edi + 0xb8], eax
mov dword [edi + 0xb4], ecx
mov eax, dword [esi]
mov ecx, dword [eax + ebx*8 - 8]
mov eax, dword [eax + ebx*8 - 4]
mov dword [edi + 0xbc], ecx
mov ecx, dword [esp + 0xa8]
mov dword [edi + 0xc0], eax
mov eax, dword [ecx + ebx*8 - 4]
sub eax, dword [ecx + ebx*8 - 0xc]
add eax, 0x20
and eax, 0xffffffc0
cdq
and edx, 0x3f
add eax, edx
sar eax, 6
mov dword [edi + 0xb0], eax
push dword [esp + 0x3c]
mov ebx, dword [esp + 0x18]
push ebx
call fcn.101500c0
push dword [esp + 0x3c]
push ebx
call fcn.101500c0
add esp, 0x10
mov eax, dword [esp + 0x64]
cmp eax, 0xffffffff
je 0x10164db0
jmp 0x10164da6
mov dword [esp + 0x10], 8
mov ebx, dword [esp + 0x14]
xor eax, eax
push eax
push ebx
call fcn.101500c0
add esp, 8
push dword [esp + 0x50]
push ebx
call fcn.101500c0
push dword [esp + 0x5c]
push ebx
call fcn.101500c0
push dword [esp + 0x58]
push ebx
call fcn.101500c0
push ebp
call fcn.1014dd00
add esp, 0x1c
push dword [esp + 0x40]
mov ebp, dword [esp + 0x18]
push ebp
call fcn.101500c0
push dword [esp + 0x28]
push ebp
call fcn.101500c0
push dword [esp + 0x54]
push ebp
call fcn.101500c0
mov eax, dword [esp + 0x28]
add esp, 0x18
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x8c
ret
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x8c
ret
pop edi
pop esi
pop ebp
mov eax, 6
pop ebx
add esp, 0x8c
ret