Function at 0x403a36
Capabilities:
Get common file path
Terminate process

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x17c
mov eax, dword [ebp + 8]
push ebx
push esi
push edi
push 1
mov dword [0x415ce4], eax
call fcn.00405d1b
xor ebx, ebx
mov dword [0x415cdc], eax
mov dword [esp], 0x103
lea eax, [esp + 0x85]
push ebx
push eax
mov byte [esp + 0x8c], bl
call fcn.0040a870
add esp, 0xc
lea eax, [esp + 0x80]
push eax
push 0x104
call dword [sym.imp.KERNEL32.dll_GetTempPathA]
push str._quiet
push dword [ebp + 0x10]
call dword [sym.imp.SHLWAPI.dll_StrStrIA]
test eax, eax
setne byte [esp + 0xe]
call fcn.004056b0
mov byte [esp + 0xf], al
cmp al, bl
je 0x403aeb
cmp byte [esp + 0xe], bl
jne 0x403aeb
call dword [sym.imp.SHELL32.dll_IsUserAnAdmin]
test eax, eax
jne 0x403aeb
lea eax, [esp + 0x80]
push eax
call fcn.0040558b
cmp eax, 0x64
je 0x403ae4
push 0x40
push str.Uninstaller
push str.This_application_requires_admin_privileges_to_run._Please_start_the_application_using_administrator_account.
push ebx
call dword [sym.imp.USER32.dll_MessageBoxA]
push ebx
call dword [sym.imp.KERNEL32.dll_ExitProcess]
push 1
call fcn.00405d1b
mov dword [0x415cd8], eax
mov eax, dword [ebp + 0x10]
pop ecx
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x403afe
sub eax, edx
je 0x403b1e
cmp byte [esp + 0xe], bl
jne 0x403b1e
cmp byte [esp + 0xf], bl
je 0x403b1e
push dword [ebp + 0x10]
call fcn.004036bf
pop ecx
call fcn.0040521c
cmp byte [esp + 0xe], bl
je 0x403b36
push 1
call fcn.0040495f
pop ecx
jmp 0x403cb5
mov eax, dword [0x415ce8]
push 0x30
pop edi
push 0x7f00
push ebx
mov dword [esp + 0x2c], edi
mov dword [esp + 0x38], ebx
mov dword [esp + 0x3c], ebx
mov dword [esp + 0x4c], eax
call dword [sym.imp.USER32.dll_LoadCursorA]
mov esi, dword [sym.imp.USER32.dll_LoadIconA]
push 0x69
push dword [0x415ce4]
mov dword [esp + 0x48], eax
call esi
push 0x69
push dword [0x415ce4]
mov dword [esp + 0x44], eax
call esi
mov dword [esp + 0x50], eax
mov eax, dword [0x415ce4]
mov dword [esp + 0x38], eax
lea eax, [esp + 0x24]
push eax
mov dword [esp + 0x30], 0x403cd7
mov dword [esp + 0x50], str.fwremover
mov dword [esp + 0x4c], ebx
mov dword [esp + 0x2c], 3
call dword [sym.imp.USER32.dll_RegisterClassExA]
push ebx
lea eax, [esp + 0x58]
push eax
push ebx
push edi
mov dword [esp + 0x20], ebx
mov dword [esp + 0x24], ebx
mov dword [esp + 0x28], 0x1a4
mov dword [esp + 0x2c], 0x97
call dword [sym.imp.USER32.dll_SystemParametersInfoA]
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x5c]
mov edi, dword [esp + 0x1c]
sub eax, ecx
sub ecx, dword [esp + 0x10]
push ebx
push dword [0x415ce4]
cdq
sub eax, edx
mov esi, eax
mov eax, dword [esp + 0x68]
push ebx
push ebx
sub eax, edi
sub edi, dword [esp + 0x24]
cdq
push edi
push ecx
sub eax, edx
sar eax, 1
push eax
sar esi, 1
push esi
push 0xa0000
push str.Uninstaller
push dword [esp + 0x74]
push 8
call dword [sym.imp.USER32.dll_CreateWindowExA]
mov esi, dword [sym.imp.USER32.dll_GetWindowLongA]
mov edi, eax
push 0xfffffffffffffff0
push edi
call esi
push 0xffffffffffffffec
push edi
mov dword [esp + 0x28], eax
call esi
push eax
push ebx
push dword [esp + 0x28]
lea eax, [esp + 0x1c]
push eax
call dword [sym.imp.USER32.dll_AdjustWindowRectEx]
mov eax, dword [esp + 0x1c]
sub eax, dword [esp + 0x14]
push 0x202
push eax
mov eax, dword [esp + 0x20]
sub eax, dword [esp + 0x18]
push eax
push ebx
push ebx
push ebx
push edi
call dword [sym.imp.USER32.dll_SetWindowPos]
push 5
push edi
call dword [sym.imp.USER32.dll_ShowWindow]
push edi
call dword [sym.imp.USER32.dll_UpdateWindow]
mov esi, dword [sym.imp.USER32.dll_GetMessageA]
jmp 0x403ca7
lea eax, [esp + 0x64]
push eax
push edi
call dword [sym.imp.USER32.dll_IsDialogMessageA]
test eax, eax
jne 0x403ca7
lea eax, [esp + 0x64]
push eax
call dword [sym.imp.USER32.dll_TranslateMessage]
lea eax, [esp + 0x64]
push eax
call dword [sym.imp.USER32.dll_DispatchMessageA]
push ebx
push ebx
push ebx
lea eax, [esp + 0x70]
push eax
call esi
test eax, eax
jne 0x403c81
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret 0x10