Function at 0x1400226c0
Capabilities:
Query environment variable

Disassembly:
push rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
sub rsp, 0xd50
mov qword [rsp + 0xa8], 0xfffffffffffffffe
mov rax, qword [0x14008b5a0]
xor rax, rsp
mov qword [rsp + 0xd40], rax
mov esi, r8d
mov r14, rdx
mov r12, rcx
mov bpl, 1
xor r13b, r13b
lea rcx, str.parseGeneral:_n
call fcn.1400154e0
mov ecx, esi
call fcn.140015680
cmp esi, 4
jne 0x14002271f
mov al, bpl
jmp 0x1400233b2
cmp esi, 0x80
jne 0x14002272e
mov al, 1
jmp 0x1400233b2
cmp esi, 0x2000
je 0x140022ec4
mov rax, qword [r12]
lea rdx, [rsp + 0x20]
mov rcx, r12
call qword [rax + 0xb0]
test eax, eax
js 0x140022ec4
cmp word [rsp + 0x20], 0xffff
jne 0x140022ec4
mov rax, qword [r12]
lea rdx, [rsp + 0x28]
mov rcx, r12
call qword [rax + 0x60]
test eax, eax
js 0x140022eb3
mov rcx, qword [rsp + 0x28]
test rcx, rcx
je 0x140022eb3
mov rax, qword [rcx]
lea rdx, [rsp + 0x38]
call qword [rax + 0x48]
test eax, eax
js 0x140022e9d
mov rcx, qword [rsp + 0x38]
test rcx, rcx
je 0x140022e9d
mov rax, qword [rcx]
lea rdx, [rsp + 0x70]
call qword [rax + 0x50]
test eax, eax
js 0x140022e9d
cmp dword [rsp + 0x70], 1
je 0x1400227c7
mov rcx, qword [rsp + 0x28]
jmp 0x140022785
mov rcx, qword [rsp + 0x38]
mov rax, qword [rcx]
lea rdx, [rsp + 0x40]
call qword [rax + 0x38]
test eax, eax
js 0x140022e8c
lea rdx, str.Version
mov rcx, qword [rsp + 0x40]
call fcn.14004d5a4
test eax, eax
jne 0x14002290d
cmp esi, 8
jne 0x14002290d
mov word [rsp + 0xb8], ax
mov word [rsp + 0x128], ax
mov word [rsp + 0xf0], ax
lea r8d, [rax + 0x19]
lea rdx, [rsp + 0xb8]
lea rcx, str._PACKAGENUMBER_
call qword [sym.imp.KERNEL32.dll_GetEnvironmentVariableW]
lea r8d, [rsi + 0x11]
lea rdx, [rsp + 0x128]
lea rcx, str._BUILDNUMBER_
call qword [sym.imp.KERNEL32.dll_GetEnvironmentVariableW]
lea r8d, [rsi + 0x11]
lea rdx, [rsp + 0xf0]
lea rcx, str._VERSION_
call qword [sym.imp.KERNEL32.dll_GetEnvironmentVariableW]
lea rcx, [rsp + 0xf0]
call fcn.140036f80
test rax, rax
je 0x14002290d
lea rcx, [rsp + 0x128]
call fcn.140036f80
test rax, rax
je 0x14002290d
lea rcx, [rsp + 0xb8]
call fcn.140036f80
test rax, rax
je 0x14002290d
lea r9, [rsp + 0xb8]
lea r8, [rsp + 0x128]
lea rdx, [rsp + 0xf0]
lea rcx, str._s._s._s
call fcn.140039300
mov rdi, rax
mov rdx, rax
lea rcx, str.package_version_is__S_n
call fcn.1400154e0
mov rcx, rdi
call qword [sym.imp.OLEAUT32.dll_SysReAllocString]
mov rbx, rax
mov qword [rsp + 0x30], rax
mov rcx, qword [rsp + 0x38]
mov r8, qword [rcx]
mov rdx, rdi
call qword [r8 + 0xd8]
mov rcx, rdi
call fcn.140038240
nop
mov rcx, rbx
call qword [sym.imp.OLEAUT32.dll_SysStringLen]
lea rdx, str.ProductId
mov rcx, qword [rsp + 0x40]
call fcn.14004d5a4
test eax, eax
jne 0x1400229b9
mov rcx, qword [rsp + 0x38]
mov rax, qword [rcx]
lea rdx, [rsp + 0x68]
call qword [rax + 0xd0]
mov rcx, qword [rsp + 0x68]
call qword [sym.imp.OLEAUT32.dll_SysAllocStringByteLen]
mov edx, eax
mov rcx, qword [rsp + 0x68]
call qword [sym.imp.OLEAUT32.dll_DllRegisterServer]
mov rbx, rax
mov qword [rsp + 0x30], rax
mov rcx, qword [rsp + 0x68]
call qword [sym.imp.OLEAUT32.dll_SysStringLen]
cmp qword [0x14008cd00], 0
jne 0x14002297d
mov rcx, rbx
call fcn.140036f70
mov qword [0x14008cd00], rax
cmp esi, 2
jne 0x1400229a7
xor r8d, r8d
mov rdx, rbx
mov rcx, qword [0x14008cd30]
call fcn.14000c260
movzx ebp, al
mov edx, ebp
lea rcx, str.parseGeneral:_ProductId_retval__u_n
call fcn.1400154e0
jmp 0x1400229b0
cmp esi, 0x20
je 0x140022e72
mov rcx, rbx
call qword [sym.imp.OLEAUT32.dll_SysStringLen]
lea rdx, str.CorePath
mov rcx, qword [rsp + 0x40]
call fcn.14004d5a4
test eax, eax
jne 0x140022abe
mov rcx, qword [rsp + 0x38]
mov rax, qword [rcx]
lea rdx, [rsp + 0xa0]
call qword [rax + 0xd0]
mov rcx, qword [rsp + 0xa0]
call qword [sym.imp.OLEAUT32.dll_SysReAllocString]
mov rbx, rax
mov qword [rsp + 0x30], rax
mov rcx, qword [rsp + 0xa0]
call qword [sym.imp.OLEAUT32.dll_SysStringLen]
cmp esi, 8
je 0x140022a3a
cmp esi, 0x100
je 0x140022a23
mov rdx, rbx
xor ecx, ecx
call fcn.14000e210
mov r9d, 0x12c
lea r8, [rsp + 0x3c0]
xor edx, edx
xor ecx, ecx
call fcn.14003d050
test sil, 1
je 0x140022a64
mov rdx, qword [0x14008cd30]
lea rcx, [rsp + 0x3c0]
call fcn.140012320
movzx ebp, al
lea rcx, [rsp + 0x3c0]
call fcn.14003f3d0
cmp esi, 2
jne 0x140022aa4
mov rdx, qword [0x14008cd30]
lea rcx, [rsp + 0x3c0]
call fcn.140012360
mov dl, 1
lea rcx, [rsp + 0x3c0]
call fcn.14000e600
test eax, eax
jne 0x140022aa4
lea rdx, [0x14008cd28]
lea rcx, [rsp + 0x3c0]
call fcn.14000f9d0
movzx edx, bpl
lea rcx, str.parseGeneral:_CorePath_retval__u_n
call fcn.1400154e0
nop
mov rcx, rbx
call qword [sym.imp.OLEAUT32.dll_SysStringLen]
lea rdx, str.CorePath_x86
mov rcx, qword [rsp + 0x40]
call fcn.14004d5a4
test eax, eax
jne 0x140022bc8
mov rcx, qword [rsp + 0x38]
mov rax, qword [rcx]
lea rdx, [rsp + 0x90]
call qword [rax + 0xd0]
mov rcx, qword [rsp + 0x90]
call qword [sym.imp.OLEAUT32.dll_SysReAllocString]
mov rbx, rax
mov qword [rsp + 0x30], rax
mov rcx, qword [rsp + 0x90]
call qword [sym.imp.OLEAUT32.dll_SysStringLen]
cmp esi, 8
je 0x140022b44
cmp esi, 0x100
je 0x140022b28
mov rdx, rbx
mov cl, 1
call fcn.14000e210
mov r9d, 0x12c
lea r8, [rsp + 0x880]
mov rdx, qword [0x14008cd20]
xor ecx, ecx
call fcn.14003d050
test sil, 1
je 0x140022b6e
mov rdx, qword [0x14008cd30]
lea rcx, [rsp + 0x880]
call fcn.140012320
mov bpl, al
lea rcx, [rsp + 0x880]
call fcn.14003f3d0
cmp esi, 2
jne 0x140022bae
mov rdx, qword [0x14008cd30]
lea rcx, [rsp + 0x880]
call fcn.140012360
mov dl, 1
lea rcx, [rsp + 0x880]
call fcn.14000e600
test eax, eax
jne 0x140022bae
lea rdx, [0x14008cd28]
lea rcx, [rsp + 0x880]
call fcn.14000f9d0
movzx edx, bpl
lea rcx, str.parseGeneral:_CorePath_X86_retval__u_n
call fcn.1400154e0
nop
mov rcx, rbx
call qword [sym.imp.OLEAUT32.dll_SysStringLen]
lea rdx, str.ProductPath
mov rcx, qword [rsp + 0x40]
call fcn.14004d5a4
test eax, eax
jne 0x140022cd7
mov rcx, qword [rsp + 0x38]
mov rax, qword [rcx]
lea rdx, [rsp + 0x88]
call qword [rax + 0xd0]
mov rcx, qword [rsp + 0x88]
call qword [sym.imp.OLEAUT32.dll_SysReAllocString]
mov rbx, rax
mov qword [rsp + 0x30], rax
mov rcx, qword [rsp + 0x88]
call qword [sym.imp.OLEAUT32.dll_SysStringLen]
mov rax, qword [0x14008cd18]
test rax, rax
jne 0x140022c36
mov rcx, rbx
call fcn.140036f70
mov qword [0x14008cd18], rax
cmp esi, 8
je 0x140022c53
mov r9d, 0x12c
lea r8, [rsp + 0x620]
mov rdx, rax
xor ecx, ecx
call fcn.14003d050
test sil, 1
je 0x140022c7d
mov rdx, qword [0x14008cd30]
lea rcx, [rsp + 0x620]
call fcn.140012320
mov bpl, al
lea rcx, [rsp + 0x620]
call fcn.14003f3d0
cmp esi, 2
jne 0x140022cbd
mov rdx, qword [0x14008cd30]
lea rcx, [rsp + 0x620]
call fcn.140012360
mov dl, 1
lea rcx, [rsp + 0x620]
call fcn.14000e600
test eax, eax
jne 0x140022cbd
lea rdx, [0x14008cd28]
lea rcx, [rsp + 0x620]
call fcn.14000f9d0
movzx edx, bpl
lea rcx, str.parseGeneral:_ProductPath_retval__u_n
call fcn.1400154e0
nop
mov rcx, rbx
call qword [sym.imp.OLEAUT32.dll_SysStringLen]
lea rdx, str.ProductPath_x86
mov rcx, qword [rsp + 0x40]
call fcn.14004d5a4
test eax, eax
jne 0x140022df5
mov rcx, qword [rsp + 0x38]
mov rax, qword [rcx]
lea rdx, [rsp + 0x78]
call qword [rax + 0xd0]
mov rcx, qword [rsp + 0x78]
call qword [sym.imp.OLEAUT32.dll_SysReAllocString]
mov rbx, rax
mov qword [rsp + 0x30], rax
mov rcx, qword [rsp + 0x78]
call qword [sym.imp.OLEAUT32.dll_SysStringLen]
mov rax, qword [0x14008cd20]
test rax, rax
jne 0x140022d3c
mov rcx, rbx
call fcn.140036f70
mov qword [0x14008cd20], rax
cmp esi, 8
je 0x140022d59
mov r9d, 0x12c
lea r8, [rsp + 0x160]
mov rdx, rax
mov cl, 1
call fcn.14003d050
test sil, 1
je 0x140022d9b
mov rdx, qword [0x14008cd30]
lea rcx, [rsp + 0x160]
call fcn.140012320
mov bpl, al
test al, al
jne 0x140022d8e
lea rdx, [rsp + 0x160]
lea rcx, str.ERROR:_parseGeneral:_Failed_to_add_reference_on__S_n
call fcn.1400154e0
lea rcx, [rsp + 0x160]
call fcn.14003f3d0
cmp esi, 2
jne 0x140022ddb
mov rdx, qword [0x14008cd30]
lea rcx, [rsp + 0x160]
call fcn.140012360
mov dl, 1
lea rcx, [rsp + 0x160]
call fcn.14000e600
test eax, eax
jne 0x140022ddb
lea rdx, [0x14008cd28]
lea rcx, [rsp + 0x160]
call fcn.14000f9d0
movzx edx, bpl
lea rcx, str.parseGeneral:_ProductPath_X86_retval__u_n
call fcn.1400154e0
nop
mov rcx, rbx
call qword [sym.imp.OLEAUT32.dll_SysStringLen]
lea rdx, str.SourcePath_x86
mov rcx, qword [rsp + 0x40]
call fcn.14004d5a4
test eax, eax
jne 0x140022e5d
mov rcx, qword [rsp + 0x38]
mov rax, qword [rcx]
lea rdx, [rsp + 0x48]
call qword [rax + 0xd0]
mov rcx, qword [rsp + 0x48]
call qword [sym.imp.OLEAUT32.dll_SysReAllocString]
mov rbx, rax
mov qword [rsp + 0x30], rax
mov rcx, qword [rsp + 0x48]
call qword [sym.imp.OLEAUT32.dll_SysStringLen]
cmp qword [0x14008cd38], 0
jne 0x140022e54
mov rcx, rbx
call fcn.140036f70
mov qword [0x14008cd38], rax
mov rcx, rbx
call qword [sym.imp.OLEAUT32.dll_SysStringLen]
mov rcx, qword [rsp + 0x40]
call qword [sym.imp.OLEAUT32.dll_SysStringLen]
mov rcx, qword [rsp + 0x28]
jmp 0x140022785
mov rcx, qword [rsp + 0x40]
call qword [sym.imp.OLEAUT32.dll_SysStringLen]
nop
mov rcx, rbx
call qword [sym.imp.OLEAUT32.dll_SysStringLen]
jmp 0x14002339f
lea rcx, str.ERROR:_parseGeneral:_Failed_to_get_child_elements_name__n
call fcn.1400154e0
jmp 0x14002339f
test bpl, bpl
jne 0x140022ec4
lea rcx, str.ERROR:_parseGeneral:_General_pre_core_actions_failed_n
call fcn.1400154e0
jmp 0x14002339f
lea rcx, str.ERROR:_parseGeneral:_Failed_to_get_child_element_n
call fcn.1400154e0
jmp 0x14002339f
cmp esi, 0x100
je 0x140022edb
test sil, 1
jne 0x140022edb
cmp esi, 2
jne 0x140023056
mov rax, qword [r12]
lea rdx, [rsp + 0x20]
mov rcx, r12
call qword [rax + 0xb0]
test eax, eax
js 0x140023040
cmp word [rsp + 0x20], 0xffff
jne 0x140023040
mov rax, qword [r12]
lea rdx, [rsp + 0x28]
mov rcx, r12
call qword [rax + 0x60]
test eax, eax
js 0x14002302f
mov rcx, qword [rsp + 0x28]
test rcx, rcx
je 0x14002302f
nop
nop
nop
mov rax, qword [rcx]
lea rdx, [rsp + 0x60]
call qword [rax + 0x48]
test eax, eax
js 0x140023040
mov rcx, qword [rsp + 0x60]
test rcx, rcx
je 0x140023040
mov rax, qword [rcx]
lea rdx, [rsp + 0x50]
call qword [rax + 0x50]
test eax, eax
js 0x140023040
cmp dword [rsp + 0x50], 1
je 0x140022f72
mov rcx, qword [rsp + 0x28]
jmp 0x140022f30
mov rcx, qword [rsp + 0x60]
mov rax, qword [rcx]
lea rdx, [rsp + 0x48]
call qword [rax + 0x38]
test eax, eax
js 0x14002301e
lea rdx, str.Version
mov rcx, qword [rsp + 0x48]
call fcn.14004d5a4
test eax, eax
jne 0x140023009
cmp esi, 2
jne 0x140022fb2
mov rcx, qword [0x14008cd30]
call fcn.1400125e0
jmp 0x140023009
mov rcx, qword [rsp + 0x60]
mov rax, qword [rcx]
lea rdx, [rsp + 0x58]
call qword [rax + 0xd0]
mov rcx, qword [rsp + 0x58]
call qword [sym.imp.OLEAUT32.dll_SysAllocStringByteLen]
mov edx, eax
mov rcx, qword [rsp + 0x58]
call qword [sym.imp.OLEAUT32.dll_DllRegisterServer]
mov rbx, rax
mov qword [rsp + 0x30], rax
mov rcx, qword [rsp + 0x58]
call qword [sym.imp.OLEAUT32.dll_SysStringLen]
mov rdx, rbx
mov rcx, qword [0x14008cd30]
call fcn.1400123a0
nop
mov rcx, rbx
call qword [sym.imp.OLEAUT32.dll_SysStringLen]
mov rcx, qword [rsp + 0x48]
call qword [sym.imp.OLEAUT32.dll_SysStringLen]
mov rcx, qword [rsp + 0x28]
jmp 0x140022f30
lea rcx, str.ERROR:_parseGeneral:_Failed_to_get_child_elements_name__n
call fcn.1400154e0
jmp 0x14002339f
lea rcx, str.ERROR:_parseGeneral:_Failed_to_get_child_element_n
call fcn.1400154e0
jmp 0x14002339f
test bpl, bpl
jne 0x140023056
lea rcx, str.ERROR:_parseGeneral:_General_version_actions_failed_n
call fcn.1400154e0
jmp 0x14002339f
cmp esi, 0x100
je 0x14002339f
mov edi, esi
and edi, 1
jne 0x14002308c
cmp esi, 8
je 0x14002308c
cmp esi, 0x2000
je 0x14002308c
cmp esi, 0x10
je 0x14002308c
cmp esi, 0x800
je 0x14002308c
cmp esi, 0x40
jne 0x1400231c2
mov rax, qword [r12]
lea rdx, [rsp + 0x20]
mov rcx, r12
call qword [rax + 0xb0]
test eax, eax
js 0x1400231c2
cmp word [rsp + 0x20], 0xffff
jne 0x1400231c2
mov rax, qword [r12]
lea rdx, [rsp + 0x28]
mov rcx, r12
call qword [rax + 0x60]
test eax, eax
js 0x1400231b1
mov rcx, qword [rsp + 0x28]
test rcx, rcx
je 0x1400231b1
nop
nop
nop
mov rax, qword [rcx]
lea rdx, [rsp + 0x98]
call qword [rax + 0x48]
test eax, eax
js 0x1400231c2
mov rcx, qword [rsp + 0x98]
test rcx, rcx
je 0x1400231c2
mov rax, qword [rcx]
lea rdx, [rsp + 0x50]
call qword [rax + 0x50]
test eax, eax
js 0x1400231c2
cmp dword [rsp + 0x50], 1
je 0x140023128
mov rcx, qword [rsp + 0x28]
jmp 0x1400230e0
mov rbx, qword [rsp + 0x98]
mov rax, qword [rbx]
lea rdx, [rsp + 0x58]
mov rcx, rbx
call qword [rax + 0x38]
test eax, eax
js 0x1400231a0
lea rdx, str.Base
mov rcx, qword [rsp + 0x58]
call fcn.14004d5a4
test eax, eax
jne 0x14002316f
mov r8d, esi
mov rdx, r14
mov rcx, rbx
call fcn.1400223e0
mov bpl, al
test al, al
je 0x140023184
mov r13b, 1
mov rcx, qword [rsp + 0x58]
call qword [sym.imp.OLEAUT32.dll_SysStringLen]
mov rcx, qword [rsp + 0x28]
jmp 0x1400230e0
lea rcx, str.ERROR:_parseGeneral:_Install_failed_n
call fcn.1400154e0
mov rcx, qword [rsp + 0x58]
call qword [sym.imp.OLEAUT32.dll_SysStringLen]
jmp 0x14002339f
lea rcx, str.ERROR:_parseGeneral:_Failed_to_get_child_elements_name__n
call fcn.1400154e0
jmp 0x14002339f
lea rcx, str.ERROR:_parseGeneral:_Failed_to_get_child_element_n
call fcn.1400154e0
jmp 0x14002339f
cmp esi, 8
jne 0x1400231cf
mov al, bpl
jmp 0x1400233b2
cmp esi, 0x2000
jne 0x1400231df
mov al, bpl
jmp 0x1400233b2
cmp esi, 0x10
jne 0x1400231ec
mov al, bpl
jmp 0x1400233b2
cmp esi, 0x800
jne 0x1400231fc
mov al, bpl
jmp 0x1400233b2
test edi, edi
je 0x140023341
mov rax, qword [r12]
lea rdx, [rsp + 0x28]
mov rcx, r12
call qword [rax + 0x60]
test eax, eax
js 0x140023333
mov rcx, qword [rsp + 0x28]
test rcx, rcx
je 0x140023333
nop
nop
mov rax, qword [rcx]
lea rdx, [rsp + 0x48]
call qword [rax + 0x48]
test eax, eax
js 0x140023341
mov rcx, qword [rsp + 0x48]
test rcx, rcx
je 0x140023341
mov rax, qword [rcx]
lea rdx, [rsp + 0x60]
call qword [rax + 0x50]
test eax, eax
js 0x140023341
cmp dword [rsp + 0x60], 1
je 0x140023272
mov rcx, qword [rsp + 0x28]
jmp 0x140023230
mov rcx, qword [rsp + 0x48]
mov rax, qword [rcx]
lea rdx, [rsp + 0x30]
call qword [rax + 0x38]
test eax, eax
js 0x140023325
lea rdx, str.ProductId
mov rcx, qword [rsp + 0x30]
call fcn.14004d5a4
test eax, eax
jne 0x140023310
test r13b, r13b
je 0x140023310
mov rcx, qword [rsp + 0x48]
mov rax, qword [rcx]
lea rdx, [rsp + 0x80]
call qword [rax + 0xd0]
mov rcx, qword [rsp + 0x80]
call qword [sym.imp.OLEAUT32.dll_SysAllocStringByteLen]
mov edx, eax
mov rcx, qword [rsp + 0x80]
call qword [sym.imp.OLEAUT32.dll_DllRegisterServer]
mov rbx, rax
mov qword [rsp + 0xb0], rax
mov r8b, 1
mov rdx, rax
mov rcx, qword [0x14008cd30]
call fcn.14000c260
movzx ebp, al
mov edx, ebp
lea rcx, str.parseGeneral:_ProductId_retval__u_n
call fcn.1400154e0
nop
mov rcx, rbx
call qword [sym.imp.OLEAUT32.dll_SysStringLen]
mov rcx, qword [rsp + 0x30]
call qword [sym.imp.OLEAUT32.dll_SysStringLen]
mov rcx, qword [rsp + 0x28]
jmp 0x140023230
lea rcx, str.ERROR:_parseGeneral:_Failed_to_get_child_elements_name_n
call fcn.1400154e0
jmp 0x14002339f
lea rcx, str.ERROR:_parseGeneral:_Failed_to_get_child_nodes_n
call fcn.1400154e0
jmp 0x14002339f
cmp esi, 2
jne 0x14002339f
mov r9d, 0x12c
lea r8, [rsp + 0xae0]
xor edx, edx
xor ecx, ecx
call fcn.14003d050
mov dl, 1
lea rcx, [rsp + 0xae0]
call fcn.14000e600
test eax, eax
jne 0x14002339f
mov r9d, 0x12c
lea r8, [rsp + 0xae0]
xor edx, edx
mov cl, 1
call fcn.14003d050
mov dl, 1
lea rcx, [rsp + 0xae0]
call fcn.14000e600
test eax, eax
jne 0x14002339f
call fcn.14000e4d0
movzx edx, bpl
lea rcx, str.parseGeneral:_exit_u_n
call fcn.1400154e0
mov al, bpl
mov rcx, qword [rsp + 0xd40]
xor rcx, rsp
call fcn.14004c890
add rsp, 0xd50
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret