Function at 0x4283b0
Capabilities:
Accept command line arguments
Get disk information
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x54cf0d
mov eax, dword fs:[0]
push eax
sub esp, 0x280
mov eax, dword [0x60c9c8]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov esi, dword [ebp + 8]
mov edi, dword [ebp + 0xc]
xor ebx, ebx
mov dword [ebp - 0x270], ecx
mov dword [ebp - 0x274], edi
cmp word [esi], bx
je 0x428590
cmp edi, ebx
je 0x428590
call fcn.0043e2f8
xor ecx, ecx
cmp eax, ebx
setne cl
cmp ecx, ebx
jne 0x42841d
push 0x80004005
call fcn.00402a80
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x22c], eax
mov dword [ebp - 4], ebx
call fcn.0043e2f8
xor ecx, ecx
cmp eax, ebx
setne cl
cmp ecx, ebx
jne 0x42844c
push 0x80004005
call fcn.00402a80
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x238], eax
push 0x81c
push ebx
push edi
mov byte [ebp - 4], 1
call fcn.00531fb0
add esp, 0xc
lea ecx, [ebp - 0x268]
call fcn.0044086c
lea ecx, [ebp - 0x23c]
push ecx
push esi
mov byte [ebp - 4], 2
mov dword [ebp - 0x23c], ebx
call dword [sym.imp.SHELL32.dll_CommandLineToArgvW]
xor esi, esi
mov edi, eax
cmp dword [ebp - 0x23c], ebx
jle 0x4284e0
mov eax, dword [edi + esi*4]
mov edx, dword [ebp - 0x260]
push eax
push edx
lea ecx, [ebp - 0x268]
call fcn.00440d3c
cmp esi, ebx
jl 0x42852d
cmp esi, dword [ebp - 0x260]
jge 0x42852d
mov eax, dword [ebp - 0x264]
lea ecx, [eax + esi*4]
call fcn.00417160
mov ecx, eax
call fcn.00416dc0
inc esi
cmp esi, dword [ebp - 0x23c]
jl 0x4284a0
push edi
call dword [sym.imp.KERNEL32.dll_LocalFree]
xor esi, esi
cmp dword [ebp - 0x23c], ebx
jle 0x428521
cmp esi, ebx
jl 0x42852d
cmp esi, dword [ebp - 0x260]
jge 0x42852d
mov ecx, dword [ebp - 0x264]
mov eax, dword [ecx + esi*4]
push str._SUBINSTALL
push eax
call fcn.005321b4
add esp, 8
cmp eax, ebx
je 0x428532
inc esi
cmp esi, dword [ebp - 0x23c]
jl 0x4284f1
cmp dword [ebp - 0x260], ebx
jg 0x4285b0
call fcn.00432b6c
lea ecx, [ebp - 0x268]
mov byte [ebp - 4], 1
call fcn.00440b59
mov eax, dword [ebp - 0x238]
add eax, 0xfffffff0
mov byte [ebp - 4], 0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x428567
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x22c]
add eax, 0xfffffff0
mov dword [ebp - 4], 0xffffffff
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x428590
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
xor eax, eax
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.00531f97
mov esp, ebp
pop ebp
ret 8
mov ecx, dword [ebp - 0x264]
mov esi, dword [ecx]
mov ecx, dword [esi - 0x10]
mov edx, dword [ecx]
mov eax, dword [edx + 0x10]
call eax
cmp dword [esi - 4], ebx
lea ecx, [esi - 4]
jl 0x4285dd
cmp eax, dword [esi - 0x10]
jne 0x4285dd
lea edi, [esi - 0x10]
mov edx, 1
lock xadd dword [ecx], edx
jmp 0x428616
mov ecx, dword [esi - 0xc]
mov edx, dword [eax]
mov edx, dword [edx]
push 2
push ecx
mov ecx, eax
call edx
mov edi, eax
cmp edi, ebx
jne 0x4285f6
call fcn.00402d50
mov eax, dword [esi - 0xc]
mov dword [edi + 4], eax
mov eax, dword [esi - 0xc]
lea ecx, [eax + eax + 2]
push ecx
lea edx, [eax + eax + 2]
push esi
push edx
lea eax, [edi + 0x10]
push eax
call fcn.00532e6b
add esp, 0x10
lea ebx, [edi + 0x10]
mov dword [ebp - 0x254], ebx
mov esi, dword [ebx - 0xc]
mov byte [ebp - 4], 3
test esi, esi
jns 0x428634
push 0x80070057
call fcn.00402a80
mov eax, dword [ebx - 8]
mov ecx, 1
sub ecx, dword [ebx - 4]
sub eax, esi
or eax, ecx
jge 0x428657
push esi
lea ecx, [ebp - 0x254]
call fcn.00402f00
mov ebx, dword [ebp - 0x254]
lea ecx, [esi + 1]
push ecx
push ebx
call fcn.00533eb5
add esp, 8
cmp esi, dword [ebx - 8]
jg 0x42862a
xor edx, edx
mov dword [ebx - 0xc], esi
xor edi, edi
mov word [ebx + esi*2], dx
cmp dword [ebx - 0xc], edi
jl 0x428694
push str.SOFTWARECANON_
push ebx
call fcn.00533a71
add esp, 8
cmp eax, edi
je 0x428694
sub eax, ebx
sar eax, 1
cmp eax, 0xffffffff
jne 0x4286e2
lea eax, [ebx - 0x10]
or edx, 0xffffffff
lea ecx, [eax + 0xc]
mov byte [ebp - 4], 2
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4286b4
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [ebp - 0x268]
mov byte [ebp - 4], 1
call fcn.00440b59
mov eax, dword [ebp - 0x238]
add eax, 0xfffffff0
mov byte [ebp - 4], 0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jmp 0x42855b
cmp dword [ebp - 0x260], edi
jg 0x4286ef
call fcn.00432b6c
mov ecx, dword [ebp - 0x264]
mov ecx, dword [ecx]
mov esi, dword [ebp - 0x22c]
lea eax, [ecx - 0x10]
add esi, 0xfffffff0
cmp eax, esi
je 0x42875a
cmp dword [esi + 0xc], 0
lea edi, [esi + 0xc]
jl 0x428748
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x428748
push eax
call fcn.00402f60
mov ebx, eax
add esp, 4
or eax, 0xffffffff
lock xadd dword [edi], eax
dec eax
test eax, eax
jg 0x428737
mov ecx, dword [esi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push esi
call eax
add ebx, 0x10
mov dword [ebp - 0x22c], ebx
mov ebx, dword [ebp - 0x254]
jmp 0x428758
mov eax, dword [ecx - 0xc]
push eax
push ecx
lea ecx, [ebp - 0x22c]
call fcn.00403290
xor edi, edi
mov ecx, dword [ebp - 0x22c]
mov esi, dword [ecx - 0xc]
push 0x10
push str.SOFTWARECANON_
call fcn.005330ca
add esp, 8
cmp esi, eax
jg 0x42878f
lea eax, [ebx - 0x10]
mov byte [ebp - 4], 2
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jmp 0x4286a8
mov esi, 1
xor ebx, ebx
cmp dword [ebp - 0x23c], 2
mov dword [ebp - 0x280], esi
mov dword [ebp - 0x26c], esi
mov dword [ebp - 0x240], ebx
jl 0x428933
xor eax, eax
xor ecx, ecx
mov word [ebp - 0x1c], cx
mov dword [ebp - 0x1a], eax
mov dword [ebp - 0x16], eax
cmp dword [ebp - 0x260], esi
jle 0x42852d
mov edx, dword [ebp - 0x264]
mov eax, dword [edx + 4]
mov ecx, dword [eax]
mov dword [ebp - 0x1c], ecx
mov dx, word [eax + 4]
lea eax, [ebp - 0x1c]
push eax
mov word [ebp - 0x18], dx
call dword [sym.imp.KERNEL32.dll_GetDriveTypeW]
cmp eax, 3
jne 0x42881a
cmp dword [ebp - 0x260], esi
jle 0x42852d
mov eax, dword [ebp - 0x264]
add eax, 4
push eax
lea ecx, [ebp - 0x238]
call fcn.004034d0
mov esi, 2
cmp esi, dword [ebp - 0x23c]
jge 0x428933
cmp esi, edi
jl 0x42852d
cmp esi, dword [ebp - 0x260]
jge 0x42852d
mov ecx, dword [ebp - 0x264]
mov eax, dword [ecx + esi*4]
push str._NOEULA
push eax
call fcn.005321b4
add esp, 8
cmp eax, edi
jne 0x428860
mov dword [ebp - 0x280], edi
jmp 0x428920
cmp esi, dword [ebp - 0x260]
jge 0x42852d
mov edx, dword [ebp - 0x264]
mov eax, dword [edx + esi*4]
push str._SILENT
push eax
call fcn.005321b4
add esp, 8
cmp eax, edi
jne 0x428892
mov dword [ebp - 0x26c], edi
jmp 0x428920
cmp esi, dword [ebp - 0x260]
jge 0x42852d
mov eax, dword [ebp - 0x264]
mov eax, dword [eax + esi*4]
push str._SILENT_C
push eax
call fcn.005321b4
add esp, 8
cmp eax, edi
jne 0x4288c1
mov dword [ebp - 0x26c], edi
jmp 0x428920
cmp esi, dword [ebp - 0x260]
jge 0x42852d
mov ecx, dword [ebp - 0x264]
mov eax, dword [ecx + esi*4]
push str._FWALLOFF
push eax
call fcn.005321b4
add esp, 8
cmp eax, edi
jne 0x4288ef
mov ebx, 2
jmp 0x428920
cmp esi, dword [ebp - 0x260]
jge 0x42852d
mov edx, dword [ebp - 0x264]
mov eax, dword [edx + esi*4]
push str._FWALLON
push eax
call fcn.005321b4
add esp, 8
cmp eax, edi
jne 0x428920
cmp ebx, 2
je 0x428920
mov ebx, 1
inc esi
cmp esi, dword [ebp - 0x23c]
jl 0x428826
mov dword [ebp - 0x240], ebx
call fcn.0043e2f8
xor ecx, ecx
cmp eax, edi
setne cl
cmp ecx, edi
jne 0x42894d
push 0x80004005
call fcn.00402a80
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x248], eax
mov byte [ebp - 4], 4
call fcn.0043e2f8
xor ecx, ecx
cmp eax, edi
setne cl
cmp ecx, edi
jne 0x42897d
push 0x80004005
call fcn.00402a80
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
lea ebx, [eax + 0x10]
mov dword [ebp - 0x24c], ebx
mov byte [ebp - 4], 5
call fcn.0043e2f8
xor ecx, ecx
xor edi, edi
cmp eax, edi
setne cl
cmp ecx, edi
jne 0x4289af
push 0x80004005
call fcn.00402a80
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
lea esi, [eax + 0x10]
mov dword [ebp - 0x250], esi
mov edx, dword [ebp - 0x22c]
lea ecx, [ebp - 0x244]
push ecx
push 1
push edi
push edx
push 0x80000002
mov byte [ebp - 4], 6
mov dword [ebp - 0x27c], edi
mov dword [ebp - 0x244], edi
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
je 0x428a65
lea eax, [esi - 0x10]
mov byte [ebp - 4], 5
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x428a11
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea eax, [ebx - 0x10]
mov byte [ebp - 4], 4
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x428a31
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x248]
add eax, 0xfffffff0
mov byte [ebp - 4], 3
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x428a57
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x254]
add eax, 0xfffffff0
jmp 0x428697
mov esi, dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
lea ecx, [ebp - 0x234]
push ecx
mov ecx, dword [ebp - 0x244]
lea edx, [ebp - 0x284]
push edx
lea eax, [ebp - 0x230]
push eax
push edi
push str.PRIMARY_LANGID
push ecx
mov dword [ebp - 0x284], edi
mov dword [ebp - 0x28c], edi
mov dword [ebp - 0x234], 4
mov dword [ebp - 0x230], edi
call esi
test eax, eax
je 0x428ac1
push edi
push edi
call fcn.00428150
movzx edx, ax
mov dword [ebp - 0x278], edx
jmp 0x428b19
lea eax, [ebp - 0x234]
push eax
mov eax, dword [ebp - 0x244]
lea ecx, [ebp - 0x28c]
push ecx
lea edx, [ebp - 0x230]
push edx
push edi
push str.SUB_LANGID
push eax
mov dword [ebp - 0x234], 4
mov dword [ebp - 0x230], edi
call esi
test eax, eax
je 0x428afd
push edi
push edi
jmp 0x428b0b
mov edx, dword [ebp - 0x28c]
mov eax, dword [ebp - 0x284]
push edx
push eax
call fcn.00428150
movzx ecx, ax
mov dword [ebp - 0x278], ecx
add esp, 8
mov edi, 0x20a
push edi
lea edx, [ebp - 0x228]
push 0
push edx
mov dword [ebp - 0x230], 1
call fcn.00531fb0
add esp, 0xc
lea eax, [ebp - 0x234]
push eax
mov eax, dword [ebp - 0x244]
lea ecx, [ebp - 0x228]
push ecx
lea edx, [ebp - 0x230]
push edx
push 0
push str.REGION
push eax
mov dword [ebp - 0x234], edi
call esi
test eax, eax
jne 0x428b9d
lea eax, [ebp - 0x228]
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x428b75
sub eax, edx
sar eax, 1
push eax
lea ecx, [ebp - 0x228]
push ecx
lea ecx, [ebp - 0x24c]
call fcn.00403290
mov ebx, dword [ebp - 0x24c]
push 0x55bfd8
push ebx
call fcn.005321b4
add esp, 8
test eax, eax
jne 0x428bb8
push 4
push str.asia
jmp 0x428c27
push edi
lea edx, [ebp - 0x228]
push 0
push edx
mov dword [ebp - 0x230], 1
call fcn.00531fb0
add esp, 0xc
lea eax, [ebp - 0x234]
push eax
mov eax, dword [ebp - 0x244]
lea ecx, [ebp - 0x228]
push ecx
lea edx, [ebp - 0x230]
push edx
push 0
push str.RESIDENCE
push eax
mov dword [ebp - 0x234], edi
call esi
test eax, eax
jne 0x428c32
lea eax, [ebp - 0x228]
lea edx, [eax + 2]
lea esp, [esp]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x428c10
sub eax, edx
sar eax, 1
push eax
lea ecx, [ebp - 0x228]
push ecx
lea ecx, [ebp - 0x248]
call fcn.00403290
push edi
lea edx, [ebp - 0x228]
push 0
push edx
mov dword [ebp - 0x230], 1
call fcn.00531fb0
add esp, 0xc
lea eax, [ebp - 0x234]
push eax
mov eax, dword [ebp - 0x244]
lea ecx, [ebp - 0x228]
push ecx
lea edx, [ebp - 0x230]
push edx
push 0
push 0x560f48
push eax
mov dword [ebp - 0x234], edi
call esi
test eax, eax
jne 0x428ca8
lea eax, [ebp - 0x228]
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x428c86
sub eax, edx
sar eax, 1
push eax
lea ecx, [ebp - 0x228]
push ecx
lea ecx, [ebp - 0x250]
call fcn.00403290
mov eax, 4
lea edx, [ebp - 0x234]
push edx
mov edx, dword [ebp - 0x244]
mov dword [ebp - 0x230], eax
mov dword [ebp - 0x234], eax
lea eax, [ebp - 0x288]
push eax
lea ecx, [ebp - 0x230]
push ecx
push 0
push str.SEND_INFO_AGREE
push edx
mov dword [ebp - 0x288], 0
call esi
test eax, eax
jne 0x428cf8
mov eax, dword [ebp - 0x288]
mov dword [ebp - 0x27c], eax
mov eax, dword [ebp - 0x248]
mov edi, 1
cmp dword [eax - 4], edi
jle 0x428d1d
mov ecx, dword [eax - 0xc]
push ecx
lea ecx, [ebp - 0x248]
call fcn.00402d60
mov eax, dword [ebp - 0x248]
mov esi, dword [ebp - 0x274]
push eax
lea edx, [esi + 2]
push 0x100
push edx
call fcn.00532f33
add esp, 0xc
cmp dword [ebx - 4], edi
jle 0x428d4f
mov eax, dword [ebx - 0xc]
push eax
lea ecx, [ebp - 0x24c]
call fcn.00402d60
mov ebx, dword [ebp - 0x24c]
push ebx
lea ecx, [esi + 0x202]
push 0x100
push ecx
call fcn.00532f33
mov eax, dword [ebp - 0x250]
add esp, 0xc
cmp dword [eax - 4], edi
jle 0x428d84
mov edx, dword [eax - 0xc]
push edx
lea ecx, [ebp - 0x250]
call fcn.00402d60
mov eax, dword [ebp - 0x250]
push eax
push 0x100
add esi, 0x402
push esi
call fcn.00532f33
mov eax, dword [ebp - 0x238]
add esp, 0xc
cmp dword [eax - 4], edi
jle 0x428db3
mov eax, dword [eax - 0xc]
push eax
lea ecx, [ebp - 0x238]
call fcn.00402d60
mov ecx, dword [ebp - 0x238]
mov esi, dword [ebp - 0x274]
push ecx
lea edx, [esi + 0x602]
push 0x104
push edx
call fcn.00532f33
mov ax, word [ebp - 0x278]
mov ecx, dword [ebp - 0x280]
mov edx, dword [ebp - 0x26c]
mov edi, dword [ebp - 0x270]
mov ebx, dword [ebp - 0x22c]
mov word [esi], ax
mov eax, dword [ebp - 0x240]
mov dword [esi + 0x80c], ecx
mov dword [esi + 0x814], edx
mov dword [esi + 0x818], eax
mov esi, dword [edi + 4]
add ebx, 0xfffffff0
sub esi, 0x10
add esp, 0xc
cmp ebx, esi
je 0x428e70
cmp dword [esi + 0xc], 0
jl 0x428e5d
mov ecx, dword [ebx]
cmp ecx, dword [esi]
jne 0x428e5d
push ebx
call fcn.00402f60
mov dword [ebp - 0x270], eax
add esp, 4
lea eax, [esi + 0xc]
or edx, 0xffffffff
lock xadd dword [eax], edx
dec edx
test edx, edx
jg 0x428e4f
mov ecx, dword [esi]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
push esi
call edx
mov eax, dword [ebp - 0x270]
add eax, 0x10
mov dword [edi + 4], eax
jmp 0x428e70
mov ecx, dword [ebp - 0x22c]
mov eax, dword [ecx - 0xc]
push eax
push ecx
lea ecx, [edi + 4]
call fcn.00403290
mov edx, dword [ebp - 0x274]
xor ecx, ecx
cmp dword [ebp - 0x27c], ecx
mov byte [ebp - 4], 5
setne cl
xor eax, eax
cmp dword [ebp - 0x26c], eax
sete al
mov dword [edx + 0x810], ecx
or edx, 0xffffffff
mov dword [0x60e208], eax
mov eax, dword [ebp - 0x250]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x428ebd
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x24c]
add eax, 0xfffffff0
mov byte [ebp - 4], 4
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x428ee3
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x248]
add eax, 0xfffffff0
mov byte [ebp - 4], 3
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x428f09
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [ebp - 0x254]
add eax, 0xfffffff0
mov byte [ebp - 4], 2
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x428f2f
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [ebp - 0x268]
mov byte [ebp - 4], 1
call fcn.00440b59
mov eax, dword [ebp - 0x238]
add eax, 0xfffffff0
mov byte [ebp - 4], 0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x428f64
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebx + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x428f84
mov ecx, dword [ebx]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
push ebx
call edx
mov eax, 1
jmp 0x428592