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

Disassembly:
mov eax, 0x430fe8
call fcn.00430710
sub esp, 0x40
push ebx
push esi
push edi
mov edi, ecx
xor ebx, ebx
push 0xffffffffffffffff
mov dword [ebp - 0x1c], edi
mov dword [ebp - 0x18], ebx
call dword [sym.imp.USER32.dll_IsCharAlphaA]
mov word [0x43ac8a], ax
xor eax, eax
cmp byte [0x43ac7c], bl
setne al
mov word [0x43ac92], ax
cmp dword [edi + 0xa0], ebx
je 0x404b5f
movsx ecx, byte [0x43ac7d]
or ecx, 0xe0afffff
push 0x6a2bffff
movsx eax, ax
mov dword [0x43acb0], ecx
mov ecx, dword [0x43aca8]
lea eax, [ecx + eax - 0x21d40001]
mov dword [0x43aca8], eax
movsx eax, word [0x43ac82]
push eax
call fcn.0040b0ac
mov byte [0x43ac7b], al
lea eax, [ebp - 0x3c]
push 4
push eax
call fcn.00422e98
movsx eax, byte [0x43ac7a]
push 1
pop esi
push 0x8a5bffff
push eax
mov dword [ebp - 4], esi
call fcn.0040af32
add esp, 0x18
mov word [0x43ac92], ax
call dword [sym.imp.KERNEL32.dll_GetCommandLineA]
mov dword [0x43acb8], eax
movsx eax, word [0x43ac88]
push eax
movsx eax, byte [0x43ac79]
push eax
call fcn.0040b002
push dword [ebp + 0xc]
mov word [0x43ac86], ax
lea eax, [ebp - 0x2c]
push eax
call fcn.004056b4
add esp, 0x10
mov ecx, dword [sym.imp.MSVCP60.dll_unsigned_int_const_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::npos]
mov byte [ebp - 4], 2
push dword [ecx]
lea ecx, [ebp - 0x3c]
push ebx
push eax
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char______thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::append_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char___const___unsigned_int__unsigned_int_]
push esi
lea ecx, [ebp - 0x2c]
mov byte [ebp - 4], 1
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
or ax, 0xffff
dec word [0x43ac8a]
sub ax, word [0x43ac88]
push 0xda8bffff
mov dword [ebp - 0x10], ebx
mov word [0x43ac94], ax
movsx eax, byte [0x43ac81]
push eax
call fcn.0040b0ac
mov byte [0x43ac7e], al
push 0x9a8dffff
movsx eax, word [0x43ac88]
push eax
call fcn.0040aeeb
add dword [0x43ac98], eax
mov eax, dword [ebp - 0x38]
add esp, 0x10
cmp eax, ebx
jne 0x404961
mov eax, dword [sym.imp.MSVCP60.dll_char_const__private:_static_char_const____cdecl_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Nullstr_void_::_2::_C]
lea ecx, [ebp - 0x10]
push ecx
lea ecx, [ebp - 0x14]
push ebx
push ecx
push ebx
push eax
push dword [edi + 0xa0]
push 0x14
call fcn.0040f588
pop ecx
call eax
test eax, eax
jne 0x404b50
cmp dword [ebp - 0x14], esi
jne 0x404b50
cmp dword [0x43aca0], ebx
setne al
add byte [0x43ac78], al
mov eax, dword [ebp - 0x10]
inc eax
push eax
call sub.MSVCRT.dll_void____cdecl_operator_new_unsigned_int_
mov edi, eax
mov dword [esp], 0x6d8bffff
push 0xbf07ffff
mov dword [ebp + 0xc], edi
call fcn.0040b0ac
add word [0x43ac82], ax
movsx eax, word [0x43ac88]
push eax
push 0x66d5ffff
call fcn.0040b087
add byte [0x43ac81], al
mov eax, dword [ebp - 0x38]
add esp, 0x10
cmp eax, ebx
jne 0x4049ea
mov eax, dword [sym.imp.MSVCP60.dll_char_const__private:_static_char_const____cdecl_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Nullstr_void_::_2::_C]
lea ecx, [ebp - 0x10]
push ecx
lea ecx, [ebp - 0x14]
push edi
push ecx
push ebx
push eax
mov eax, dword [ebp - 0x1c]
push dword [eax + 0xa0]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
test eax, eax
jne 0x404b33
movsx eax, byte [0x43ac79]
push 0x8975ffff
push eax
call fcn.0040b0ac
mov byte [0x43ac81], al
push 0x6b9dffff
movsx eax, byte [0x43ac7c]
push eax
call fcn.0040b087
add byte [0x43ac79], al
movsx eax, word [0x43ac8c]
push eax
push 0x8ce3ffff
call fcn.0040afcb
mov word [0x43ac92], ax
mov eax, dword [ebp - 0x10]
add esp, 0x18
lea ecx, [ebp - 0x2c]
mov byte [edi + eax], bl
mov al, byte [ebp + 0xb]
push ebx
mov byte [ebp - 0x2c], al
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
push edi
call sub.MSVCRT.dll_strlen
pop ecx
push eax
push edi
lea ecx, [ebp - 0x2c]
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char______thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::assign_char_const___unsigned_int_]
cmp word [0x43ac82], bx
mov di, word [0x43ac94]
mov byte [ebp - 4], 3
jne 0x404a9b
cmp di, bx
jne 0x404a9b
xor eax, eax
jmp 0x404a9d
mov eax, esi
add byte [0x43ac7a], al
movsx eax, di
push eax
movsx eax, word [0x43ac88]
push eax
call fcn.0040b0ac
add byte [0x43ac7c], al
movsx eax, word [0x43ac90]
push eax
push 0x662dffff
call fcn.0040b037
add byte [0x43ac7a], al
push 0xb22fffff
push 0x5355ffff
call fcn.0040b002
push dword [ebp + 0xc]
mov byte [0x43ac7d], al
call fcn.00430672
mov edi, dword [ebp + 8]
mov al, byte [ebp - 0x2c]
add esp, 0x1c
mov ecx, edi
mov byte [edi], al
push ebx
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
mov eax, dword [sym.imp.MSVCP60.dll_unsigned_int_const_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::npos]
mov ecx, edi
push dword [eax]
lea eax, [ebp - 0x2c]
push ebx
push eax
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char______thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::assign_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char___const___unsigned_int__unsigned_int_]
mov dword [ebp - 0x18], esi
push esi
lea ecx, [ebp - 0x2c]
mov byte [ebp - 4], 1
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
mov byte [ebp - 4], bl
push esi
lea ecx, [ebp - 0x3c]
jmp 0x404bee
push 0x3cc9ffff
push 0x284fffff
call fcn.0040af32
push edi
mov dword [0x43acb0], eax
call fcn.00430672
add esp, 0xc
push esi
lea ecx, [ebp - 0x3c]
mov byte [ebp - 4], bl
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
jmp 0x404b62
push 1
pop esi
movsx eax, byte [0x43ac7d]
push eax
push 0x4ee3ffff
call fcn.0040afcb
mov byte [0x43ac81], al
push 0xcecfffff
movsx eax, byte [0x43ac7b]
push eax
call fcn.0040b002
add esp, 0x10
inc word [0x43ac82]
mov dword [0x43ac9c], eax
mov al, byte [ebp + 0xb]
push ebx
lea ecx, [ebp - 0x4c]
mov byte [ebp - 0x4c], al
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
push dword [ebp + 0x10]
lea eax, [ebp - 0x4c]
mov dword [ebp - 4], 4
push eax
call fcn.0040c1ad
mov edi, dword [ebp + 8]
mov al, byte [ebp - 0x4c]
pop ecx
pop ecx
mov byte [edi], al
push ebx
mov ecx, edi
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
mov eax, dword [sym.imp.MSVCP60.dll_unsigned_int_const_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::npos]
mov ecx, edi
push dword [eax]
lea eax, [ebp - 0x4c]
push ebx
push eax
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char______thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::assign_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char___const___unsigned_int__unsigned_int_]
mov dword [ebp - 0x18], esi
mov byte [ebp - 4], bl
push esi
lea ecx, [ebp - 0x4c]
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
mov ecx, dword [ebp - 0xc]
mov eax, edi
pop edi
pop esi
pop ebx
mov dword fs:[0], ecx
leave
ret 0xc