Function at 0x417090
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push 0xffffffffffffffff
push 0x434834
mov eax, dword fs:[0]
push eax
sub esp, 0x144
mov eax, dword [0x45da50]
xor eax, esp
mov dword [esp + 0x140], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x45da50]
xor eax, esp
push eax
lea eax, [esp + 0x158]
mov dword fs:[0], eax
mov ecx, dword [esp + 0x168]
mov ebx, dword [esp + 0x16c]
mov ebp, dword [esp + 0x170]
xor esi, esi
mov dword [esp + 0x160], esi
mov dword [esp + 0x24], ecx
mov dword [esp + 0x30], ebx
mov dword [esp + 0x3c], esi
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::constructor_void_]
mov dword [esp + 0x160], esi
mov dword [esp + 0x3c], 1
call fcn.0040e050
mov byte [esp + 0x17], al
mov eax, dword [ebx + 4]
mov eax, dword [eax]
mov esi, ebx
test esi, esi
mov edi, dword [ebx + 4]
mov dword [esp + 0x2c], eax
je 0x417129
cmp esi, ebx
je 0x417133
mov ebx, dword [sym.imp.MSVCR80.dll__invalid_parameter_noinfo]
call ebx
jmp 0x417139
mov ebx, dword [sym.imp.MSVCR80.dll__invalid_parameter_noinfo]
cmp dword [esp + 0x2c], edi
je 0x41769f
test esi, esi
jne 0x417149
call ebx
mov eax, dword [esp + 0x2c]
cmp eax, dword [esi + 4]
jne 0x417154
call ebx
mov eax, dword [esp + 0x2c]
add eax, 8
push eax
lea ecx, [esp + 0x13c]
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::constructor_class_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int___const__]
lea ecx, [esp + 0x18]
mov dword [esp + 0x160], 1
call fcn.00406e40
mov dword [esp + 0x1c], eax
mov dword [esp + 0x20], 0
push 1
push str..msi
lea ecx, [esp + 0x20]
push ecx
lea edx, [esp + 0x144]
push edx
mov byte [esp + 0x170], 2
call fcn.0040a150
mov eax, dword [esp + 0x1c]
mov eax, dword [eax]
lea ecx, [esp + 0x18]
mov dword [esp + 0x34], ecx
mov edi, eax
lea ebx, [ebx]
test ecx, ecx
mov esi, dword [esp + 0x1c]
je 0x4171d0
lea edx, [esp + 0x18]
cmp ecx, edx
je 0x4171d6
call ebx
mov ecx, dword [esp + 0x34]
cmp edi, esi
je 0x41761c
test ecx, ecx
jne 0x4171e8
call ebx
mov ecx, dword [esp + 0x34]
cmp edi, dword [ecx + 4]
jne 0x4171ef
call ebx
lea eax, [edi + 8]
push eax
lea ecx, [esp + 0x104]
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::constructor_class_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int___const__]
cmp byte [esp + 0x17], 0
mov byte [esp + 0x160], 3
je 0x4173ba
push str.CIMOEM64.msi
lea ecx, [esp + 0x44]
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::constructor_unsigned_short_int_const__]
mov eax, dword [esp + 0x104]
mov esi, 8
cmp dword [esp + 0x118], esi
mov byte [esp + 0x160], 4
jae 0x417246
lea eax, [esp + 0x104]
push eax
call fcn.0040aed0
push eax
lea ecx, [esp + 0x120]
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::constructor_unsigned_short_int_const__]
lea eax, [esp + 0x40]
push eax
lea ecx, [esp + 0x120]
push ecx
mov byte [esp + 0x168], 5
call fcn.0040b7c0
test eax, eax
lea ecx, [esp + 0x11c]
sete bl
mov byte [esp + 0x160], 4
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::destructor_void_]
lea ecx, [esp + 0x40]
mov byte [esp + 0x160], 3
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::destructor_void_]
test bl, bl
je 0x417577
push 1
push 3
lea ecx, [esp + 0x80]
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_stringstream_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::constructor_int_]
cmp dword [ebp + 0x18], esi
mov byte [esp + 0x160], 6
jb 0x4172cb
mov eax, dword [ebp + 4]
jmp 0x4172ce
lea eax, [ebp + 4]
push 0x4413f8
push eax
call fcn.0040b780
push eax
lea edx, [esp + 0x88]
push ebp
push edx
call dword [sym.imp.MSVCP80.dll_class_std::basic_ostream_unsigned_short_int__struct_std::char_traits_unsigned_short_int______cdecl_std::operator___unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int___class_std::basic_ostream_unsigned_short_int__struct_std::char_traits_unsigned_short_int_____class_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int___const__]
add esp, 8
push eax
call fcn.00404550
add esp, 8
push eax
call fcn.00404550
add esp, 8
lea eax, [esp + 0x40]
push eax
lea ecx, [esp + 0x7c]
call dword [sym.imp.MSVCP80.dll_public:_class_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int_____thiscall_std::basic_stringstream_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::str_void_]
mov ecx, dword [sym.imp.MSVCP80.dll_unsigned_int_const_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::npos]
mov edx, dword [ecx]
mov eax, dword [eax + 0x14]
mov ecx, dword [esp + 0x114]
push edx
sub ecx, eax
push ecx
lea edx, [esp + 0x124]
push edx
lea ecx, [esp + 0x10c]
mov byte [esp + 0x16c], 7
call dword [sym.imp.MSVCP80.dll_public:_class_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int_____thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::substr_unsigned_int__unsigned_int_]
lea ecx, [esp + 0x40]
mov byte [esp + 0x160], 9
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::destructor_void_]
push 0x43ea48
push 0x43ea44
lea eax, [esp + 0x124]
push eax
call fcn.0040b7e0
lea ecx, [esp + 0x5c]
push ecx
lea ecx, [esp + 0x7c]
call dword [sym.imp.MSVCP80.dll_public:_class_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int_____thiscall_std::basic_stringstream_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::str_void_]
push eax
lea edx, [esp + 0x120]
push edx
mov byte [esp + 0x168], 0xa
call fcn.0040b7c0
test eax, eax
lea ecx, [esp + 0x5c]
sete bl
mov byte [esp + 0x160], 9
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::destructor_void_]
test bl, bl
jne 0x4175ac
mov byte [esp + 0x160], 6
jmp 0x417558
push str.CIMOEM32.msi
lea ecx, [esp + 0x120]
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::constructor_unsigned_short_int_const__]
mov eax, dword [esp + 0x104]
mov esi, 8
cmp dword [esp + 0x118], esi
mov byte [esp + 0x160], 0xb
jae 0x4173f0
lea eax, [esp + 0x104]
push eax
call fcn.0040aed0
push eax
lea ecx, [esp + 0x44]
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::constructor_unsigned_short_int_const__]
lea eax, [esp + 0x11c]
push eax
lea ecx, [esp + 0x44]
push ecx
mov byte [esp + 0x168], 0xc
call fcn.0040b7c0
test eax, eax
lea ecx, [esp + 0x40]
sete bl
mov byte [esp + 0x160], 0xb
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::destructor_void_]
lea ecx, [esp + 0x11c]
mov byte [esp + 0x160], 3
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::destructor_void_]
test bl, bl
je 0x417577
push 1
push 3
lea ecx, [esp + 0x80]
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_stringstream_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::constructor_int_]
cmp dword [ebp + 0x18], esi
mov byte [esp + 0x160], 0xd
jb 0x417472
mov eax, dword [ebp + 4]
jmp 0x417475
lea eax, [ebp + 4]
push 0x4413b4
push eax
call fcn.0040b780
push eax
lea edx, [esp + 0x88]
push ebp
push edx
call dword [sym.imp.MSVCP80.dll_class_std::basic_ostream_unsigned_short_int__struct_std::char_traits_unsigned_short_int______cdecl_std::operator___unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int___class_std::basic_ostream_unsigned_short_int__struct_std::char_traits_unsigned_short_int_____class_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int___const__]
add esp, 8
push eax
call fcn.00404550
add esp, 8
push eax
call fcn.00404550
add esp, 8
lea eax, [esp + 0x5c]
push eax
lea ecx, [esp + 0x7c]
call dword [sym.imp.MSVCP80.dll_public:_class_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int_____thiscall_std::basic_stringstream_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::str_void_]
mov ecx, dword [sym.imp.MSVCP80.dll_unsigned_int_const_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::npos]
mov edx, dword [ecx]
mov eax, dword [eax + 0x14]
mov ecx, dword [esp + 0x114]
push edx
sub ecx, eax
push ecx
lea edx, [esp + 0x124]
push edx
lea ecx, [esp + 0x10c]
mov byte [esp + 0x16c], 0xe
call dword [sym.imp.MSVCP80.dll_public:_class_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int_____thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::substr_unsigned_int__unsigned_int_]
lea ecx, [esp + 0x5c]
mov byte [esp + 0x160], 0x10
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::destructor_void_]
push 0x43ea48
push 0x43ea44
lea eax, [esp + 0x124]
push eax
call fcn.0040b7e0
lea ecx, [esp + 0x40]
push ecx
lea ecx, [esp + 0x7c]
call dword [sym.imp.MSVCP80.dll_public:_class_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int_____thiscall_std::basic_stringstream_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::str_void_]
push eax
lea edx, [esp + 0x120]
push edx
mov byte [esp + 0x168], 0x11
call fcn.0040b7c0
test eax, eax
lea ecx, [esp + 0x40]
sete bl
mov byte [esp + 0x160], 0x10
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::destructor_void_]
test bl, bl
jne 0x4175c8
mov byte [esp + 0x160], 0xd
lea ecx, [esp + 0x11c]
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::destructor_void_]
lea ecx, [esp + 0x78]
mov byte [esp + 0x160], 3
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_stringstream_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::vbase_dtor_void_]
lea ecx, [esp + 0x100]
mov byte [esp + 0x160], 2
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::destructor_void_]
mov eax, dword [esp + 0x34]
cmp edi, dword [eax + 4]
jne 0x41759b
call dword [sym.imp.MSVCR80.dll__invalid_parameter_noinfo]
mov edi, dword [edi]
mov ebx, dword [sym.imp.MSVCR80.dll__invalid_parameter_noinfo]
mov ecx, dword [esp + 0x34]
jmp 0x4171c0
lea ecx, [esp + 0x100]
push ecx
mov ecx, dword [esp + 0x28]
call dword [sym.imp.MSVCP80.dll_public:_class_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int______thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::operator_class_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int___const__]
mov byte [esp + 0x160], 6
jmp 0x4175e2
mov ecx, dword [esp + 0x24]
lea edx, [esp + 0x100]
push edx
call dword [sym.imp.MSVCP80.dll_public:_class_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int______thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::operator_class_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int___const__]
mov byte [esp + 0x160], 0xd
lea ecx, [esp + 0x11c]
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::destructor_void_]
lea ecx, [esp + 0x78]
mov byte [esp + 0x160], 3
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_stringstream_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::vbase_dtor_void_]
lea ecx, [esp + 0x100]
mov byte [esp + 0x160], 2
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::destructor_void_]
mov ebx, dword [sym.imp.MSVCR80.dll__invalid_parameter_noinfo]
mov eax, dword [esp + 0x1c]
mov esi, dword [eax]
mov dword [eax], eax
mov eax, dword [esp + 0x1c]
mov dword [eax + 4], eax
mov eax, dword [esp + 0x1c]
cmp esi, eax
mov byte [esp + 0x160], 1
mov dword [esp + 0x20], 0
je 0x417661
mov edi, dword [esi]
lea ecx, [esi + 8]
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::destructor_void_]
push esi
call sub.MSVCR80.dll_void___cdecl_operator_delete_void__
mov eax, dword [esp + 0x20]
add esp, 4
cmp edi, eax
mov esi, edi
jne 0x417643
push eax
call sub.MSVCR80.dll_void___cdecl_operator_delete_void__
add esp, 4
lea ecx, [esp + 0x138]
mov dword [esp + 0x1c], 0
mov byte [esp + 0x160], 0
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_unsigned_short_int__struct_std::char_traits_unsigned_short_int___class_std::allocator_unsigned_short_int__::destructor_void_]
mov esi, dword [esp + 0x30]
mov edi, dword [esp + 0x2c]
cmp edi, dword [esi + 4]
jne 0x417696
call ebx
mov eax, dword [edi]
mov ebx, esi
jmp 0x41711a
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x158]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x140]
xor ecx, esp
call fcn.00430f9c
add esp, 0x150
ret 0xc