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

Disassembly:
mov qword [rsp + 0x18], r8
mov byte [rsp + 0x10], dl
mov dword [rsp + 8], ecx
push rbx
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0xf0
mov r13, r8
mov r14d, ecx
xor ebx, ebx
test r8, r8
je 0x140038978
lea esi, [rbx + 1]
cmp ecx, esi
je 0x140037e58
cmp ecx, 4
jne 0x140038978
mov cl, byte [0x1400e7ad0]
mov al, cl
neg al
sbb edi, edi
not edi
and edi, 0x80070032
test cl, cl
jne 0x140037ea8
lea r14, [0x1400df278]
mov rcx, qword [0x1400df278]
cmp rcx, r14
je 0x140037ea1
test byte [rcx + 0x1c], sil
je 0x140037ea1
mov edx, 0x1e
mov r9d, edi
lea r8, [0x1400b98c8]
mov rcx, qword [rcx + 0x10]
call fcn.14000a9b0
mov eax, edi
jmp 0x14003897d
mov r9, r13
mov r8, qword [r8]
lea rdx, [rsp + 0xa8]
mov rcx, r13
call fcn.140037300
mov qword [rsp + 0x78], rbx
lea rax, [rsp + 0x78]
mov qword [rsp + 0xb0], rax
mov qword [rsp + 0xb8], rbx
mov qword [rsp + 0x38], rbx
mov r9d, esi
lea r8, [0x1400b98b8]
lea rdx, [0x1400b98a8]
lea rcx, [rsp + 0x38]
call fcn.1400a8c68
mov r15d, eax
test eax, eax
jns 0x140037f27
lea r14, [0x1400df278]
mov rcx, qword [0x1400df278]
cmp rcx, r14
je 0x140037fb7
test byte [rcx + 0x1c], sil
je 0x140037fb7
mov edx, 0x1f
jmp 0x140037fa3
mov rcx, qword [rsp + 0x38]
mov rax, qword [rcx]
mov edx, r14d
mov rax, qword [rax + 0x38]
call qword [case.0x1400ad4ce.0]
mov r15d, eax
test eax, eax
jns 0x140037f63
lea r14, [0x1400df278]
mov rcx, qword [0x1400df278]
cmp rcx, r14
je 0x140037fb7
test byte [rcx + 0x1c], sil
je 0x140037fb7
mov edx, 0x20
jmp 0x140037fa3
mov dword [rsp + 0x58], ebx
mov rcx, qword [rsp + 0x38]
mov rax, qword [rcx]
lea rdx, [rsp + 0x58]
mov rax, qword [rax + 0x40]
call qword [case.0x1400ad4ce.0]
mov r15d, eax
test eax, eax
jns 0x140037fd7
lea r14, [0x1400df278]
mov rcx, qword [0x1400df278]
cmp rcx, r14
je 0x140037fb7
test byte [rcx + 0x1c], sil
je 0x140037fb7
mov edx, 0x21
mov r9d, eax
lea r8, [0x1400b98c8]
mov rcx, qword [rcx + 0x10]
call fcn.14000a9b0
nop
mov rcx, qword [rsp + 0x38]
test rcx, rcx
je 0x140037fcf
mov rax, qword [rcx]
mov rax, qword [rax + 0x10]
call qword [case.0x1400ad4ce.0]
nop
mov eax, r15d
jmp 0x14003897d
mov eax, ebx
mov dword [rsp + 0x148], ebx
lea r14, [0x1400df278]
or r12d, 0xffffffff
cmp eax, dword [rsp + 0x58]
jge 0x140037fb7
lea rdx, [0x1400e7b80]
mov ecx, 0x50
call fcn.1400ac118
mov rdi, rax
mov qword [rsp + 0x70], rax
test rax, rax
je 0x140038064
xor edx, edx
lea r8d, [rdx + 0x50]
mov rcx, rax
call sub.api_ms_win_crt_string_l1_1_0.dll_memset
mov dword [rdi + 8], ebx
lea rax, vtable.ShieldProvider::CWscProductInfoEntry.0
mov qword [rdi], rax
mov qword [rsp + 0x80], rbx
lea rax, [rsp + 0x80]
mov qword [rsp + 0xc0], rax
mov qword [rdi + 0x20], rbx
mov qword [rsp + 0x88], rbx
lea rax, [rsp + 0x88]
mov qword [rsp + 0xc8], rax
mov qword [rdi + 0x28], rbx
jmp 0x140038067
mov rdi, rbx
test rdi, rdi
je 0x14003807c
mov eax, dword [rdi + 8]
test eax, eax
jne 0x140038078
mov dword [rdi + 8], esi
jmp 0x14003807c
lock add dword [rdi + 8], esi
mov qword [rsp + 0xd0], rdi
mov rax, rdi
neg rax
sbb r15d, r15d
not r15d
and r15d, 0x8007000e
test rdi, rdi
jne 0x140038117
mov rcx, qword [0x1400df278]
cmp rcx, r14
je 0x1400380c5
test byte [rcx + 0x1c], sil
je 0x1400380c5
lea edx, [rdi + 0x22]
mov r9d, r15d
lea r8, [0x1400b98c8]
mov rcx, qword [rcx + 0x10]
call fcn.14000a9b0
nop
test rdi, rdi
je 0x1400380f7
mov eax, dword [rdi + 8]
cmp eax, esi
jne 0x1400380d6
mov dword [rdi + 8], ebx
jmp 0x1400380e5
mov eax, r12d
lock xadd dword [rdi + 8], eax
add eax, r12d
test eax, eax
jg 0x1400380f7
mov rax, qword [rdi]
mov edx, esi
mov rcx, rdi
mov rax, qword [rax]
call qword [case.0x1400ad4ce.0]
nop
mov rcx, qword [rsp + 0x38]
test rcx, rcx
je 0x14003810f
mov rdx, qword [rcx]
mov rax, qword [rdx + 0x10]
call qword [case.0x1400ad4ce.0]
nop
mov eax, r15d
jmp 0x14003897d
mov qword [rsp + 0x30], rbx
mov rcx, qword [rsp + 0x38]
mov rax, qword [rcx]
lea r8, [rsp + 0x30]
mov edx, dword [rsp + 0x148]
mov rax, qword [rax + 0x48]
call qword [case.0x1400ad4ce.0]
mov r15d, eax
test eax, eax
jns 0x1400381da
mov rcx, qword [0x1400df278]
cmp rcx, r14
je 0x140038170
test byte [rcx + 0x1c], sil
je 0x140038170
mov edx, 0x23
mov r9d, eax
lea r8, [0x1400b98c8]
mov rcx, qword [rcx + 0x10]
call fcn.14000a9b0
nop
mov rcx, qword [rsp + 0x30]
test rcx, rcx
je 0x140038188
mov rax, qword [rcx]
mov rax, qword [rax + 0x10]
call qword [case.0x1400ad4ce.0]
nop
test rdi, rdi
je 0x1400381ba
mov eax, dword [rdi + 8]
cmp eax, esi
jne 0x140038199
mov dword [rdi + 8], ebx
jmp 0x1400381a8
mov eax, r12d
lock xadd dword [rdi + 8], eax
add eax, r12d
test eax, eax
jg 0x1400381ba
mov rax, qword [rdi]
mov edx, esi
mov rcx, rdi
mov rax, qword [rax]
call qword [case.0x1400ad4ce.0]
nop
mov rcx, qword [rsp + 0x38]
test rcx, rcx
je 0x1400381d2
mov rdx, qword [rcx]
mov rax, qword [rdx + 0x10]
call qword [case.0x1400ad4ce.0]
nop
mov eax, r15d
jmp 0x14003897d
mov rcx, qword [rsp + 0x30]
mov rax, qword [rcx]
lea rdx, [rsp + 0x5c]
mov rax, qword [rax + 0x40]
call qword [case.0x1400ad4ce.0]
mov r15d, eax
test eax, eax
jns 0x140038291
mov rcx, qword [0x1400df278]
cmp rcx, r14
je 0x140038227
test byte [rcx + 0x1c], sil
je 0x140038227
mov edx, 0x24
mov r9d, eax
lea r8, [0x1400b98c8]
mov rcx, qword [rcx + 0x10]
call fcn.14000a9b0
nop
mov rcx, qword [rsp + 0x30]
test rcx, rcx
je 0x14003823f
mov rax, qword [rcx]
mov rax, qword [rax + 0x10]
call qword [case.0x1400ad4ce.0]
nop
test rdi, rdi
je 0x140038271
mov eax, dword [rdi + 8]
cmp eax, esi
jne 0x140038250
mov dword [rdi + 8], ebx
jmp 0x14003825f
mov eax, r12d
lock xadd dword [rdi + 8], eax
add eax, r12d
test eax, eax
jg 0x140038271
mov rax, qword [rdi]
mov edx, esi
mov rcx, rdi
mov rax, qword [rax]
call qword [case.0x1400ad4ce.0]
nop
mov rcx, qword [rsp + 0x38]
test rcx, rcx
je 0x140038289
mov rax, qword [rcx]
mov rax, qword [rax + 0x10]
call qword [case.0x1400ad4ce.0]
nop
mov eax, r15d
jmp 0x14003897d
mov ecx, dword [rsp + 0x5c]
cmp byte [rsp + 0x138], bl
je 0x1400382f7
lea eax, [rcx - 1]
test eax, 0xfffffffd
jne 0x1400382f7
mov rcx, qword [rsp + 0x30]
test rcx, rcx
je 0x1400382c0
mov rax, qword [rcx]
mov rax, qword [rax + 0x10]
call qword [case.0x1400ad4ce.0]
nop
test rdi, rdi
je 0x1400382f2
mov eax, dword [rdi + 8]
cmp eax, esi
jne 0x1400382d1
mov dword [rdi + 8], ebx
jmp 0x1400382e0
mov eax, r12d
lock xadd dword [rdi + 8], eax
add eax, r12d
test eax, eax
jg 0x1400382f2
mov rax, qword [rdi]
mov edx, esi
mov rcx, rdi
mov rax, qword [rax]
call qword [case.0x1400ad4ce.0]
nop
jmp 0x140038963
mov dword [rdi + 0x14], ecx
mov rcx, qword [rsp + 0x30]
mov rax, qword [rcx]
lea rdx, [rdi + 0x18]
mov rax, qword [rax + 0x48]
call qword [case.0x1400ad4ce.0]
mov r15d, eax
test eax, eax
jns 0x1400383ab
mov rcx, qword [0x1400df278]
cmp rcx, r14
je 0x140038346
test byte [rcx + 0x1c], sil
je 0x140038346
mov edx, 0x25
mov r9d, eax
lea r8, [0x1400b98c8]
mov rcx, qword [rcx + 0x10]
call fcn.14000a9b0
nop
mov rcx, qword [rsp + 0x30]
test rcx, rcx
je 0x14003835e
mov rax, qword [rcx]
mov rax, qword [rax + 0x10]
call qword [case.0x1400ad4ce.0]
nop
mov eax, dword [rdi + 8]
cmp eax, esi
jne 0x14003836a
mov dword [rdi + 8], ebx
jmp 0x140038379
mov eax, r12d
lock xadd dword [rdi + 8], eax
add eax, r12d
test eax, eax
jg 0x14003838b
mov rax, qword [rdi]
mov edx, esi
mov rcx, rdi
mov rax, qword [rax]
call qword [case.0x1400ad4ce.0]
nop
mov rcx, qword [rsp + 0x38]
test rcx, rcx
je 0x1400383a3
mov rdx, qword [rcx]
mov rax, qword [rdx + 0x10]
call qword [case.0x1400ad4ce.0]
nop
mov eax, r15d
jmp 0x14003897d
mov qword [rsp + 0x90], rbx
lea rax, [rsp + 0x90]
mov qword [rsp + 0xd8], rax
mov qword [rsp + 0x48], rbx
mov rcx, qword [rsp + 0x30]
mov rax, qword [rcx]
lea rdx, [rsp + 0x48]
mov rax, qword [rax + 0x38]
call qword [case.0x1400ad4ce.0]
mov r15d, eax
test eax, eax
jns 0x140038491
mov rcx, qword [0x1400df278]
cmp rcx, r14
je 0x140038415
test byte [rcx + 0x1c], sil
je 0x140038415
mov edx, 0x26
mov r9d, eax
lea r8, [0x1400b98c8]
mov rcx, qword [rcx + 0x10]
call fcn.14000a9b0
nop
mov rcx, qword [rsp + 0x48]
test rcx, rcx
je 0x14003842c
call qword [sym.imp.OLEAUT32.dll_SysStringLen]
nop dword [rax + rax]
nop
mov rcx, qword [rsp + 0x30]
test rcx, rcx
je 0x140038444
mov rax, qword [rcx]
mov rax, qword [rax + 0x10]
call qword [case.0x1400ad4ce.0]
nop
mov eax, dword [rdi + 8]
cmp eax, esi
jne 0x140038450
mov dword [rdi + 8], ebx
jmp 0x14003845f
mov eax, r12d
lock xadd dword [rdi + 8], eax
add eax, r12d
test eax, eax
jg 0x140038471
mov rax, qword [rdi]
mov edx, esi
mov rcx, rdi
mov rax, qword [rax]
call qword [case.0x1400ad4ce.0]
nop
mov rcx, qword [rsp + 0x38]
test rcx, rcx
je 0x140038489
mov rdx, qword [rcx]
mov rax, qword [rdx + 0x10]
call qword [case.0x1400ad4ce.0]
nop
mov eax, r15d
jmp 0x14003897d
mov rcx, qword [rdi + 0x20]
test rcx, rcx
je 0x1400384aa
call qword [sym.imp.OLEAUT32.dll_SysStringLen]
nop dword [rax + rax]
mov qword [rdi + 0x20], rbx
mov rax, qword [rsp + 0x48]
mov qword [rsp + 0x48], rbx
mov qword [rdi + 0x20], rax
mov qword [rsp + 0x98], rbx
lea rax, [rsp + 0x98]
mov qword [rsp + 0xe0], rax
mov qword [rsp + 0x50], rbx
mov rcx, qword [rsp + 0x30]
mov rax, qword [rcx]
lea rdx, [rsp + 0x50]
mov rax, qword [rax + 0x50]
call qword [case.0x1400ad4ce.0]
mov r15d, eax
test eax, eax
jns 0x1400385b5
mov rcx, qword [0x1400df278]
cmp rcx, r14
je 0x140038522
test byte [rcx + 0x1c], sil
je 0x140038522
mov edx, 0x27
mov r9d, eax
lea r8, [0x1400b98c8]
mov rcx, qword [rcx + 0x10]
call fcn.14000a9b0
nop
mov rcx, qword [rsp + 0x50]
test rcx, rcx
je 0x140038539
call qword [sym.imp.OLEAUT32.dll_SysStringLen]
nop dword [rax + rax]
nop
mov rcx, qword [rsp + 0x48]
test rcx, rcx
je 0x140038550
call qword [sym.imp.OLEAUT32.dll_SysStringLen]
nop dword [rax + rax]
nop
mov rcx, qword [rsp + 0x30]
test rcx, rcx
je 0x140038568
mov rax, qword [rcx]
mov rax, qword [rax + 0x10]
call qword [case.0x1400ad4ce.0]
nop
mov eax, dword [rdi + 8]
cmp eax, esi
jne 0x140038574
mov dword [rdi + 8], ebx
jmp 0x140038583
mov eax, r12d
lock xadd dword [rdi + 8], eax
add eax, r12d
test eax, eax
jg 0x140038595
mov rax, qword [rdi]
mov edx, esi
mov rcx, rdi
mov rax, qword [rax]
call qword [case.0x1400ad4ce.0]
nop
mov rcx, qword [rsp + 0x38]
test rcx, rcx
je 0x1400385ad
mov rdx, qword [rcx]
mov rax, qword [rdx + 0x10]
call qword [case.0x1400ad4ce.0]
nop
mov eax, r15d
jmp 0x14003897d
mov rcx, qword [rdi + 0x28]
test rcx, rcx
je 0x1400385ce
call qword [sym.imp.OLEAUT32.dll_SysStringLen]
nop dword [rax + rax]
mov qword [rdi + 0x28], rbx
mov rax, qword [rsp + 0x50]
mov qword [rsp + 0x50], rbx
mov qword [rdi + 0x28], rax
xor ecx, ecx
mov qword [rdi + 0x34], rcx
mov dword [rdi + 0x3c], ecx
xor eax, eax
mov qword [rdi + 0x40], rax
mov dword [rdi + 0x48], eax
mov qword [rsp + 0x40], rbx
mov rcx, qword [rsp + 0x30]
mov rax, qword [rcx]
lea r8, [rsp + 0x40]
lea rdx, [0x1400b9898]
mov rax, qword [rax]
call qword [case.0x1400ad4ce.0]
mov r15d, eax
test eax, eax
js 0x140038849
mov dword [rdi + 0x10], ebx
mov eax, dword [rsp + 0x130]
cmp eax, 4
jne 0x1400387f4
mov dword [rdi + 0x30], ebx
mov rcx, qword [rsp + 0x40]
mov rax, qword [rcx]
lea rdx, [rdi + 0x34]
mov rax, qword [rax + 0x70]
call qword [case.0x1400ad4ce.0]
mov rcx, qword [rsp + 0x40]
mov rax, qword [rcx]
lea rdx, [rdi + 0x38]
mov rax, qword [rax + 0x78]
call qword [case.0x1400ad4ce.0]
mov rcx, qword [rsp + 0x40]
mov rax, qword [rcx]
lea rdx, [rdi + 0x3c]
mov rax, qword [rax + 0x80]
call qword [case.0x1400ad4ce.0]
mov r15d, ebx
mov qword [rsp + 0x68], rbx
mov rcx, qword [rsp + 0x30]
mov rax, qword [rcx]
lea r8, [rsp + 0x68]
lea rdx, str._eSU
mov rax, qword [rax]
call qword [case.0x1400ad4ce.0]
test eax, eax
js 0x1400387b0
mov rcx, qword [rsp + 0x68]
mov rax, qword [rcx]
lea rdx, [rsp + 0x60]
mov rax, qword [rax + 0xa0]
call qword [case.0x1400ad4ce.0]
test eax, eax
js 0x140038797
cmp dword [rsp + 0x60], ebx
jne 0x14003878b
mov dword [rdi + 0x14], 3
cmp byte [rsp + 0x138], bl
je 0x1400387db
mov rcx, qword [rsp + 0x68]
test rcx, rcx
je 0x1400386fb
mov rax, qword [rcx]
mov rax, qword [rax + 0x10]
call qword [case.0x1400ad4ce.0]
nop
mov rcx, qword [rsp + 0x40]
test rcx, rcx
je 0x140038713
mov rax, qword [rcx]
mov rax, qword [rax + 0x10]
call qword [case.0x1400ad4ce.0]
nop
mov rcx, qword [rsp + 0x50]
test rcx, rcx
je 0x14003872a
call qword [sym.imp.OLEAUT32.dll_SysStringLen]
nop dword [rax + rax]
nop
mov rcx, qword [rsp + 0x48]
test rcx, rcx
je 0x140038741
call qword [sym.imp.OLEAUT32.dll_SysStringLen]
nop dword [rax + rax]
nop
mov rcx, qword [rsp + 0x30]
test rcx, rcx
je 0x140038759
mov rax, qword [rcx]
mov rax, qword [rax + 0x10]
call qword [case.0x1400ad4ce.0]
nop
mov eax, dword [rdi + 8]
cmp eax, esi
jne 0x140038765
mov dword [rdi + 8], ebx
jmp 0x140038774
mov eax, r12d
lock xadd dword [rdi + 8], eax
add eax, r12d
test eax, eax
jg 0x140038786
mov rax, qword [rdi]
mov edx, esi
mov rcx, rdi
mov rax, qword [rax]
call qword [case.0x1400ad4ce.0]
nop
jmp 0x140038963
cmp dword [rsp + 0x60], 5
ja 0x1400387db
mov dword [rdi + 0x10], esi
jmp 0x1400387db
mov rcx, qword [0x1400df278]
cmp rcx, r14
je 0x1400387db
test byte [rcx + 0x1c], sil
je 0x1400387db
mov edx, 0x28
jmp 0x1400387c7
mov rcx, qword [0x1400df278]
cmp rcx, r14
je 0x1400387db
test byte [rcx + 0x1c], sil
je 0x1400387db
mov edx, 0x29
mov r9d, eax
lea r8, [0x1400b98c8]
mov rcx, qword [rcx + 0x10]
call fcn.14000a9b0
nop
mov rcx, qword [rsp + 0x68]
test rcx, rcx
je 0x140038849
mov rax, qword [rcx]
mov rax, qword [rax + 0x10]
call qword [case.0x1400ad4ce.0]
jmp 0x140038849
cmp eax, esi
jne 0x140038849
mov dword [rdi + 0x30], esi
mov rcx, qword [rsp + 0x40]
mov rax, qword [rcx]
lea rdx, [rdi + 0x40]
mov rax, qword [rax + 0x88]
call qword [case.0x1400ad4ce.0]
mov rcx, qword [rsp + 0x40]
mov rax, qword [rcx]
lea rdx, [rdi + 0x44]
mov rax, qword [rax + 0x90]
call qword [case.0x1400ad4ce.0]
mov rcx, qword [rsp + 0x40]
mov rax, qword [rcx]
lea rdx, [rdi + 0x48]
mov rax, qword [rax + 0x98]
call qword [case.0x1400ad4ce.0]
mov r15d, ebx
mov eax, dword [rdi + 8]
test eax, eax
jne 0x140038855
mov dword [rdi + 8], esi
jmp 0x140038859
lock add dword [rdi + 8], esi
mov qword [rsp + 0xa0], rdi
mov ecx, SafeArrayPutElement
call fcn.1400ac13c
mov qword [rsp + 0xa0], rbx
mov qword [rax + 0x10], rdi
mov r13, qword [rsp + 0x140]
mov rcx, qword [r13 + 8]
mov qword [rax], r13
mov qword [rax + 8], rcx
mov qword [rcx], rax
mov qword [r13 + 8], rax
add qword [r13 + 0x10], rsi
mov rcx, qword [rsp + 0x40]
test rcx, rcx
je 0x1400388ad
mov rax, qword [rcx]
mov rax, qword [rax + 0x10]
call qword [case.0x1400ad4ce.0]
nop
mov rcx, qword [rsp + 0x50]
test rcx, rcx
je 0x1400388c4
call qword [sym.imp.OLEAUT32.dll_SysStringLen]
nop dword [rax + rax]
nop
mov rcx, qword [rsp + 0x48]
test rcx, rcx
je 0x1400388db
call qword [sym.imp.OLEAUT32.dll_SysStringLen]
nop dword [rax + rax]
nop
mov rcx, qword [rsp + 0x30]
test rcx, rcx
je 0x1400388f3
mov rax, qword [rcx]
mov rax, qword [rax + 0x10]
call qword [case.0x1400ad4ce.0]
nop
mov eax, dword [rdi + 8]
cmp eax, esi
jne 0x1400388ff
mov dword [rdi + 8], ebx
jmp 0x14003890e
mov eax, r12d
lock xadd dword [rdi + 8], eax
add eax, r12d
test eax, eax
jg 0x140038920
mov rax, qword [rdi]
mov edx, esi
mov rcx, rdi
mov rax, qword [rax]
call qword [case.0x1400ad4ce.0]
nop
jmp 0x140038937
test r15d, r15d
jns 0x140038963
mov rcx, qword [0x1400df278]
cmp rcx, r14
je 0x140037fb7
test byte [rcx + 0x1c], sil
je 0x140037fb7
mov edx, 0x2a
mov r9d, r15d
jmp 0x140037fa6
mov eax, dword [rsp + 0x148]
add eax, esi
mov dword [rsp + 0x148], eax
jmp 0x140037feb
mov eax, 0x80070057
add rsp, 0xf0
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
ret