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

Disassembly:
sub esp, 0x54
mov eax, dword [0x1030fff4]
xor eax, esp
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x60]
push ebx
mov ebx, dword [esp + 0x5c]
mov dword [esp + 0x28], eax
xor eax, eax
push ebp
mov dword [esp + 0x24], eax
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], eax
mov eax, dword [ebx + 0x20]
push esi
push 0x30
mov ebp, dword [eax]
lea eax, [ebx + 0x34]
push ebp
push eax
call sub.VCRUNTIME140.dll_memcmp
add esp, 0xc
test eax, eax
je 0x101638db
mov ebp, dword [ebp + 0x10]
inc ebp
mov dword [esp + 0x18], ebp
push ebx
call fcn.1016ec15
mov esi, eax
pop ecx
test esi, esi
jne 0x10163d03
mov eax, dword [ebx + 0x44]
mov dword [esp + 0x10], eax
mov dword [esp + 0x2c], 1
push edi
test eax, eax
jne 0x101639ef
lea eax, [esp + 0x40]
push 0x377f0682
push eax
call fcn.1021b520
lea eax, [esp + 0x4c]
push 0x2de218
push eax
call fcn.1021b520
mov ebp, dword [esp + 0x7c]
lea eax, [esp + 0x58]
push ebp
push eax
call fcn.1021b520
push dword [ebx + 0x70]
lea eax, [esp + 0x68]
push eax
call fcn.1021b520
add esp, 0x20
lea esi, [ebx + 0x54]
cmp dword [ebx + 0x70], 0
jne 0x10163954
push esi
push 8
call fcn.10117830
pop ecx
pop ecx
push 8
lea eax, [esp + 0x54]
push esi
push eax
call sub.VCRUNTIME140.dll_memcpy
lea eax, [esp + 0x44]
push eax
push 0
push 0x18
lea eax, [esp + 0x58]
push eax
push 1
call fcn.1016db60
mov edi, dword [esp + 0x58]
lea eax, [esp + 0x78]
push edi
push eax
call fcn.1021b520
mov esi, dword [esp + 0x64]
lea eax, [esp + 0x84]
push esi
push eax
call fcn.1021b520
xor edx, edx
mov dword [ebx + 0x4c], edi
push edx
mov dword [ebx + 0x50], esi
mov eax, dword [ebx + 8]
push edx
mov byte [ebx + 0x41], dl
lea edx, [esp + 0x78]
mov dword [ebx + 0x24], ebp
mov byte [ebx + 0x2f], 1
mov ecx, dword [eax]
push 0x20
push edx
push eax
call dword [ecx + 0xc]
mov esi, eax
add esp, 0x44
test esi, esi
jne 0x10163d00
mov edi, dword [esp + 0x7c]
cmp byte [ebx + 0x30], al
je 0x101639f7
mov eax, edi
sar eax, 2
and eax, 3
push eax
push dword [ebx + 8]
call fcn.1014da17
mov esi, eax
pop ecx
pop ecx
test esi, esi
je 0x101639f7
jmp 0x10163d00
mov ebp, dword [esp + 0x6c]
mov edi, dword [esp + 0x7c]
mov eax, dword [ebx + 8]
xorps xmm0, xmm0
mov dword [esp + 0x44], eax
lea eax, [ebp + 0x18]
mov dword [esp + 0x38], eax
cdq
mov ecx, edx
mov dword [esp + 0x40], ebx
push ecx
push eax
push 0
push dword [esp + 0x20]
movlpd qword [esp + 0x58], xmm0
mov dword [esp + 0x60], edi
mov dword [esp + 0x64], ebp
mov dword [esp + 0x38], eax
mov dword [esp + 0x34], ecx
call fcn.102363a0
mov ecx, dword [esp + 0x34]
add eax, 0x20
mov ebp, edx
mov dword [esp + 0x10], eax
adc ebp, 0
mov edi, ecx
test ecx, ecx
je 0x10163b35
mov esi, dword [esp + 0x1c]
test esi, esi
je 0x10163add
cmp dword [edi + 0x10], 0
jne 0x10163a65
cmp dword [esp + 0x78], 0
jne 0x10163add
and dword [esp + 0x20], 0
lea eax, [esp + 0x20]
push eax
push dword [edi + 0x18]
push ebx
call fcn.101637a7
add esp, 0xc
cmp dword [esp + 0x20], esi
jb 0x10163ad9
push dword [esp + 0x24]
mov esi, dword [esp + 0x24]
push dword [esp + 0x2c]
push 0
lea eax, [esi - 1]
push eax
call fcn.102363a0
add eax, 0x38
adc edx, 0
cmp dword [ebx + 0x68], 0
je 0x10163aa9
cmp esi, dword [ebx + 0x68]
jae 0x10163aac
mov dword [ebx + 0x68], esi
push edx
push eax
push dword [esp + 0x74]
push dword [edi + 4]
push dword [ebx + 8]
call fcn.1021b520
mov esi, eax
add esp, 0x14
test esi, esi
jne 0x10163d00
mov eax, 0xffbf
and word [edi + 0x1c], ax
mov eax, dword [esp + 0x10]
jmp 0x10163b2a
mov eax, dword [esp + 0x10]
inc dword [esp + 0x14]
cmp dword [esp + 0x78], 0
je 0x10163af4
cmp dword [edi + 0x10], 0
jne 0x10163af4
mov ecx, dword [esp + 0x74]
jmp 0x10163af6
xor ecx, ecx
push ebp
push eax
push ecx
lea eax, [esp + 0x4c]
push edi
push eax
call fcn.1016f043
mov esi, eax
add esp, 0x14
test esi, esi
jne 0x10163d00
mov eax, dword [esp + 0x10]
add eax, dword [esp + 0x28]
mov dword [esp + 0x2c], edi
adc ebp, dword [esp + 0x24]
or word [edi + 0x1c], 0x40
mov dword [esp + 0x10], eax
mov edi, dword [edi + 0x10]
test edi, edi
jne 0x10163a4c
cmp dword [esp + 0x78], 0
je 0x10163c7a
cmp dword [ebx + 0x68], 0
je 0x10163b5c
push dword [esp + 0x14]
push ebx
call fcn.1016ec9c
mov esi, eax
pop ecx
pop ecx
test esi, esi
jne 0x10163d00
mov eax, dword [esp + 0x7c]
and eax, 3
mov dword [esp + 0x7c], eax
je 0x10163c29
cmp byte [ebx + 0x31], 0
je 0x10163c1b
push dword [ebx + 8]
call fcn.10153cff
mov edi, dword [esp + 0x14]
pop ecx
cdq
mov ecx, eax
add ecx, edi
mov dword [esp + 0x10], ecx
mov ecx, edx
adc ecx, ebp
sub dword [esp + 0x10], 1
push edx
sbb ecx, 0
push eax
push ecx
push dword [esp + 0x1c]
mov dword [esp + 0x2c], ecx
call fcn.102362e0
mov ecx, dword [esp + 0x10]
sub ecx, eax
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x48], ecx
sbb eax, edx
mov dword [esp + 0x4c], eax
cmp ecx, edi
jne 0x10163bc5
cmp ebp, eax
je 0x10163bd0
and dword [esp + 0x30], 0
cmp ebp, eax
jg 0x10163c10
jl 0x10163bd4
cmp edi, ecx
jae 0x10163c10
push ebp
push edi
push dword [esp + 0x7c]
lea eax, [esp + 0x4c]
push dword [esp + 0x38]
push eax
call fcn.1016f043
mov esi, eax
add esp, 0x14
test esi, esi
jne 0x10163d00
mov eax, dword [esp + 0x38]
cdq
add edi, eax
adc ebp, edx
inc dword [esp + 0x18]
cmp ebp, dword [esp + 0x4c]
jl 0x10163bd4
jg 0x10163c10
cmp edi, dword [esp + 0x48]
jb 0x10163bd4
cmp dword [esp + 0x30], 0
je 0x10163c29
mov eax, dword [esp + 0x7c]
push eax
push dword [esp + 0x48]
call fcn.1014da17
pop ecx
pop ecx
mov esi, eax
cmp byte [ebx + 0x2f], 0
je 0x10163c7a
mov ebp, dword [ebx + 0x14]
mov edi, dword [ebx + 0x10]
test ebp, ebp
jl 0x10163c7a
jg 0x10163c3f
test edi, edi
jb 0x10163c7a
push dword [esp + 0x24]
mov eax, dword [esp + 0x1c]
push dword [esp + 0x2c]
add eax, dword [esp + 0x1c]
push 0
push eax
call fcn.102363a0
add eax, 0x20
adc edx, 0
cmp edx, ebp
jl 0x10163c6b
jg 0x10163c67
cmp eax, edi
jbe 0x10163c6b
mov edi, eax
mov ebp, edx
push ebp
push edi
push ebx
call fcn.1021b520
add esp, 0xc
mov byte [ebx + 0x2f], 0
mov edi, dword [ebx + 0x44]
mov ebp, dword [esp + 0x34]
jmp 0x10163ca0
test esi, esi
jne 0x10163d00
test byte [ebp + 0x1c], 0x40
je 0x10163c9d
push dword [ebp + 0x18]
inc edi
push edi
push ebx
call fcn.1016ddee
add esp, 0xc
mov esi, eax
mov ebp, dword [ebp + 0x10]
test ebp, ebp
jne 0x10163c83
jmp 0x10163cc7
mov eax, dword [esp + 0x18]
test eax, eax
jle 0x10163ccd
inc edi
dec eax
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x2c]
push dword [eax + 0x18]
push edi
push ebx
call fcn.1016ddee
add esp, 0xc
mov esi, eax
test esi, esi
je 0x10163ca6
jmp 0x10163d00
mov ecx, dword [esp + 0x6c]
mov eax, ecx
sar eax, 0x10
and ecx, 0xff00
or eax, ecx
mov dword [ebx + 0x44], edi
cmp dword [esp + 0x78], 0
mov word [ebx + 0x42], ax
je 0x10163d00
mov eax, dword [esp + 0x74]
inc dword [ebx + 0x3c]
push ebx
mov dword [ebx + 0x48], eax
call fcn.1016e6aa
pop ecx
mov dword [ebx + 0xc], edi
mov eax, esi
pop edi
mov ecx, dword [esp + 0x5c]
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.10236000
add esp, 0x54
ret