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

Disassembly:
push 0xffffffffffffffff
push 0x522d67a
mov eax, dword fs:[0]
push eax
sub esp, 0x18c
mov eax, dword [0x53f3c3c]
xor eax, esp
mov dword [esp + 0x188], eax
push ebx
push ebp
push esi
mov eax, dword [0x53f3c3c]
xor eax, esp
push eax
lea eax, [esp + 0x19c]
mov dword fs:[0], eax
mov eax, dword [esp + 0x1b0]
xor esi, esi
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], esi
lea ebx, [esp + 0x150]
lea ebp, [esi + 1]
push ebp
push str.IMEI_d
push ebx
call dword [sym.imp.MSVCR90.dll_sprintf]
xor eax, eax
mov dword [esp + esi*4 + 0xec], eax
mov dword [esp + esi*4 + 0x4c], eax
mov esi, ebp
add esp, 0xc
add ebx, 7
cmp esi, 0xa
jl 0x5155962
lea ecx, [esp + 0x28]
push ecx
push 0x1388
push edi
call sym.META_DLL.dll_META_MISC_GetIMEIRecNum_r
test eax, eax
je 0x5155a0c
push str._ERROR:
push 0xff
push 0xaf2
push str..FunctionPlatformMETA_misc.cpp
lea ecx, [esp + 0x134]
call fcn.051ae270
mov esi, eax
mov dword [esp + 0x1a4], 0
push edi
mov ecx, 0x53f4cc8
call fcn.05065960
mov eax, dword [eax + 8]
push edi
push str.__d__in_SetIMEIToTarget__:_META_MISC_GetIMEIRecNum_r_failed
push eax
push esi
call fcn.051ae2d0
add esp, 0x10
mov dword [esp + 0x1a4], 0xffffffff
lea ecx, [esp + 0x124]
call fcn.051ae2c0
mov eax, 1
jmp 0x515620e
push edi
mov ecx, 0x53f4cc8
call fcn.05065960
mov esi, eax
mov ebp, dword [esi + 0xd3fc]
add esi, 0xd3f0
cmp ebp, dword [esi + 0x10]
jbe 0x5155a30
call dword [sym.imp.MSVCR90.dll__invalid_parameter_noinfo]
mov ebx, dword [esi]
mov dword [esp + 0x10], ebx
mov dword [esp + 0x14], ebp
lea ebx, [ebx]
push edi
mov ecx, 0x53f4cc8
call fcn.05065960
mov esi, eax
mov ebp, dword [esi + 0xd400]
add esi, 0xd3f0
cmp dword [esi + 0xc], ebp
jbe 0x5155a64
call dword [sym.imp.MSVCR90.dll__invalid_parameter_noinfo]
mov esi, dword [esi]
test ebx, ebx
je 0x5155a6e
cmp ebx, esi
je 0x5155a74
call dword [sym.imp.MSVCR90.dll__invalid_parameter_noinfo]
cmp dword [esp + 0x14], ebp
je 0x5156189
push 0x52c722a
lea ecx, [esp + 0x10c]
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 dword [esp + 0x1a4], 1
test ebx, ebx
jne 0x5155b2e
call dword [sym.imp.MSVCR90.dll__invalid_parameter_noinfo]
xor eax, eax
mov esi, dword [esp + 0x14]
cmp esi, dword [eax + 0x10]
jb 0x5155aba
call dword [sym.imp.MSVCR90.dll__invalid_parameter_noinfo]
cmp byte [esi], 4
jne 0x51560c5
mov eax, dword [esp + 0x10]
test eax, eax
jne 0x5155b35
call dword [sym.imp.MSVCR90.dll__invalid_parameter_noinfo]
xor eax, eax
mov edx, dword [esp + 0x14]
cmp edx, dword [eax + 0x10]
jb 0x5155ae2
call dword [sym.imp.MSVCR90.dll__invalid_parameter_noinfo]
mov ebx, dword [esp + 0x14]
add ebx, 0x20
push ebx
lea ecx, [esp + 0x10c]
call dword [0x523a2b0]
xor esi, esi
lea ebp, [esp + 0x150]
mov eax, dword [esp + 0x10]
test eax, eax
jne 0x5155b39
call dword [sym.imp.MSVCR90.dll__invalid_parameter_noinfo]
xor eax, eax
mov ecx, dword [esp + 0x14]
cmp ecx, dword [eax + 0x10]
jb 0x5155b23
call dword [sym.imp.MSVCR90.dll__invalid_parameter_noinfo]
mov ecx, dword [esp + 0x14]
cmp dword [ecx + 0x1c], 0x10
jb 0x5155b3d
mov eax, dword [ecx + 8]
jmp 0x5155b40
mov eax, dword [ebx]
jmp 0x5155aab
mov eax, dword [eax]
jmp 0x5155ad3
mov eax, dword [eax]
jmp 0x5155b10
lea eax, [ecx + 8]
push 5
push ebp
push eax
call dword [sym.imp.MSVCR90.dll_strncmp]
add esp, 0xc
test eax, eax
je 0x5155b5c
inc esi
add ebp, 7
cmp esi, 0xa
jle 0x5155b00
jmp 0x5155b98
mov eax, dword [esp + 0x10]
test eax, eax
jne 0x5155b86
call dword [sym.imp.MSVCR90.dll__invalid_parameter_noinfo]
xor eax, eax
mov ecx, dword [esp + 0x14]
cmp ecx, dword [eax + 0x10]
jb 0x5155b7b
call dword [sym.imp.MSVCR90.dll__invalid_parameter_noinfo]
cmp dword [ebx + 0x18], 0x10
jb 0x5155b8a
mov eax, dword [ebx + 4]
jmp 0x5155b8d
mov eax, dword [eax]
jmp 0x5155b6c
lea eax, [ebx + 4]
inc dword [esp + 0x24]
mov dword [esp + esi*4 + 0xe0], eax
movzx edx, word [esp + 0x28]
cmp esi, edx
jge 0x5155f4d
lea ebp, [esi + 1]
push ebp
lea eax, [esp + 0x13c]
push eax
push 0x1388
push edi
call fcn.05153a80
test eax, eax
jne 0x5156111
cmp dword [esp + 0x120], 0x10
mov dword [esp + 0x124], eax
mov dword [esp + 0x128], eax
mov dword [esp + 0x12c], eax
mov dword [esp + 0x130], eax
mov eax, dword [esp + 0x10c]
jae 0x5155bf8
lea eax, [esp + 0x10c]
push 0x10
push eax
lea ecx, [esp + 0x12c]
push ecx
call dword [sym.imp.MSVCR90.dll_strncpy]
mov al, byte [esp + 0x13e]
add esp, 0xc
cmp al, 0x30
jl 0x5155c1b
cmp al, 0x39
jle 0x5155c23
mov byte [esp + 0x132], 0
mov dl, byte [esp + 0x140]
lea eax, [esp + 0x18]
push eax
lea ecx, [esp + 0x128]
mov byte [esp + 0x13a], dl
mov edx, dword [esp + 0x1b0]
push ecx
push edx
push edi
mov word [esp + 0x144], bp
call sym.META_DLL.dll_META_MISC_SetIMEIValue_r
test eax, eax
je 0x5155ed8
push str._ERROR:
push 0xff
cmp eax, 0x21
jne 0x5155d2a
push 0xb28
push str..FunctionPlatformMETA_misc.cpp
lea ecx, [esp + 0x8c]
call fcn.051ae270
mov ebx, eax
mov byte [esp + 0x1a4], 3
cmp dword [esp + 0x120], 0x10
jb 0x5155ca6
mov eax, dword [esp + 0x10c]
mov dword [esp + 0x1c], eax
jmp 0x5155cb1
lea ecx, [esp + 0x10c]
mov dword [esp + 0x1c], ecx
mov eax, dword [esp + 0x10]
test eax, eax
jne 0x5155cdf
call dword [sym.imp.MSVCR90.dll__invalid_parameter_noinfo]
xor eax, eax
mov ebp, dword [esp + 0x14]
cmp ebp, dword [eax + 0x10]
jb 0x5155cd0
call dword [sym.imp.MSVCR90.dll__invalid_parameter_noinfo]
cmp dword [ebp + 0x1c], 0x10
jb 0x5155ce3
mov edx, dword [esp + 0x14]
mov ebp, dword [edx + 8]
jmp 0x5155cea
mov eax, dword [eax]
jmp 0x5155cc1
mov ebp, dword [esp + 0x14]
add ebp, 8
push edi
mov ecx, 0x53f4cc8
call fcn.05065960
mov ecx, dword [esp + 0x1c]
mov eax, dword [eax + 8]
push ecx
push ebp
push edi
push str.__d__in_SetIMEIToTarget___META_MISC_SetIMEIValue_r_failed__:_ini_file_configuration_error__IMEI_check_digit_error_Key__Value__s___s_
push eax
push ebx
call fcn.051ae2d0
add esp, 0x18
mov byte [esp + 0x1a4], 1
lea ecx, [esp + 0x7c]
call fcn.051ae2c0
mov edx, dword [str.IMEI_Check_Digit_Error]
jmp 0x51560c1
cmp eax, 0xa
jne 0x5155df1
push 0xb30
push str..FunctionPlatformMETA_misc.cpp
lea ecx, [esp + 0xb4]
call fcn.051ae270
mov ebx, eax
mov byte [esp + 0x1a4], 4
cmp dword [esp + 0x120], 0x10
jb 0x5155d6a
mov eax, dword [esp + 0x10c]
mov dword [esp + 0x1c], eax
jmp 0x5155d75
lea ecx, [esp + 0x10c]
mov dword [esp + 0x1c], ecx
mov eax, dword [esp + 0x10]
test eax, eax
jne 0x5155da3
call dword [sym.imp.MSVCR90.dll__invalid_parameter_noinfo]
xor eax, eax
mov ebp, dword [esp + 0x14]
cmp ebp, dword [eax + 0x10]
jb 0x5155d94
call dword [sym.imp.MSVCR90.dll__invalid_parameter_noinfo]
cmp dword [ebp + 0x1c], 0x10
jb 0x5155da7
mov edx, dword [esp + 0x14]
mov ebp, dword [edx + 8]
jmp 0x5155dae
mov eax, dword [eax]
jmp 0x5155d85
mov ebp, dword [esp + 0x14]
add ebp, 8
push edi
mov ecx, 0x53f4cc8
call fcn.05065960
mov ecx, dword [esp + 0x1c]
mov eax, dword [eax + 8]
push ecx
push ebp
push edi
push str.__d__in_SetIMEIToTarget___META_MISC_SetIMEIValue_r___invalid_arguments:_ini_file_configuration_error__invalid_argument_Key__Value__s___s_
push eax
push ebx
call fcn.051ae2d0
add esp, 0x18
mov byte [esp + 0x1a4], 1
lea ecx, [esp + 0xa4]
call fcn.051ae2c0
mov edx, dword [str.Invalid_IMEI]
jmp 0x51560c1
cmp eax, 1
jne 0x5155e69
push 0xb38
push str..FunctionPlatformMETA_misc.cpp
lea ecx, [esp + 0x78]
call fcn.051ae270
mov ebp, eax
mov byte [esp + 0x1a4], 5
push edi
mov ecx, 0x53f4cc8
call fcn.05065960
mov ecx, dword [esp + 0x20]
mov edx, dword [ecx + 0xc]
movzx ecx, word [esp + 0x18]
mov eax, dword [eax + 8]
push edx
push ecx
lea edx, [esi + 1]
push edx
push edi
push str.__d__in_SetIMEIToTarget___META_MISC_SetIMEIValue_r___failed:_callback_imei_progress_record_index:_d_err_code:_d_callback_function_pointer:_x
push eax
push ebp
call fcn.051ae2d0
add esp, 0x1c
mov byte [esp + 0x1a4], 1
lea ecx, [esp + 0x68]
call fcn.051ae2c0
movzx eax, word [esp + 0x18]
mov ecx, dword [eax*4 + 0x53f1e50]
mov dword [esp + esi*4 + 0x40], ecx
jmp 0x51560c5
push 0xb3e
push str..FunctionPlatformMETA_misc.cpp
lea ecx, [esp + 0xc8]
call fcn.051ae270
mov ebp, eax
mov byte [esp + 0x1a4], 6
push edi
mov ecx, 0x53f4cc8
call fcn.05065960
mov edx, dword [esp + 0x20]
mov ecx, dword [edx + 0xc]
movzx edx, word [esp + 0x18]
mov eax, dword [eax + 8]
push ecx
push edx
lea ecx, [esi + 1]
push ecx
push edi
push str.__d__in_SetIMEIToTarget___META_MISC_SetIMEIValue_r___failed:_callback_imei_progress_record_index:_d_err_code:_d_callback_function_pointer:_x
push eax
push ebp
call fcn.051ae2d0
add esp, 0x1c
mov byte [esp + 0x1a4], 1
lea ecx, [esp + 0xb8]
call fcn.051ae2c0
mov edx, dword [str.Single_bank_NOR_flash_is_busy]
jmp 0x51560c1
push 0x52c722a
push 1
push 0xb45
push str..FunctionPlatformMETA_misc.cpp
lea ecx, [esp + 0xdc]
call fcn.051ae270
mov ebp, eax
mov byte [esp + 0x1a4], 7
push edi
mov ecx, 0x53f4cc8
call fcn.05065960
movzx ecx, word [esp + 0x18]
mov eax, dword [eax + 8]
push ecx
lea edx, [esp + 0x128]
push edx
push edi
push str.__d__in_SetIMEIToTarget___META_MISC_SetIMEIValue_r___success:_IMEI:__s__Record_Number:__d
push eax
push ebp
call fcn.051ae2d0
add esp, 0x18
mov byte [esp + 0x1a4], 1
lea ecx, [esp + 0xcc]
call fcn.051ae2c0
mov eax, dword [str.Set_IMEI_OK]
mov dword [esp + esi*4 + 0x40], eax
jmp 0x51560c5
push str._ERROR:
push 0xff
cmp esi, 0xa
jne 0x515600a
push 0xb4f
push str..FunctionPlatformMETA_misc.cpp
lea ecx, [esp + 0xa0]
call fcn.051ae270
mov ebp, eax
mov byte [esp + 0x1a4], 8
cmp dword [esp + 0x120], 0x10
mov ebx, dword [esp + 0x10c]
jae 0x5155f98
lea ebx, [esp + 0x10c]
mov eax, dword [esp + 0x10]
test eax, eax
jne 0x5155fc6
call dword [sym.imp.MSVCR90.dll__invalid_parameter_noinfo]
xor eax, eax
mov esi, dword [esp + 0x14]
cmp esi, dword [eax + 0x10]
jb 0x5155fb7
call dword [sym.imp.MSVCR90.dll__invalid_parameter_noinfo]
cmp dword [esi + 0x1c], 0x10
jb 0x5155fca
mov ecx, dword [esp + 0x14]
mov esi, dword [ecx + 8]
jmp 0x5155fd1
mov eax, dword [eax]
jmp 0x5155fa8
mov esi, dword [esp + 0x14]
add esi, 8
push edi
mov ecx, 0x53f4cc8
call fcn.05065960
mov eax, dword [eax + 8]
push ebx
push esi
push edi
push str.__d__SetIMEIToTarget:_ini_file_configuration_error__Not_Supported_Key_Value_pair__Key__Value__s___s_
push eax
push ebp
call fcn.051ae2d0
add esp, 0x18
mov byte [esp + 0x1a4], 1
lea ecx, [esp + 0x90]
call fcn.051ae2c0
jmp 0x51560c5
push 0xb57
push str..FunctionPlatformMETA_misc.cpp
lea ecx, [esp + 0x3c]
call fcn.051ae270
mov ebx, eax
mov byte [esp + 0x1a4], 9
cmp dword [esp + 0x120], 0x10
jb 0x515603e
mov edx, dword [esp + 0x10c]
mov dword [esp + 0x1c], edx
jmp 0x5156049
lea eax, [esp + 0x10c]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x10]
test eax, eax
jne 0x5156077
call dword [sym.imp.MSVCR90.dll__invalid_parameter_noinfo]
xor eax, eax
mov ebp, dword [esp + 0x14]
cmp ebp, dword [eax + 0x10]
jb 0x5156068
call dword [sym.imp.MSVCR90.dll__invalid_parameter_noinfo]
cmp dword [ebp + 0x1c], 0x10
jb 0x515607b
mov ecx, dword [esp + 0x14]
mov ebp, dword [ecx + 8]
jmp 0x5156082
mov eax, dword [eax]
jmp 0x5156059
mov ebp, dword [esp + 0x14]
add ebp, 8
push edi
mov ecx, 0x53f4cc8
call fcn.05065960
mov edx, dword [esp + 0x1c]
mov eax, dword [eax + 8]
push edx
push ebp
lea ecx, [esi + 1]
push ecx
push edi
push str.__d__SetIMEIToTarget:_ini_file_configuration_error__Target_does_not_support_IMEI_d__Key__Value__s___s_
push eax
push ebx
call fcn.051ae2d0
add esp, 0x1c
mov byte [esp + 0x1a4], 1
lea ecx, [esp + 0x2c]
call fcn.051ae2c0
mov edx, dword [str.Requested_IMEI_Record_Number_Exceeds_Limit_on_Target]
mov dword [esp + esi*4 + 0x40], edx
mov dword [esp + 0x1a4], 0xffffffff
lea ecx, [esp + 0x108]
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, dword [esp + 0x10]
test eax, eax
jne 0x515610d
call dword [sym.imp.MSVCR90.dll__invalid_parameter_noinfo]
xor eax, eax
mov ecx, dword [esp + 0x14]
cmp ecx, dword [eax + 0x10]
jb 0x51560fc
call dword [sym.imp.MSVCR90.dll__invalid_parameter_noinfo]
add dword [esp + 0x14], 0x98
mov ebx, dword [esp + 0x10]
jmp 0x5155a40
mov eax, dword [eax]
jmp 0x51560ed
push str._ERROR:
push 0xff
push 0xb16
push str..FunctionPlatformMETA_misc.cpp
lea ecx, [esp + 0x3c]
call fcn.051ae270
mov esi, eax
mov byte [esp + 0x1a4], 2
push edi
mov ecx, 0x53f4cc8
call fcn.05065960
mov eax, dword [eax + 8]
push edi
push str.__d__in_SetIMEIToTarget__:_GetIMEIValue_failed
push eax
push esi
call fcn.051ae2d0
add esp, 0x10
mov byte [esp + 0x1a4], 1
lea ecx, [esp + 0x2c]
call fcn.051ae2c0
mov dword [esp + 0x1a4], 0xffffffff
lea ecx, [esp + 0x108]
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, 0x36
jmp 0x515620e
mov edx, dword [esp + 0x20]
cmp dword [edx + 0xc], 0
je 0x515620a
push 0x52c722a
push 1
push 0xb62
push str..FunctionPlatformMETA_misc.cpp
lea ecx, [esp + 0x3c]
call fcn.051ae270
mov esi, eax
mov dword [esp + 0x1a4], 0xa
push edi
mov ecx, 0x53f4cc8
call fcn.05065960
mov eax, dword [eax + 8]
push 0xa
push edi
push str.__d__SetIMEIToTarget:_flashtool_callback__supports_max__d_IMEIs.
push eax
push esi
call fcn.051ae2d0
add esp, 0x14
mov dword [esp + 0x1a4], 0xffffffff
lea ecx, [esp + 0x2c]
call fcn.051ae2c0
mov eax, dword [esp + 0x20]
mov ecx, dword [eax + 0x10]
push ecx
lea edx, [esp + 0xe4]
push edx
mov edx, dword [eax + 0xc]
lea ecx, [esp + 0x48]
push ecx
push 0xa
call edx
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x19c]
mov dword fs:[0], ecx
pop ecx
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x188]
xor ecx, esp
call fcn.0520b902
add esp, 0x198
ret