Function at 0x401a64
Capabilities:
Accept command line arguments
Query or enumerate registry value

Disassembly:
push ebp
sub esp, 0xe4
lea ebp, [esp - 4]
mov eax, dword [0x47cbc0]
xor eax, ebp
mov dword [ebp + 0xe4], eax
push 0x58
mov eax, 0x45fec1
call fcn.00440100
mov eax, dword [ebp + 0xf4]
xor ebx, ebx
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x24], ebx
mov dword [ebp - 0x14], ebx
lea eax, [ebp - 0x18]
push eax
push 1
push ebx
mov dword [ebp - 4], ebx
mov esi, dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
push str.SoftwareLexmark
mov edi, reloc.OLEAUT32.dll_SysReAllocString
push edi
mov dword [ebp - 0x2c], 4
call esi
test eax, eax
jne case.default.0x401aee
lea eax, [ebp - 0x2c]
push eax
lea eax, [ebp - 0x20]
push eax
push ebx
push ebx
push str.FuuRetCode
push dword [ebp - 0x18]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
cmp eax, ebx
jne case.default.0x401aee
push dword [ebp - 0x18]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, dword [ebp - 0x20]
cmp eax, 0xb
ja case.default.0x401aee
jmp dword [eax*4 + 0x402104]
xor eax, eax
jmp 0x4020df
xor eax, eax
inc eax
jmp 0x4020df
push 2
pop eax
jmp 0x4020df
lea eax, [ebp - 0x18]
push eax
push 1
push ebx
push str.SoftwareDell
push edi
call esi
cmp eax, ebx
jne case.default.0x401b4c
lea eax, [ebp - 0x2c]
push eax
lea eax, [ebp - 0x20]
push eax
push ebx
push ebx
push str.FuuRetCode
push dword [ebp - 0x18]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
cmp eax, ebx
jne case.default.0x401b4c
push dword [ebp - 0x18]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, dword [ebp - 0x20]
cmp eax, 0xb
ja case.default.0x401b4c
jmp dword [eax*4 + 0x402134]
lea eax, [ebp - 0x14]
push eax
call fcn.00401108
mov byte [ebp - 4], 1
call fcn.00401926
push dword [0x46273c]
mov esi, 0x47e098
push esi
mov ecx, eax
call fcn.0041c2d6
cmp al, bl
je 0x401b94
call fcn.00401926
mov edx, dword [eax]
push str.Beginning_FUU_execution...
push dword [0x46273c]
mov ecx, eax
push esi
call dword [edx + 8]
mov dword [ebp - 4], ebx
jmp 0x401bb4
push ebx
call dword [sym.imp.KERNEL32.dll_GetCommandLineW]
push eax
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
push eax
call fcn.00423a0f
test eax, eax
jne 0x401be5
push str.Fatal_Error:_MFC_initialization_failed_n
call fcn.0043f81c
pop ecx
mov dword [ebp - 0x24], 1
jmp 0x402035
lea ecx, [ebp]
call fcn.00420c0a
push ebx
lea ecx, [ebp + 0xc8]
mov dword [ebp + 0xe0], 7
call fcn.0040171f
push dword [ebp - 0x28]
lea ecx, [ebp]
push dword [ebp + 0xf0]
mov byte [ebp - 4], 4
call fcn.0041fa48
lea ecx, [ebp]
call fcn.0041f48f
cmp eax, 2
je 0x401c33
call dword [sym.imp.KERNEL32.dll_GetConsoleWindow]
push ebx
push eax
call dword [sym.imp.USER32.dll_ShowWindow]
push 0x3ed886
push 0x1b7f4d
lea ecx, [ebp + 0x40]
call fcn.0041e900
lea eax, [ebp - 0x48]
push eax
lea ecx, [ebp + 0x40]
call fcn.0041d0a5
push 0xffffffffffffffff
push ebx
push eax
lea ecx, [ebp + 0xc8]
mov byte [ebp - 4], 5
call fcn.00401480
push ebx
push 1
lea ecx, [ebp - 0x48]
mov byte [ebp - 4], 4
call fcn.00401537
push str.config.ini
lea ecx, [ebp + 0xc8]
call fcn.004013bd
sub esp, 0x1c
lea eax, [ebp + 0xc8]
mov ecx, esp
mov dword [ebp - 0x28], esp
push eax
call fcn.0040138d
lea ecx, [ebp]
call fcn.00420f0c
lea eax, [ebp - 0x1c]
push eax
lea eax, [ebp]
push eax
call fcn.004205c2
mov edi, eax
pop ecx
pop ecx
cmp edi, ebx
jne 0x401d80
mov byte [ebp - 4], 6
call fcn.00401926
push dword [0x46273c]
mov ecx, eax
push esi
call fcn.0041c2d6
cmp al, bl
je 0x401d2a
push str.Error_creating_update_mode:_rc
lea ecx, [ebp - 0x64]
call fcn.0041f1ed
mov byte [ebp - 4], 7
push dword [ebp - 0x1c]
mov ecx, eax
call fcn.0041efba
lea ecx, [ebp - 0x48]
push ecx
mov ecx, eax
call fcn.0041f062
mov byte [ebp - 4], 8
call fcn.00401926
mov edx, dword [eax]
lea ecx, [ebp - 0x48]
push ecx
push dword [0x46273c]
mov ecx, eax
push esi
call dword [edx + 4]
push ebx
push 1
lea ecx, [ebp - 0x48]
call fcn.00401537
push ebx
push 1
lea ecx, [ebp - 0x64]
call fcn.00401537
mov dword [ebp - 4], 4
jmp 0x401d4f
push ebx
push 1
lea ecx, [ebp + 0xc8]
call fcn.00401537
lea ecx, [ebp]
mov byte [ebp - 4], bl
call fcn.00421e87
or dword [ebp - 4], 0xffffffff
mov ecx, dword [ebp - 0x14]
cmp ecx, ebx
je case.0x401b4c.4
mov eax, dword [ecx]
push 1
call dword [eax]
push 4
jmp 0x401b06
mov eax, dword [edi]
lea ecx, [ebp]
push ecx
push edi
call dword [eax + 4]
mov dword [ebp - 0x1c], eax
cmp eax, ebx
je 0x401df9
mov byte [ebp - 4], 0xa
call fcn.00401926
push dword [0x46273c]
mov ecx, eax
push esi
call fcn.0041c2d6
cmp al, bl
je 0x401d2a
push str.Error_initializng_update_mode:_rc
lea ecx, [ebp - 0x64]
call fcn.0041f1ed
mov byte [ebp - 4], 0xb
push dword [ebp - 0x1c]
mov ecx, eax
call fcn.0041efba
lea ecx, [ebp - 0x48]
push ecx
mov ecx, eax
call fcn.0041f062
mov byte [ebp - 4], 0xc
jmp 0x401cfd
mov eax, dword [edi]
lea ecx, [ebp]
push ecx
push edi
call dword [eax + 8]
mov dword [ebp - 0x1c], eax
cmp eax, ebx
je 0x402008
cmp eax, 0x11
jg 0x401f2a
je 0x401ef9
sub eax, 0xb
je 0x401ec8
dec eax
je 0x401e97
dec eax
je 0x401e66
sub eax, 3
jne 0x401d4f
push ebx
push 1
lea ecx, [ebp + 0xc8]
call fcn.00401537
lea ecx, [ebp]
mov byte [ebp - 4], bl
call fcn.00421e87
or dword [ebp - 4], 0xffffffff
mov ecx, dword [ebp - 0x14]
cmp ecx, ebx
je case.0x401b4c.7
mov eax, dword [ecx]
push 1
call dword [eax]
push 7
jmp 0x401b06
push ebx
push 1
lea ecx, [ebp + 0xc8]
call fcn.00401537
lea ecx, [ebp]
mov byte [ebp - 4], bl
call fcn.00421e87
or dword [ebp - 4], 0xffffffff
mov ecx, dword [ebp - 0x14]
cmp ecx, ebx
je case.0x401b4c.11
mov eax, dword [ecx]
push 1
call dword [eax]
push 0xb
jmp 0x401b06
push ebx
push 1
lea ecx, [ebp + 0xc8]
call fcn.00401537
lea ecx, [ebp]
mov byte [ebp - 4], bl
call fcn.00421e87
or dword [ebp - 4], 0xffffffff
mov ecx, dword [ebp - 0x14]
cmp ecx, ebx
je case.0x401b4c.6
mov eax, dword [ecx]
push 1
call dword [eax]
push 6
jmp 0x401b06
push ebx
push 1
lea ecx, [ebp + 0xc8]
call fcn.00401537
lea ecx, [ebp]
mov byte [ebp - 4], bl
call fcn.00421e87
or dword [ebp - 4], 0xffffffff
mov ecx, dword [ebp - 0x14]
cmp ecx, ebx
je case.0x401b4c.5
mov eax, dword [ecx]
push 1
call dword [eax]
push 5
jmp 0x401b06
push ebx
push 1
lea ecx, [ebp + 0xc8]
call fcn.00401537
lea ecx, [ebp]
mov byte [ebp - 4], bl
call fcn.00421e87
or dword [ebp - 4], 0xffffffff
mov ecx, dword [ebp - 0x14]
cmp ecx, ebx
je case.0x401b4c.8
mov eax, dword [ecx]
push 1
call dword [eax]
push 8
jmp 0x401b06
sub eax, 0x12
je 0x401fd7
dec eax
je 0x401fa6
sub eax, 5
je 0x401f73
dec eax
jne 0x401d4f
push ebx
push 1
lea ecx, [ebp + 0xc8]
call fcn.00401537
lea ecx, [ebp]
mov byte [ebp - 4], bl
call fcn.00421e87
or dword [ebp - 4], 0xffffffff
mov ecx, dword [ebp - 0x14]
cmp ecx, ebx
je case.0x401b4c.9
mov eax, dword [ecx]
push 1
call dword [eax]
push 9
jmp 0x401b06
push ebx
push 1
lea ecx, [ebp + 0xc8]
call fcn.00401537
lea ecx, [ebp]
mov byte [ebp - 4], bl
call fcn.00421e87
or dword [ebp - 4], 0xffffffff
mov ecx, dword [ebp - 0x14]
cmp ecx, ebx
je case.0x401b4c.2
mov eax, dword [ecx]
push 1
call dword [eax]
jmp case.0x401b4c.2
push ebx
push 1
lea ecx, [ebp + 0xc8]
call fcn.00401537
lea ecx, [ebp]
mov byte [ebp - 4], bl
call fcn.00421e87
or dword [ebp - 4], 0xffffffff
mov ecx, dword [ebp - 0x14]
cmp ecx, ebx
je case.0x401b4c.10
mov eax, dword [ecx]
push 1
call dword [eax]
push 0xa
jmp 0x401b06
push ebx
push 1
lea ecx, [ebp + 0xc8]
call fcn.00401537
lea ecx, [ebp]
mov byte [ebp - 4], bl
call fcn.00421e87
or dword [ebp - 4], 0xffffffff
mov ecx, dword [ebp - 0x14]
cmp ecx, ebx
je case.0x401b4c.3
mov eax, dword [ecx]
push 1
call dword [eax]
push 3
jmp 0x401b06
lea eax, [ebp]
push eax
push edi
call fcn.004208bd
pop ecx
pop ecx
push ebx
lea ecx, [ebp + 0xc8]
push 1
test eax, eax
je 0x401d58
call fcn.00401537
lea ecx, [ebp]
mov byte [ebp - 4], bl
call fcn.00421e87
mov byte [ebp - 4], 0xe
call fcn.00401926
push dword [0x46273c]
mov ecx, eax
push esi
call fcn.0041c2d6
cmp al, bl
je 0x402068
call fcn.00401926
mov edx, dword [eax]
push str.FUU_execution_complete
push dword [0x46273c]
mov ecx, eax
push esi
call dword [edx + 8]
mov dword [ebp - 4], ebx
jmp 0x402088
mov byte [ebp - 4], 0x10
call fcn.00401926
push dword [0x46273c]
mov ecx, eax
push esi
call fcn.0041c2d6
cmp al, bl
je 0x4020cb
call fcn.00401926
mov edx, dword [eax]
push 0x46b080
push dword [0x46273c]
mov ecx, eax
push esi
call dword [edx + 8]
jmp 0x4020cb
or dword [ebp - 4], 0xffffffff
mov ecx, dword [ebp - 0x14]
cmp ecx, ebx
je 0x4020dc
mov eax, dword [ecx]
push 1
call dword [eax]
mov eax, dword [ebp - 0x24]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp + 0xe4]
xor ecx, ebp
call fcn.0043f432
add ebp, 0xe8
leave
ret