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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x5237e65
mov eax, dword fs:[0]
push eax
sub esp, 0xd8
mov eax, dword [0x53f3c3c]
xor eax, esp
mov dword [esp + 0xd0], eax
push ebx
push esi
push edi
mov eax, dword [0x53f3c3c]
xor eax, esp
push eax
lea eax, [esp + 0xe8]
mov dword fs:[0], eax
mov esi, dword [ebp + 8]
mov edi, dword [ebp + 0xc]
mov ebx, dword [ebp + 0x10]
mov dword [esp + 0x10], esi
mov dword [esp + 0x18], edi
mov dword [esp + 0x14], ebx
test esi, esi
je 0x5008a91
test edi, edi
je 0x5008a91
test ebx, ebx
je 0x5008a91
lea ecx, [esi + 0x104]
mov eax, edi
lea esp, [esp]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x5008a50
test dl, dl
je 0x5008a4c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x5008a50
add eax, 2
add ecx, 2
test dl, dl
jne 0x5008a30
xor eax, eax
jmp 0x5008a55
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x5008a68
mov eax, ebx
call fcn.0500ed00
test eax, eax
jne 0x5008eef
push edi
push esi
call fcn.0500c260
mov ebx, eax
add esp, 8
test ebx, ebx
jne 0x5008a98
push edi
push str.Error:__s_is_not_a_type_n
call dword [sym.imp.MSVCR90.dll___iob_func]
add eax, 0x40
push eax
call dword [sym.imp.MSVCR90.dll_fprintf]
add esp, 0xc
xor eax, eax
jmp 0x5008eef
mov eax, dword [ebx + 0x24]
cmp eax, 6
je 0x5008aad
cmp eax, 7
je 0x5008aad
push edi
push str.Error:__s_is_not_a_struct_union_n
jmp 0x5008a7e
mov eax, dword [esp + 0x14]
push eax
lea ecx, [esp + 0x90]
call dword [sym.imp.MSVCP90.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::constructor_char_const__]
lea ecx, [esp + 0x8c]
push ecx
lea ecx, [esp + 0x74]
mov dword [esp + 0xf4], 0
call dword [sym.imp.MSVCP90.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::constructor_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char___const__]
push 0
push 0x2e
lea ecx, [esp + 0x94]
mov byte [esp + 0xf8], 1
call dword [sym.imp.MSVCP90.dll_public:_unsigned_int___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::find_first_of_char__unsigned_int_const]
mov edx, dword [sym.imp.MSVCP90.dll_unsigned_int_const_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::npos]
mov esi, eax
mov dword [esp + 0x38], esi
cmp esi, dword [edx]
je 0x5008b8c
push esi
push 0
lea eax, [esp + 0x5c]
push eax
lea ecx, [esp + 0x98]
call dword [sym.imp.MSVCP90.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__::substr_unsigned_int__unsigned_int_]
push eax
lea ecx, [esp + 0x74]
mov byte [esp + 0xf4], 2
call dword [0x523a2b0]
lea ecx, [esp + 0x54]
mov byte [esp + 0xf0], 1
call dword [sym.imp.MSVCP90.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
mov ecx, dword [esp + 0xa0]
sub ecx, esi
dec ecx
push ecx
lea edx, [esi + 1]
push edx
lea eax, [esp + 0x5c]
push eax
lea ecx, [esp + 0x98]
call dword [sym.imp.MSVCP90.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__::substr_unsigned_int__unsigned_int_]
push eax
lea ecx, [esp + 0x90]
mov byte [esp + 0xf4], 3
call dword [0x523a2b0]
lea ecx, [esp + 0x54]
mov byte [esp + 0xf0], 1
call dword [sym.imp.MSVCP90.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
lea ecx, [esp + 0x1c]
push ecx
call fcn.05009730
mov byte [esp + 0xf0], 4
mov eax, dword [esp + 0x74]
mov edi, 0x10
cmp dword [esp + 0x88], edi
jae 0x5008bb4
lea eax, [esp + 0x74]
lea edx, [esp + 0x1c]
push edx
push eax
lea ecx, [esp + 0x78]
call fcn.05007f20
add esp, 8
cmp eax, 1
jl 0x5008c18
mov ecx, dword [esp + 0x74]
cmp dword [esp + 0x88], edi
jae 0x5008bdc
lea ecx, [esp + 0x74]
mov eax, ebx
call fcn.050075a0
mov ebx, eax
test ebx, ebx
jne 0x5008c52
mov eax, dword [esp + 0x74]
cmp dword [esp + 0x88], edi
jae 0x5008bfa
lea eax, [esp + 0x74]
mov ecx, dword [esp + 0x18]
push ecx
push eax
push str.Error:_There_is_no_field__s__in_struct__s__n
call dword [sym.imp.MSVCR90.dll___iob_func]
add eax, 0x40
push eax
call dword [sym.imp.MSVCR90.dll_fprintf]
add esp, 0x10
lea esi, [esp + 0x1c]
call fcn.050076f0
lea ecx, [esp + 0x70]
mov byte [esp + 0xf0], 0
call dword [sym.imp.MSVCP90.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
lea ecx, [esp + 0x8c]
mov dword [esp + 0xf0], 0xffffffff
call dword [sym.imp.MSVCP90.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
xor eax, eax
jmp 0x5008eef
mov edx, dword [ebx]
mov eax, dword [edx + 0x28]
mov ecx, ebx
call eax
mov edx, dword [ebx]
mov eax, dword [edx + 0x20]
mov ecx, ebx
call eax
mov edx, dword [ebx]
mov eax, dword [edx + 0x50]
mov ecx, ebx
call eax
push eax
lea ecx, [esp + 0xc8]
call dword [sym.imp.MSVCP90.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::constructor_char_const__]
mov byte [esp + 0xf0], 5
mov edx, dword [ebx]
mov eax, dword [edx + 0x48]
mov ecx, ebx
call eax
push eax
lea ecx, [esp + 0xac]
call dword [sym.imp.MSVCP90.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::constructor_char_const__]
mov byte [esp + 0xf0], 6
mov edx, dword [ebx]
mov edx, dword [edx + 0x34]
lea eax, [esp + 0x3c]
push eax
mov ecx, ebx
call edx
mov byte [esp + 0xf0], 7
mov ecx, dword [esp + 0x2c]
mov edi, dword [esp + 0x4c]
mov edx, dword [esp + 0x28]
sub edi, dword [esp + 0x48]
mov eax, ecx
sub eax, edx
sar eax, 2
sar edi, 2
cmp eax, edi
je 0x5008d3b
test eax, eax
je 0x5008d2a
push str.Error:_array_dimension_doesnt_match__n
call dword [sym.imp.MSVCR90.dll___iob_func]
add eax, 0x40
push eax
call dword [sym.imp.MSVCR90.dll_fprintf]
add esp, 8
lea esi, [esp + 0x3c]
call fcn.050076f0
lea ecx, [esp + 0xa8]
mov byte [esp + 0xf0], 5
call dword [sym.imp.MSVCP90.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
lea ecx, [esp + 0xc4]
mov byte [esp + 0xf0], 4
call dword [sym.imp.MSVCP90.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
jmp 0x5008c18
mov edi, dword [sym.imp.MSVCP90.dll_unsigned_int_const_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::npos]
cmp esi, dword [edi]
je 0x5008d3b
push str.Error:_The_array_dimension_of_the_parent_should_be_defined__n
jmp 0x5008cdf
xor edi, edi
test eax, eax
jle 0x5008d79
lea esi, [esp + 0x3c]
call fcn.05009790
lea esi, [esp + 0x1c]
mov dword [esp + 0x34], eax
call fcn.05009790
mov eax, dword [eax]
mov ecx, dword [esp + 0x34]
cmp eax, dword [ecx]
jge 0x5008dd1
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x28]
mov eax, ecx
sub eax, edx
inc edi
sar eax, 2
cmp edi, eax
jl 0x5008d41
mov esi, dword [esp + 0x38]
mov eax, dword [sym.imp.MSVCP90.dll_unsigned_int_const_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::npos]
cmp esi, dword [eax]
je 0x5008e31
mov ecx, dword [esp + 0x90]
mov eax, 0x10
cmp dword [esp + 0xa4], eax
jae 0x5008da2
lea ecx, [esp + 0x90]
cmp dword [esp + 0xc0], eax
mov eax, dword [esp + 0xac]
jae 0x5008db9
lea eax, [esp + 0xac]
push 0
push 0
push ecx
mov ecx, dword [esp + 0x1c]
push eax
push ecx
call fcn.050089c0
add esp, 0x14
jmp 0x5008e6e
mov ecx, dword [esp + 0x4c]
sub ecx, dword [esp + 0x48]
sar ecx, 2
cmp edi, ecx
jb 0x5008de6
call dword [sym.imp.MSVCR90.dll__invalid_parameter_noinfo]
mov eax, dword [esp + 0x2c]
sub eax, dword [esp + 0x28]
mov edx, dword [esp + 0x48]
sar eax, 2
lea esi, [edi*4]
lea ebx, [esi + edx]
cmp edi, eax
jb 0x5008e09
call dword [sym.imp.MSVCR90.dll__invalid_parameter_noinfo]
mov ecx, dword [ebx]
mov edx, dword [esp + 0x28]
mov eax, dword [esi + edx]
push ecx
push eax
push str.Error:_The_array_index__d__is_out_of_bound__d___n
call dword [sym.imp.MSVCR90.dll___iob_func]
add eax, 0x40
push eax
call dword [sym.imp.MSVCR90.dll_fprintf]
add esp, 0x10
jmp 0x5008cf2
sub ecx, edx
sar ecx, 2
test ecx, ecx
jbe 0x5008e70
cmp dword [esp + 0xbc], 0
jbe 0x5008e70
cmp dword [esp + 0xc0], 0x10
mov eax, dword [esp + 0xac]
jae 0x5008e5c
lea eax, [esp + 0xac]
mov edx, dword [esp + 0x10]
push eax
push edx
call fcn.0500c260
add esp, 8
test eax, eax
je 0x5008e70
mov ebx, eax
test ebx, ebx
je 0x5008e87
mov eax, dword [esp + 0x14]
mov esi, dword [esp + 0x10]
push ebx
push eax
mov eax, dword [esp + 0x20]
call fcn.0500ed40
lea esi, [esp + 0x3c]
call fcn.050076f0
lea ecx, [esp + 0xa8]
mov byte [esp + 0xf0], 5
call dword [sym.imp.MSVCP90.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
lea ecx, [esp + 0xc4]
mov byte [esp + 0xf0], 4
call dword [sym.imp.MSVCP90.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
lea esi, [esp + 0x1c]
call fcn.050076f0
lea ecx, [esp + 0x70]
mov byte [esp + 0xf0], 0
call dword [sym.imp.MSVCP90.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
lea ecx, [esp + 0x8c]
mov dword [esp + 0xf0], 0xffffffff
call dword [sym.imp.MSVCP90.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
mov eax, ebx
mov ecx, dword [esp + 0xe8]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0xd0]
xor ecx, esp
call fcn.0520b902
mov esp, ebp
pop ebp
ret