Function at 0x411e80
Capabilities:
Check if file exists
Check mutex on windows
Create process on windows
Delete file
Self delete
Set registry value

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x441df0
mov eax, dword fs:[0]
push eax
sub esp, 0x50
push ebx
push esi
push edi
mov eax, dword [0x450398]
xor eax, esp
push eax
lea eax, [esp + 0x60]
mov dword fs:[0], eax
test byte [0x453d58], 1
mov esi, 1
jne 0x411ee7
or dword [0x453d58], esi
mov ebx, 0x452c30
mov dword [esp + 0x68], 0
call fcn.0041b190
push 0x4422a0
call fcn.00427096
add esp, 4
mov dword [esp + 0x68], 0xffffffff
mov eax, dword [0x452c40]
mov edx, dword [eax + 0x1c]
push 2
push 0
mov ecx, 0x452c40
call edx
test al, al
je 0x411fd4
test byte [0x453d58], 1
jne 0x411f34
or dword [0x453d58], esi
mov ebx, 0x452c30
mov dword [esp + 0x68], esi
call fcn.0041b190
push 0x4422a0
call fcn.00427096
add esp, 4
mov dword [esp + 0x68], 0xffffffff
mov eax, dword [0x452c40]
mov edx, dword [eax + 0x6c]
push 2
push 0
mov ecx, 0x452c40
call edx
mov edi, eax
mov esi, dword [edi + 0x20]
mov eax, 0xa000
sub eax, esi
lea esi, [esi + edi + 0x24]
add eax, esi
mov ebx, 0x1c
sub eax, esi
mov ecx, esi
cmp eax, ebx
jae 0x411f6c
mov ebx, eax
test eax, eax
je 0x411f7e
push ebx
push str.you_started_ChoiceHelper.exe
push esi
call fcn.0042aac0
add esp, 0xc
lea ecx, [ebx + esi]
sub ecx, esi
add dword [edi + 0x20], ecx
test byte [0x453d58], 1
jne 0x411fba
or dword [0x453d58], 1
mov ebx, 0x452c30
mov dword [esp + 0x68], 2
call fcn.0041b190
push 0x4422a0
call fcn.00427096
add esp, 4
mov dword [esp + 0x68], 0xffffffff
mov eax, dword [0x452c40]
mov edx, dword [eax + 0x20]
push 0x14ef
push str.ChoiceHelper.cpp
push edi
mov ecx, 0x452c40
call edx
lea esi, [esp + 0x24]
call fcn.00402300
push eax
lea eax, [esp + 0x18]
push eax
mov ebx, str.ChoiceHelper.dat
mov dword [esp + 0x70], 3
call fcn.004141a0
add esp, 8
mov byte [esp + 0x68], 5
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x41201d
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
test byte [0x453d58], 1
mov edi, 1
jne 0x412052
or dword [0x453d58], edi
mov ebx, 0x452c30
mov byte [esp + 0x68], 6
call fcn.0041b190
push 0x4422a0
call fcn.00427096
add esp, 4
mov byte [esp + 0x68], 5
mov edx, dword [0x452c40]
mov eax, dword [edx + 0x1c]
push 2
push 0
mov ecx, 0x452c40
call eax
test al, al
je 0x41213f
test byte [0x453d58], 1
jne 0x41209e
or dword [0x453d58], edi
mov ebx, 0x452c30
mov byte [esp + 0x68], 7
call fcn.0041b190
push 0x4422a0
call fcn.00427096
add esp, 4
mov byte [esp + 0x68], 5
mov edx, dword [0x452c40]
mov eax, dword [edx + 0x6c]
push 2
push 0
mov ecx, 0x452c40
call eax
mov edi, eax
mov esi, dword [edi + 0x20]
mov eax, 0xa000
sub eax, esi
lea esi, [esi + edi + 0x24]
add eax, esi
mov ebx, 0x1f
sub eax, esi
mov ecx, esi
cmp eax, ebx
jae 0x4120d7
mov ebx, eax
test eax, eax
je 0x4120e9
push ebx
push str.check_if_ChoiceHelper.dat_exist
push esi
call fcn.0042aac0
add esp, 0xc
lea ecx, [ebx + esi]
sub ecx, esi
add dword [edi + 0x20], ecx
test byte [0x453d58], 1
jne 0x41211f
or dword [0x453d58], 1
mov ebx, 0x452c30
mov byte [esp + 0x68], 8
call fcn.0041b190
push 0x4422a0
call fcn.00427096
add esp, 4
mov byte [esp + 0x68], 5
mov edx, dword [0x452c40]
mov eax, dword [edx + 0x20]
push 0x14f1
push str.ChoiceHelper.cpp
push edi
mov ecx, 0x452c40
call eax
mov edi, 1
mov ecx, dword [esp + 0x14]
push ecx
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
jne 0x4122ac
test byte [0x453d58], 1
jne 0x412187
or dword [0x453d58], edi
mov ebx, 0x452c30
mov byte [esp + 0x68], 9
call fcn.0041b190
push 0x4422a0
call fcn.00427096
add esp, 4
mov byte [esp + 0x68], 5
mov edi, 1
mov edx, dword [0x452c40]
mov eax, dword [edx + 0x1c]
push 2
push 0
mov ecx, 0x452c40
call eax
test al, al
je 0x41226f
test byte [0x453d58], 1
jne 0x4121d3
or dword [0x453d58], edi
mov ebx, 0x452c30
mov byte [esp + 0x68], 0xa
call fcn.0041b190
push 0x4422a0
call fcn.00427096
add esp, 4
mov byte [esp + 0x68], 5
mov edx, dword [0x452c40]
mov eax, dword [edx + 0x6c]
push 2
push 0
mov ecx, 0x452c40
call eax
mov edi, eax
mov esi, dword [edi + 0x20]
mov eax, 0xa000
sub eax, esi
lea esi, [esi + edi + 0x24]
add eax, esi
mov ebx, 0x27
sub eax, esi
mov ecx, esi
cmp eax, ebx
jae 0x41220c
mov ebx, eax
test eax, eax
je 0x41221e
push ebx
push str.ChoiceHelper.dat_is_not_exist__quit_me.
push esi
call fcn.0042aac0
add esp, 0xc
lea ecx, [ebx + esi]
sub ecx, esi
add dword [edi + 0x20], ecx
test byte [0x453d58], 1
jne 0x412254
or dword [0x453d58], 1
mov ebx, 0x452c30
mov byte [esp + 0x68], 0xb
call fcn.0041b190
push 0x4422a0
call fcn.00427096
add esp, 4
mov byte [esp + 0x68], 5
mov edx, dword [0x452c40]
mov eax, dword [edx + 0x20]
push 0x14f4
push str.ChoiceHelper.cpp
push edi
mov ecx, 0x452c40
call eax
mov dword [esp + 0x68], 0xffffffff
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x412297
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
xor eax, eax
mov ecx, dword [esp + 0x60]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
push str.ChoiceHelper
push 0
push 0
mov byte [esp + 0x74], 0xc
call dword [sym.imp.KERNEL32.dll_CreateMutexW]
mov esi, eax
mov dword [esp + 0x24], esi
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xb7
jne 0x412444
test byte [0x453d58], 1
jne 0x41230c
or dword [0x453d58], edi
mov ebx, 0x452c30
mov byte [esp + 0x68], 0xd
call fcn.0041b190
push 0x4422a0
call fcn.00427096
add esp, 4
mov byte [esp + 0x68], 0xc
mov edi, 1
mov edx, dword [0x452c40]
mov eax, dword [edx + 0x1c]
push 2
push 0
mov ecx, 0x452c40
call eax
test al, al
je 0x4123f8
test byte [0x453d58], 1
jne 0x412358
or dword [0x453d58], edi
mov ebx, 0x452c30
mov byte [esp + 0x68], 0xe
call fcn.0041b190
push 0x4422a0
call fcn.00427096
add esp, 4
mov byte [esp + 0x68], 0xc
mov edx, dword [0x452c40]
mov eax, dword [edx + 0x6c]
push 2
push 0
mov ecx, 0x452c40
call eax
mov edi, eax
mov esi, dword [edi + 0x20]
mov eax, 0xa000
sub eax, esi
lea esi, [esi + edi + 0x24]
add eax, esi
mov ebx, 0x33
sub eax, esi
mov ecx, esi
cmp eax, ebx
jae 0x412391
mov ebx, eax
test eax, eax
je 0x4123a3
push ebx
push str.other_ChoiceHelper.exe_is_already_running__quit_me.
push esi
call fcn.0042aac0
add esp, 0xc
lea ecx, [ebx + esi]
sub ecx, esi
add dword [edi + 0x20], ecx
test byte [0x453d58], 1
jne 0x4123d9
or dword [0x453d58], 1
mov ebx, 0x452c30
mov byte [esp + 0x68], 0xf
call fcn.0041b190
push 0x4422a0
call fcn.00427096
add esp, 4
mov byte [esp + 0x68], 0xc
mov edx, dword [0x452c40]
mov eax, dword [edx + 0x20]
push 0x14fd
push str.ChoiceHelper.cpp
push edi
mov ecx, 0x452c40
call eax
mov esi, dword [esp + 0x24]
test esi, esi
je 0x412403
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov dword [esp + 0x68], 0xffffffff
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x412297
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
xor eax, eax
mov ecx, dword [esp + 0x60]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
xor eax, eax
lea ecx, [esp + 0x34]
mov dword [esp + 0x38], eax
mov dword [esp + 0x58], eax
push ecx
mov dword [esp + 0x38], eax
mov dword [esp + 0x40], eax
mov dword [esp + 0x44], eax
mov dword [esp + 0x48], eax
mov dword [esp + 0x4c], eax
mov dword [esp + 0x50], eax
mov dword [esp + 0x54], eax
mov dword [esp + 0x58], eax
mov dword [esp + 0x3c], 0x411e10
mov dword [esp + 0x5c], str.HiddenWindowClass
call dword [sym.imp.USER32.dll_RegisterClassW]
push 0
push 0
push 0
push 0xfffffffffffffffd
push 0
push 0
push 0
push 0
push 0
push str.HiddenWindow
push str.HiddenWindowClass
push 0
call dword [sym.imp.USER32.dll_CreateWindowExW]
test byte [0x453d58], 1
mov dword [0x452bbc], eax
jne 0x4124e7
or dword [0x453d58], edi
mov ebx, 0x452c30
mov byte [esp + 0x68], 0x10
call fcn.0041b190
push 0x4422a0
call fcn.00427096
add esp, 4
mov byte [esp + 0x68], 0xc
mov edi, 1
mov edx, dword [0x452c40]
mov eax, dword [edx + 0x1c]
push 2
push 0
mov ecx, 0x452c40
call eax
test al, al
je 0x4125d4
test byte [0x453d58], 1
jne 0x412533
or dword [0x453d58], edi
mov ebx, 0x452c30
mov byte [esp + 0x68], 0x11
call fcn.0041b190
push 0x4422a0
call fcn.00427096
add esp, 4
mov byte [esp + 0x68], 0xc
mov edx, dword [0x452c40]
mov eax, dword [edx + 0x6c]
push 2
push 0
mov ecx, 0x452c40
call eax
mov edi, eax
mov esi, dword [edi + 0x20]
mov eax, 0xa000
sub eax, esi
lea esi, [esi + edi + 0x24]
add eax, esi
mov ebx, 0x2e
sub eax, esi
mov ecx, esi
cmp eax, ebx
jae 0x41256c
mov ebx, eax
test eax, eax
je 0x41257e
push ebx
push str.begin_copy_old_choice_user_data_to_new_choice.
push esi
call fcn.0042aac0
add esp, 0xc
lea ecx, [ebx + esi]
sub ecx, esi
add dword [edi + 0x20], ecx
test byte [0x453d58], 1
jne 0x4125b4
or dword [0x453d58], 1
mov ebx, 0x452c30
mov byte [esp + 0x68], 0x12
call fcn.0041b190
push 0x4422a0
call fcn.00427096
add esp, 4
mov byte [esp + 0x68], 0xc
mov edx, dword [0x452c40]
mov eax, dword [edx + 0x20]
push 0x150c
push str.ChoiceHelper.cpp
push edi
mov ecx, 0x452c40
call eax
mov edi, 1
call fcn.004042b0
test byte [0x453d58], 1
jne 0x41260e
or dword [0x453d58], edi
mov ebx, 0x452c30
mov byte [esp + 0x68], 0x13
call fcn.0041b190
push 0x4422a0
call fcn.00427096
add esp, 4
mov byte [esp + 0x68], 0xc
mov edi, 1
mov edx, dword [0x452c40]
mov eax, dword [edx + 0x1c]
push 2
push 0
mov ecx, 0x452c40
call eax
test al, al
je 0x4126fb
test byte [0x453d58], 1
jne 0x41265a
or dword [0x453d58], edi
mov ebx, 0x452c30
mov byte [esp + 0x68], 0x14
call fcn.0041b190
push 0x4422a0
call fcn.00427096
add esp, 4
mov byte [esp + 0x68], 0xc
mov edx, dword [0x452c40]
mov eax, dword [edx + 0x6c]
push 2
push 0
mov ecx, 0x452c40
call eax
mov edi, eax
mov esi, dword [edi + 0x20]
mov eax, 0xa000
sub eax, esi
lea esi, [esi + edi + 0x24]
add eax, esi
mov ebx, 0x1e
sub eax, esi
mov ecx, esi
cmp eax, ebx
jae 0x412693
mov ebx, eax
test eax, eax
je 0x4126a5
push ebx
push str.end_copy_old_choice_user_data.
push esi
call fcn.0042aac0
add esp, 0xc
lea ecx, [ebx + esi]
sub ecx, esi
add dword [edi + 0x20], ecx
test byte [0x453d58], 1
jne 0x4126db
or dword [0x453d58], 1
mov ebx, 0x452c30
mov byte [esp + 0x68], 0x15
call fcn.0041b190
push 0x4422a0
call fcn.00427096
add esp, 4
mov byte [esp + 0x68], 0xc
mov edx, dword [0x452c40]
mov eax, dword [edx + 0x20]
push 0x150f
push str.ChoiceHelper.cpp
push edi
mov ecx, 0x452c40
call eax
mov edi, 1
test byte [0x453d58], 1
jne 0x412730
or dword [0x453d58], edi
mov ebx, 0x452c30
mov byte [esp + 0x68], 0x16
call fcn.0041b190
push 0x4422a0
call fcn.00427096
add esp, 4
mov byte [esp + 0x68], 0xc
mov edi, 1
mov edx, dword [0x452c40]
mov eax, dword [edx + 0x1c]
push 2
push 0
mov ecx, 0x452c40
call eax
test al, al
je 0x41281d
test byte [0x453d58], 1
jne 0x41277c
or dword [0x453d58], edi
mov ebx, 0x452c30
mov byte [esp + 0x68], 0x17
call fcn.0041b190
push 0x4422a0
call fcn.00427096
add esp, 4
mov byte [esp + 0x68], 0xc
mov edx, dword [0x452c40]
mov eax, dword [edx + 0x6c]
push 2
push 0
mov ecx, 0x452c40
call eax
mov edi, eax
mov esi, dword [edi + 0x20]
mov eax, 0xa000
sub eax, esi
lea esi, [esi + edi + 0x24]
add eax, esi
mov ebx, 0x14
sub eax, esi
mov ecx, esi
cmp eax, ebx
jae 0x4127b5
mov ebx, eax
test eax, eax
je 0x4127c7
push ebx
push str.begin_register_addin
push esi
call fcn.0042aac0
add esp, 0xc
lea ecx, [ebx + esi]
sub ecx, esi
add dword [edi + 0x20], ecx
test byte [0x453d58], 1
jne 0x4127fd
or dword [0x453d58], 1
mov ebx, 0x452c30
mov byte [esp + 0x68], 0x18
call fcn.0041b190
push 0x4422a0
call fcn.00427096
add esp, 4
mov byte [esp + 0x68], 0xc
mov edx, dword [0x452c40]
mov eax, dword [edx + 0x20]
push 0x1512
push str.ChoiceHelper.cpp
push edi
mov ecx, 0x452c40
call eax
mov edi, 1
test byte [0x453d58], 1
jne 0x412852
or dword [0x453d58], edi
mov ebx, 0x452c30
mov byte [esp + 0x68], 0x19
call fcn.0041b190
push 0x4422a0
call fcn.00427096
add esp, 4
mov byte [esp + 0x68], 0xc
mov edi, 1
mov edx, dword [0x452c40]
mov eax, dword [edx + 0x1c]
push 2
push 0
mov ecx, 0x452c40
call eax
test al, al
je 0x41293f
test byte [0x453d58], 1
jne 0x41289e
or dword [0x453d58], edi
mov ebx, 0x452c30
mov byte [esp + 0x68], 0x1a
call fcn.0041b190
push 0x4422a0
call fcn.00427096
add esp, 4
mov byte [esp + 0x68], 0xc
mov edx, dword [0x452c40]
mov eax, dword [edx + 0x6c]
push 2
push 0
mov ecx, 0x452c40
call eax
mov edi, eax
mov esi, dword [edi + 0x20]
mov eax, 0xa000
sub eax, esi
lea esi, [esi + edi + 0x24]
add eax, esi
mov ebx, 0xb
sub eax, esi
mov ecx, esi
cmp eax, ebx
jae 0x4128d7
mov ebx, eax
test eax, eax
je 0x4128e9
push ebx
push str.SystemCheck
push esi
call fcn.0042aac0
add esp, 0xc
lea ecx, [ebx + esi]
sub ecx, esi
add dword [edi + 0x20], ecx
test byte [0x453d58], 1
jne 0x41291f
or dword [0x453d58], 1
mov ebx, 0x452c30
mov byte [esp + 0x68], 0x1b
call fcn.0041b190
push 0x4422a0
call fcn.00427096
add esp, 4
mov byte [esp + 0x68], 0xc
mov edx, dword [0x452c40]
mov eax, dword [edx + 0x20]
push 0x1513
push str.ChoiceHelper.cpp
push edi
mov ecx, 0x452c40
call eax
mov edi, 1
call fcn.004074f0
test byte [0x453d58], 1
jne 0x412979
or dword [0x453d58], edi
mov ebx, 0x452c30
mov byte [esp + 0x68], 0x1c
call fcn.0041b190
push 0x4422a0
call fcn.00427096
add esp, 4
mov byte [esp + 0x68], 0xc
mov edi, 1
mov edx, dword [0x452c40]
mov eax, dword [edx + 0x1c]
push 2
push 0
mov ecx, 0x452c40
call eax
test al, al
je 0x412a66
test byte [0x453d58], 1
jne 0x4129c5
or dword [0x453d58], edi
mov ebx, 0x452c30
mov byte [esp + 0x68], 0x1d
call fcn.0041b190
push 0x4422a0
call fcn.00427096
add esp, 4
mov byte [esp + 0x68], 0xc
mov edx, dword [0x452c40]
mov eax, dword [edx + 0x6c]
push 2
push 0
mov ecx, 0x452c40
call eax
mov edi, eax
mov esi, dword [edi + 0x20]
mov eax, 0xa000
sub eax, esi
lea esi, [esi + edi + 0x24]
add eax, esi
mov ebx, 0xa
sub eax, esi
mov ecx, esi
cmp eax, ebx
jae 0x4129fe
mov ebx, eax
test eax, eax
je 0x412a10
push ebx
push str.ExcelCheck
push esi
call fcn.0042aac0
add esp, 0xc
lea ecx, [ebx + esi]
sub ecx, esi
add dword [edi + 0x20], ecx
test byte [0x453d58], 1
jne 0x412a46
or dword [0x453d58], 1
mov ebx, 0x452c30
mov byte [esp + 0x68], 0x1e
call fcn.0041b190
push 0x4422a0
call fcn.00427096
add esp, 4
mov byte [esp + 0x68], 0xc
mov edx, dword [0x452c40]
mov eax, dword [edx + 0x20]
push 0x1515
push str.ChoiceHelper.cpp
push edi
mov ecx, 0x452c40
call eax
mov edi, 1
call fcn.00407ae0
test byte [0x453d58], 1
jne 0x412aa0
or dword [0x453d58], edi
mov ebx, 0x452c30
mov byte [esp + 0x68], 0x1f
call fcn.0041b190
push 0x4422a0
call fcn.00427096
add esp, 4
mov byte [esp + 0x68], 0xc
mov edi, 1
mov edx, dword [0x452c40]
mov eax, dword [edx + 0x1c]
push 2
push 0
mov ecx, 0x452c40
call eax
test al, al
je 0x412b8d
test byte [0x453d58], 1
jne 0x412aec
or dword [0x453d58], edi
mov ebx, 0x452c30
mov byte [esp + 0x68], 0x20
call fcn.0041b190
push 0x4422a0
call fcn.00427096
add esp, 4
mov byte [esp + 0x68], 0xc
mov edx, dword [0x452c40]
mov eax, dword [edx + 0x6c]
push 2
push 0
mov ecx, 0x452c40
call eax
mov edi, eax
mov esi, dword [edi + 0x20]
mov eax, 0xa000
sub eax, esi
lea esi, [esi + edi + 0x24]
add eax, esi
mov ebx, 8
sub eax, esi
mov ecx, esi
cmp eax, ebx
jae 0x412b25
mov ebx, eax
test eax, eax
je 0x412b37
push ebx
push str.WpsCheck
push esi
call fcn.0042aac0
add esp, 0xc
lea ecx, [ebx + esi]
sub ecx, esi
add dword [edi + 0x20], ecx
test byte [0x453d58], 1
jne 0x412b6d
or dword [0x453d58], 1
mov ebx, 0x452c30
mov byte [esp + 0x68], 0x21
call fcn.0041b190
push 0x4422a0
call fcn.00427096
add esp, 4
mov byte [esp + 0x68], 0xc
mov edx, dword [0x452c40]
mov eax, dword [edx + 0x20]
push 0x1517
push str.ChoiceHelper.cpp
push edi
mov ecx, 0x452c40
call eax
mov edi, 1
call fcn.00409700
test byte [0x453d58], 1
jne 0x412bc7
or dword [0x453d58], edi
mov ebx, 0x452c30
mov byte [esp + 0x68], 0x22
call fcn.0041b190
push 0x4422a0
call fcn.00427096
add esp, 4
mov byte [esp + 0x68], 0xc
mov edi, 1
mov edx, dword [0x452c40]
mov eax, dword [edx + 0x1c]
push 2
push 0
mov ecx, 0x452c40
call eax
test al, al
je 0x412caf
test byte [0x453d58], 1
jne 0x412c13
or dword [0x453d58], edi
mov ebx, 0x452c30
mov byte [esp + 0x68], 0x23
call fcn.0041b190
push 0x4422a0
call fcn.00427096
add esp, 4
mov byte [esp + 0x68], 0xc
mov edx, dword [0x452c40]
mov eax, dword [edx + 0x6c]
push 2
push 0
mov ecx, 0x452c40
call eax
mov edi, eax
mov esi, dword [edi + 0x20]
mov eax, 0xa000
sub eax, esi
lea esi, [esi + edi + 0x24]
add eax, esi
mov ebx, 0x13
sub eax, esi
mov ecx, esi
cmp eax, ebx
jae 0x412c4c
mov ebx, eax
test eax, eax
je 0x412c5e
push ebx
push str.ClearChoiceAddinReg
push esi
call fcn.0042aac0
add esp, 0xc
lea ecx, [ebx + esi]
sub ecx, esi
add dword [edi + 0x20], ecx
test byte [0x453d58], 1
jne 0x412c94
or dword [0x453d58], 1
mov ebx, 0x452c30
mov byte [esp + 0x68], 0x24
call fcn.0041b190
push 0x4422a0
call fcn.00427096
add esp, 4
mov byte [esp + 0x68], 0xc
mov edx, dword [0x452c40]
mov eax, dword [edx + 0x20]
push 0x1519
push str.ChoiceHelper.cpp
push edi
mov ecx, 0x452c40
call eax
call fcn.00409df0
lea esi, [esp + 0x30]
call fcn.00402300
push eax
lea ecx, [esp + 0x30]
push ecx
mov ebx, 0x4462a4
mov byte [esp + 0x70], 0x25
call fcn.004141a0
push eax
lea edx, [esp + 0x34]
push edx
mov ebx, 0x4463f0
mov byte [esp + 0x78], 0x26
call fcn.004141a0
push eax
lea eax, [esp + 0x24]
push eax
mov ebx, 0x4462a4
mov byte [esp + 0x80], 0x27
call fcn.004141a0
add esp, 0x18
mov byte [esp + 0x68], 0x29
mov eax, dword [esp + 0x28]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x412d27
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x68], 0x2a
mov eax, dword [esp + 0x2c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x412d4c
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x68], 0x2b
mov eax, dword [esp + 0x30]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x412d71
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [esp + 0x10]
push ecx
lea edx, [esp + 0x20]
push edx
mov ebx, str.ExcelAddin64ExcelRTD64.dll
call fcn.004141a0
add esp, 8
mov edi, 0x452c0c
mov byte [esp + 0x68], 0x2c
call fcn.00413c20
mov byte [esp + 0x68], 0x2b
mov eax, dword [esp + 0x1c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x412dbc
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [esp + 0x1c]
push ecx
mov ecx, 0x446394
call fcn.00413b80
lea edx, [esp + 0x18]
mov bl, 0x2d
push edx
mov ecx, 0x4462a4
mov byte [esp + 0x6c], bl
call fcn.00413b80
push 0x452c0c
lea ecx, [esp + 0x20]
lea edx, [esp + 0x1c]
mov byte [esp + 0x6c], 0x2e
call fcn.00402640
mov byte [esp + 0x6c], bl
mov eax, dword [esp + 0x1c]
add eax, 0xfffffff0
add esp, 4
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x412e1e
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x68], 0x2b
mov eax, dword [esp + 0x1c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x412e43
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [esp + 0x10]
push ecx
lea edx, [esp + 0x20]
push edx
mov ebx, str.ExcelRTD.dll
call fcn.004141a0
add esp, 8
mov edi, 0x452c10
mov byte [esp + 0x68], 0x2f
call fcn.00413c20
mov byte [esp + 0x68], 0x2b
mov eax, dword [esp + 0x1c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x412e8e
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [esp + 0x18]
push ecx
mov ecx, 0x446394
call fcn.00413b80
lea edx, [esp + 0x1c]
mov bl, 0x30
push edx
mov ecx, 0x4462a4
mov byte [esp + 0x6c], bl
call fcn.00413b80
push 0x452c10
lea ecx, [esp + 0x1c]
lea edx, [esp + 0x20]
mov byte [esp + 0x6c], 0x31
call fcn.00402640
mov byte [esp + 0x6c], bl
mov eax, dword [esp + 0x20]
add eax, 0xfffffff0
add esp, 4
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x412ef0
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x68], 0x2b
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x412f15
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [esp + 0x10]
push ecx
lea edx, [esp + 0x20]
push edx
mov ebx, str.ExcelAddin64QsExcelWinAddin64.dll
call fcn.004141a0
add esp, 8
mov edi, 0x452c14
mov byte [esp + 0x68], 0x32
call fcn.00413c20
mov byte [esp + 0x68], 0x2b
mov eax, dword [esp + 0x1c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x412f60
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [esp + 0x10]
push ecx
lea edx, [esp + 0x20]
push edx
mov ebx, str.QsExcelWinAddin.dll
call fcn.004141a0
add esp, 8
mov edi, 0x452c18
mov byte [esp + 0x68], 0x33
call fcn.00413c20
mov byte [esp + 0x68], 0x2b
mov eax, dword [esp + 0x1c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x412fab
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [esp + 0x10]
push ecx
lea edx, [esp + 0x20]
push edx
mov ebx, str.ExcelAddin64QsExcelWinComOperator64.dll
call fcn.004141a0
add esp, 8
mov edi, 0x452c1c
mov byte [esp + 0x68], 0x34
call fcn.00413c20
mov byte [esp + 0x68], 0x2b
mov eax, dword [esp + 0x1c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x412ff6
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [esp + 0x10]
push ecx
lea edx, [esp + 0x20]
push edx
mov ebx, str.QsExcelWinComOperator.dll
call fcn.004141a0
add esp, 8
mov edi, 0x452c20
mov byte [esp + 0x68], 0x35
call fcn.00413c20
mov byte [esp + 0x68], 0x2b
mov eax, dword [esp + 0x1c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x413041
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
test byte [0x453d58], 1
jne 0x413072
or dword [0x453d58], 1
mov ebx, 0x452c30
mov byte [esp + 0x68], 0x36
call fcn.0041b190
push 0x4422a0
call fcn.00427096
add esp, 4
mov byte [esp + 0x68], 0x2b
mov edx, dword [0x452c40]
mov eax, dword [edx + 0x1c]
push 2
push 0
mov ecx, 0x452c40
call eax
test al, al
je 0x41315b
test byte [0x453d58], 1
jne 0x4130bf
or dword [0x453d58], 1
mov ebx, 0x452c30
mov byte [esp + 0x68], 0x37
call fcn.0041b190
push 0x4422a0
call fcn.00427096
add esp, 4
mov byte [esp + 0x68], 0x2b
mov edx, dword [0x452c40]
mov eax, dword [edx + 0x6c]
push 2
push 0
mov ecx, 0x452c40
call eax
mov edi, eax
mov esi, dword [edi + 0x20]
mov eax, 0xa000
sub eax, esi
lea esi, [esi + edi + 0x24]
add eax, esi
mov ebx, 0x14
sub eax, esi
mov ecx, esi
cmp eax, ebx
jae 0x4130f8
mov ebx, eax
test eax, eax
je 0x41310a
push ebx
push str.WriteExcelQtAddinReg
push esi
call fcn.0042aac0
add esp, 0xc
lea ecx, [ebx + esi]
sub ecx, esi
add dword [edi + 0x20], ecx
test byte [0x453d58], 1
jne 0x413140
or dword [0x453d58], 1
mov ebx, 0x452c30
mov byte [esp + 0x68], 0x38
call fcn.0041b190
push 0x4422a0
call fcn.00427096
add esp, 4
mov byte [esp + 0x68], 0x2b
mov edx, dword [0x452c40]
mov eax, dword [edx + 0x20]
push 0x1528
push str.ChoiceHelper.cpp
push edi
mov ecx, 0x452c40
call eax
call fcn.0040a9a0
test byte [0x453d58], 1
jne 0x413191
or dword [0x453d58], 1
mov ebx, 0x452c30
mov byte [esp + 0x68], 0x39
call fcn.0041b190
push 0x4422a0
call fcn.00427096
add esp, 4
mov byte [esp + 0x68], 0x2b
mov edx, dword [0x452c40]
mov eax, dword [edx + 0x1c]
push 2
push 0
mov ecx, 0x452c40
call eax
test al, al
je 0x41327a
test byte [0x453d58], 1
jne 0x4131de
or dword [0x453d58], 1
mov ebx, 0x452c30
mov byte [esp + 0x68], 0x3a
call fcn.0041b190
push 0x4422a0
call fcn.00427096
add esp, 4
mov byte [esp + 0x68], 0x2b
mov edx, dword [0x452c40]
mov eax, dword [edx + 0x6c]
push 2
push 0
mov ecx, 0x452c40
call eax
mov edi, eax
mov esi, dword [edi + 0x20]
mov eax, 0xa000
sub eax, esi
lea esi, [esi + edi + 0x24]
add eax, esi
mov ebx, 0x12
sub eax, esi
mov ecx, esi
cmp eax, ebx
jae 0x413217
mov ebx, eax
test eax, eax
je 0x413229
push ebx
push str.WriteWpsQtAddinReg
push esi
call fcn.0042aac0
add esp, 0xc
lea ecx, [ebx + esi]
sub ecx, esi
add dword [edi + 0x20], ecx
test byte [0x453d58], 1
jne 0x41325f
or dword [0x453d58], 1
mov ebx, 0x452c30
mov byte [esp + 0x68], 0x3b
call fcn.0041b190
push 0x4422a0
call fcn.00427096
add esp, 4
mov byte [esp + 0x68], 0x2b
mov edx, dword [0x452c40]
mov eax, dword [edx + 0x20]
push 0x152a
push str.ChoiceHelper.cpp
push edi
mov ecx, 0x452c40
call eax
call fcn.0040d010
call fcn.0040f3f0
call fcn.0040f5b0
call fcn.00410640
test byte [0x453d58], 1
jne 0x4132bf
or dword [0x453d58], 1
mov ebx, 0x452c30
mov byte [esp + 0x68], 0x3c
call fcn.0041b190
push 0x4422a0
call fcn.00427096
add esp, 4
mov byte [esp + 0x68], 0x2b
mov edx, dword [0x452c40]
mov eax, dword [edx + 0x1c]
push 2
push 0
mov ecx, 0x452c40
call eax
test al, al
je 0x4133a8
test byte [0x453d58], 1
jne 0x41330c
or dword [0x453d58], 1
mov ebx, 0x452c30
mov byte [esp + 0x68], 0x3d
call fcn.0041b190
push 0x4422a0
call fcn.00427096
add esp, 4
mov byte [esp + 0x68], 0x2b
mov edx, dword [0x452c40]
mov eax, dword [edx + 0x6c]
push 2
push 0
mov ecx, 0x452c40
call eax
mov edi, eax
mov esi, dword [edi + 0x20]
mov eax, 0xa000
sub eax, esi
lea esi, [esi + edi + 0x24]
add eax, esi
mov ebx, 0x12
sub eax, esi
mov ecx, esi
cmp eax, ebx
jae 0x413345
mov ebx, eax
test eax, eax
je 0x413357
push ebx
push str.end_register_addin
push esi
call fcn.0042aac0
add esp, 0xc
lea ecx, [esi + ebx]
sub ecx, esi
add dword [edi + 0x20], ecx
test byte [0x453d58], 1
jne 0x41338d
or dword [0x453d58], 1
mov ebx, 0x452c30
mov byte [esp + 0x68], 0x3e
call fcn.0041b190
push 0x4422a0
call fcn.00427096
add esp, 4
mov byte [esp + 0x68], 0x2b
mov edx, dword [0x452c40]
mov eax, dword [edx + 0x20]
push 0x152f
push str.ChoiceHelper.cpp
push edi
mov ecx, 0x452c40
call eax
test byte [0x453d58], 1
jne 0x4133d9
or dword [0x453d58], 1
mov ebx, 0x452c30
mov byte [esp + 0x68], 0x3f
call fcn.0041b190
push 0x4422a0
call fcn.00427096
add esp, 4
mov byte [esp + 0x68], 0x2b
mov edx, dword [0x452c40]
mov eax, dword [edx + 0x1c]
push 2
push 0
mov ecx, 0x452c40
call eax
test al, al
je 0x4134c2
test byte [0x453d58], 1
jne 0x413426
or dword [0x453d58], 1
mov ebx, 0x452c30
mov byte [esp + 0x68], 0x40
call fcn.0041b190
push 0x4422a0
call fcn.00427096
add esp, 4
mov byte [esp + 0x68], 0x2b
mov edx, dword [0x452c40]
mov eax, dword [edx + 0x6c]
push 2
push 0
mov ecx, 0x452c40
call eax
mov edi, eax
mov esi, dword [edi + 0x20]
mov eax, 0xa000
sub eax, esi
lea esi, [esi + edi + 0x24]
add eax, esi
mov ebx, 0xb
sub eax, esi
mov ecx, esi
cmp eax, ebx
jae 0x41345f
mov ebx, eax
test eax, eax
je 0x413471
push ebx
push str.ChangeLinks
push esi
call fcn.0042aac0
add esp, 0xc
lea ecx, [esi + ebx]
sub ecx, esi
add dword [edi + 0x20], ecx
test byte [0x453d58], 1
jne 0x4134a7
or dword [0x453d58], 1
mov ebx, 0x452c30
mov byte [esp + 0x68], 0x41
call fcn.0041b190
push 0x4422a0
call fcn.00427096
add esp, 4
mov byte [esp + 0x68], 0x2b
mov edx, dword [0x452c40]
mov eax, dword [edx + 0x20]
push 0x1532
push str.ChoiceHelper.cpp
push edi
mov ecx, 0x452c40
call eax
call fcn.00406b50
test byte [0x453d58], 1
jne 0x4134f8
or dword [0x453d58], 1
mov ebx, 0x452c30
mov byte [esp + 0x68], 0x42
call fcn.0041b190
push 0x4422a0
call fcn.00427096
add esp, 4
mov byte [esp + 0x68], 0x2b
mov edx, dword [0x452c40]
mov eax, dword [edx + 0x1c]
push 2
push 0
mov ecx, 0x452c40
call eax
test al, al
je 0x4135e1
test byte [0x453d58], 1
jne 0x413545
or dword [0x453d58], 1
mov ebx, 0x452c30
mov byte [esp + 0x68], 0x43
call fcn.0041b190
push 0x4422a0
call fcn.00427096
add esp, 4
mov byte [esp + 0x68], 0x2b
mov edx, dword [0x452c40]
mov eax, dword [edx + 0x6c]
push 2
push 0
mov ecx, 0x452c40
call eax
mov edi, eax
mov esi, dword [edi + 0x20]
mov eax, 0xa000
sub eax, esi
lea esi, [esi + edi + 0x24]
add eax, esi
mov ebx, 0x10
sub eax, esi
mov ecx, esi
cmp eax, ebx
jae 0x41357e
mov ebx, eax
test eax, eax
je 0x413590
push ebx
push str.WriteQtChoiceReg
push esi
call fcn.0042aac0
add esp, 0xc
lea ecx, [ebx + esi]
sub ecx, esi
add dword [edi + 0x20], ecx
test byte [0x453d58], 1
jne 0x4135c6
or dword [0x453d58], 1
mov ebx, 0x452c30
mov byte [esp + 0x68], 0x44
call fcn.0041b190
push 0x4422a0
call fcn.00427096
add esp, 4
mov byte [esp + 0x68], 0x2b
mov edx, dword [0x452c40]
mov eax, dword [edx + 0x20]
push 0x1534
push str.ChoiceHelper.cpp
push edi
mov ecx, 0x452c40
call eax
call fcn.004109a0
test byte [0x453d58], 1
jne 0x413617
or dword [0x453d58], 1
mov ebx, 0x452c30
mov byte [esp + 0x68], 0x45
call fcn.0041b190
push 0x4422a0
call fcn.00427096
add esp, 4
mov byte [esp + 0x68], 0x2b
mov edx, dword [0x452c40]
mov eax, dword [edx + 0x1c]
push 2
push 0
mov ecx, 0x452c40
call eax
test al, al
je 0x413700
test byte [0x453d58], 1
jne 0x413664
or dword [0x453d58], 1
mov ebx, 0x452c30
mov byte [esp + 0x68], 0x46
call fcn.0041b190
push 0x4422a0
call fcn.00427096
add esp, 4
mov byte [esp + 0x68], 0x2b
mov edx, dword [0x452c40]
mov eax, dword [edx + 0x6c]
push 2
push 0
mov ecx, 0x452c40
call eax
mov edi, eax
mov esi, dword [edi + 0x20]
mov eax, 0xa000
sub eax, esi
lea esi, [esi + edi + 0x24]
add eax, esi
mov ebx, 0xf
sub eax, esi
mov ecx, esi
cmp eax, ebx
jae 0x41369d
mov ebx, eax
test eax, eax
je 0x4136af
push ebx
push str.AddinExtraThing
push esi
call fcn.0042aac0
add esp, 0xc
lea ecx, [ebx + esi]
sub ecx, esi
add dword [edi + 0x20], ecx
test byte [0x453d58], 1
jne 0x4136e5
or dword [0x453d58], 1
mov ebx, 0x452c30
mov byte [esp + 0x68], 0x47
call fcn.0041b190
push 0x4422a0
call fcn.00427096
add esp, 4
mov byte [esp + 0x68], 0x2b
mov edx, dword [0x452c40]
mov eax, dword [edx + 0x20]
push 0x1539
push str.ChoiceHelper.cpp
push edi
mov ecx, 0x452c40
call eax
call fcn.00410e30
test byte [0x453d58], 1
jne 0x413736
or dword [0x453d58], 1
mov ebx, 0x452c30
mov byte [esp + 0x68], 0x48
call fcn.0041b190
push 0x4422a0
call fcn.00427096
add esp, 4
mov byte [esp + 0x68], 0x2b
mov edx, dword [0x452c40]
mov eax, dword [edx + 0x1c]
push 2
push 0
mov ecx, 0x452c40
call eax
test al, al
je 0x41381f
test byte [0x453d58], 1
jne 0x413783
or dword [0x453d58], 1
mov ebx, 0x452c30
mov byte [esp + 0x68], 0x49
call fcn.0041b190
push 0x4422a0
call fcn.00427096
add esp, 4
mov byte [esp + 0x68], 0x2b
mov edx, dword [0x452c40]
mov eax, dword [edx + 0x6c]
push 2
push 0
mov ecx, 0x452c40
call eax
mov edi, eax
mov esi, dword [edi + 0x20]
mov eax, 0xa000
sub eax, esi
lea esi, [esi + edi + 0x24]
add eax, esi
mov ebx, 0x1b
sub eax, esi
mov ecx, esi
cmp eax, ebx
jae 0x4137bc
mov ebx, eax
test eax, eax
je 0x4137ce
push ebx
push str.DeleteFile_ChoiceHelper.dat
push esi
call fcn.0042aac0
add esp, 0xc
lea ecx, [ebx + esi]
sub ecx, esi
add dword [edi + 0x20], ecx
test byte [0x453d58], 1
jne 0x413804
or dword [0x453d58], 1
mov ebx, 0x452c30
mov byte [esp + 0x68], 0x4a
call fcn.0041b190
push 0x4422a0
call fcn.00427096
add esp, 4
mov byte [esp + 0x68], 0x2b
mov edx, dword [0x452c40]
mov eax, dword [edx + 0x20]
push 0x153c
push str.ChoiceHelper.cpp
push edi
mov ecx, 0x452c40
call eax
mov ecx, dword [esp + 0x14]
push ecx
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
test byte [0x453d58], 1
jne 0x41385b
or dword [0x453d58], 1
mov ebx, 0x452c30
mov byte [esp + 0x68], 0x4b
call fcn.0041b190
push 0x4422a0
call fcn.00427096
add esp, 4
mov byte [esp + 0x68], 0x2b
mov edx, dword [0x452c40]
mov eax, dword [edx + 0x1c]
push 2
push 0
mov ecx, 0x452c40
call eax
test al, al
je 0x413944
test byte [0x453d58], 1
jne 0x4138a8
or dword [0x453d58], 1
mov ebx, 0x452c30
mov byte [esp + 0x68], 0x4c
call fcn.0041b190
push 0x4422a0
call fcn.00427096
add esp, 4
mov byte [esp + 0x68], 0x2b
mov edx, dword [0x452c40]
mov eax, dword [edx + 0x6c]
push 2
push 0
mov ecx, 0x452c40
call eax
mov edi, eax
mov esi, dword [edi + 0x20]
mov eax, 0xa000
sub eax, esi
lea esi, [esi + edi + 0x24]
add eax, esi
mov ebx, 0x22
sub eax, esi
mov ecx, esi
cmp eax, ebx
jae 0x4138e1
mov ebx, eax
test eax, eax
je 0x4138f3
push ebx
push str.ShellExecute_open_ChoiceLoader.exe
push esi
call fcn.0042aac0
add esp, 0xc
lea ecx, [ebx + esi]
sub ecx, esi
add dword [edi + 0x20], ecx
test byte [0x453d58], 1
jne 0x413929
or dword [0x453d58], 1
mov ebx, 0x452c30
mov byte [esp + 0x68], 0x4d
call fcn.0041b190
push 0x4422a0
call fcn.00427096
add esp, 4
mov byte [esp + 0x68], 0x2b
mov edx, dword [0x452c40]
mov eax, dword [edx + 0x20]
push 0x1540
push str.ChoiceHelper.cpp
push edi
mov ecx, 0x452c40
call eax
lea esi, [esp + 0x1c]
call fcn.00402300
push eax
lea ecx, [esp + 0x24]
push ecx
mov ebx, str.ChoiceLoader.exe
mov byte [esp + 0x70], 0x4e
call fcn.004141a0
add esp, 8
mov byte [esp + 0x68], 0x50
mov eax, dword [esp + 0x1c]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x41398a
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [esp + 0x20]
push 1
push 0
push ecx
push str.explorer.exe
push str.Open
push 0
call dword [sym.imp.SHELL32.dll_ShellExecuteW]
test byte [0x453d58], 1
jne 0x4139d6
or dword [0x453d58], 1
mov ebx, 0x452c30
mov byte [esp + 0x68], 0x51
call fcn.0041b190
push 0x4422a0
call fcn.00427096
add esp, 4
mov byte [esp + 0x68], 0x50
mov edx, dword [0x452c40]
mov eax, dword [edx + 0x1c]
push 2
push 0
mov ecx, 0x452c40
call eax
test al, al
je 0x413abf
test byte [0x453d58], 1
jne 0x413a23
or dword [0x453d58], 1
mov ebx, 0x452c30
mov byte [esp + 0x68], 0x52
call fcn.0041b190
push 0x4422a0
call fcn.00427096
add esp, 4
mov byte [esp + 0x68], 0x50
mov edx, dword [0x452c40]
mov eax, dword [edx + 0x6c]
push 2
push 0
mov ecx, 0x452c40
call eax
mov edi, eax
mov esi, dword [edi + 0x20]
mov eax, 0xa000
sub eax, esi
lea esi, [esi + edi + 0x24]
add eax, esi
mov ebx, 0x1e
sub eax, esi
mov ecx, esi
cmp eax, ebx
jae 0x413a5c
mov ebx, eax
test eax, eax
je 0x413a6e
push ebx
push str.ChoiceHelper.exe_end__quit_me.
push esi
call fcn.0042aac0
add esp, 0xc
lea ecx, [ebx + esi]
sub ecx, esi
add dword [edi + 0x20], ecx
test byte [0x453d58], 1
jne 0x413aa4
or dword [0x453d58], 1
mov ebx, 0x452c30
mov byte [esp + 0x68], 0x53
call fcn.0041b190
push 0x4422a0
call fcn.00427096
add esp, 4
mov byte [esp + 0x68], 0x50
mov edx, dword [0x452c40]
mov eax, dword [edx + 0x20]
push 0x1547
push str.ChoiceHelper.cpp
push edi
mov ecx, 0x452c40
call eax
mov byte [esp + 0x68], 0x2b
mov eax, dword [esp + 0x20]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x413ae4
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x68], 0xc
mov eax, dword [esp + 0x10]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x413b09
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x24]
test eax, eax
je 0x413b18
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov dword [esp + 0x68], 0xffffffff
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x413b40
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, 1
mov ecx, dword [esp + 0x60]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret