Function at 0x4025b0
Capabilities:
Check for time delay via queryperformancecounter
Delete file
Move file
Read file on windows
Resolve function by parsing pe exports
Write file on windows

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
mov eax, 0x2154
call fcn.00405a50
mov eax, dword [0x409004]
xor eax, esp
mov dword [esp + 0x2150], eax
mov eax, dword [ebp + 0xc]
xor ecx, ecx
push ebx
push esi
mov esi, dword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll_signal]
xorps xmm0, xmm0
push edi
mov dword [esp + 0x4c], eax
xor edi, edi
or eax, 0xffffffff
mov dword [esp + 0xa8], ecx
push 0x4024e0
push 2
mov dword [esp + 0x40], ecx
mov dword [esp + 0x24], eax
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x18], ecx
mov dword [esp + 0x5c], ecx
mov dword [esp + 0x68], ecx
mov dword [esp + 0xa8], ecx
mov dword [esp + 0x90], ecx
movlpd qword [esp + 0xa0], xmm0
movlpd qword [esp + 0xd0], xmm0
movlpd qword [esp + 0xd8], xmm0
call esi
push 0x4024e0
push 0xf
call esi
mov ebx, 1
add esp, 0x10
cmp dword [ebp + 8], ebx
jle 0x404d16
nop word [eax + eax]
mov eax, dword [esp + 0x4c]
mov ecx, 0x406afc
mov esi, dword [eax + ebx*4]
mov eax, esi
nop
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x402690
test dl, dl
je 0x40268c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x402690
add eax, 2
add ecx, 2
test dl, dl
jne 0x402670
xor eax, eax
jmp 0x402695
sbb eax, eax
or eax, 1
test eax, eax
je 0x40284f
mov ecx, str.__debug
mov eax, esi
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x4026c4
test dl, dl
je 0x4026c0
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x4026c4
add eax, 2
add ecx, 2
test dl, dl
jne 0x4026a4
xor eax, eax
jmp 0x4026c9
sbb eax, eax
or eax, 1
test eax, eax
je 0x40284f
mov ecx, 0x406b08
mov eax, esi
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x4026f8
test dl, dl
je 0x4026f4
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x4026f8
add eax, 2
add ecx, 2
test dl, dl
jne 0x4026d8
xor eax, eax
jmp 0x4026fd
sbb eax, eax
or eax, 1
test eax, eax
je 0x40282e
mov ecx, str.__udid
mov eax, esi
nop dword [eax]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x402730
test dl, dl
je 0x40272c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x402730
add eax, 2
add ecx, 2
test dl, dl
jne 0x402710
xor eax, eax
jmp 0x402735
sbb eax, eax
or eax, 1
test eax, eax
je 0x40282e
mov ecx, 0x406b14
mov eax, esi
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x402764
test dl, dl
je 0x402760
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x402764
add eax, 2
add ecx, 2
test dl, dl
jne 0x402744
xor eax, eax
jmp 0x402769
sbb eax, eax
or eax, 1
test eax, eax
je 0x402883
mov ecx, str.__help
mov eax, esi
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x402798
test dl, dl
je 0x402794
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x402798
add eax, 2
add ecx, 2
test dl, dl
jne 0x402778
xor eax, eax
jmp 0x40279d
sbb eax, eax
or eax, 1
test eax, eax
je 0x402883
mov ecx, str.backup
mov eax, esi
nop dword [eax]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x4027d0
test dl, dl
je 0x4027cc
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x4027d0
add eax, 2
add ecx, 2
test dl, dl
jne 0x4027b0
xor eax, eax
jmp 0x4027d5
sbb eax, eax
or eax, 1
test eax, eax
jne 0x4027e1
xor esi, esi
mov dword [esp + 0x1c], esi
jmp 0x40285e
mov ecx, str.restore
mov eax, esi
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x402808
test dl, dl
je 0x402804
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x402808
add eax, 2
add ecx, 2
test dl, dl
jne 0x4027e8
xor eax, eax
jmp 0x40280d
sbb eax, eax
or eax, 1
test eax, eax
jne 0x40281c
mov esi, 1
mov dword [esp + 0x1c], esi
jmp 0x40285e
cmp dword [esp + 0x14], edi
jne 0x402883
mov eax, esi
mov esi, dword [esp + 0x1c]
mov dword [esp + 0x14], eax
jmp 0x402862
mov ecx, dword [esp + 0x4c]
inc ebx
mov eax, dword [ecx + ebx*4]
test eax, eax
je 0x4028a3
cmp byte [eax], 0
je 0x4028a3
push eax
call dword [sym.imp.api_ms_win_crt_string_l1_1_0.dll__strdup]
mov dword [esp + 0xac], eax
jmp 0x402857
push 1
call dword [sym.imp.imobiledevice.dll_idevice_set_debug_level]
mov esi, dword [esp + 0x20]
add esp, 4
mov eax, dword [esp + 0x14]
inc ebx
cmp ebx, dword [ebp + 8]
jl 0x402660
cmp esi, 0xffffffff
je 0x404d16
test eax, eax
jne 0x4028c1
push str.No_target_backup_directory_specified._n
jmp 0x404d1b
mov edx, dword [esp + 0x4c]
call fcn.00402500
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x2150]
xor ecx, esp
call fcn.00404d44
mov esp, ebp
pop ebp
ret
mov edx, ecx
call fcn.00402500
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x2150]
xor ecx, esp
call fcn.00404d44
mov esp, ebp
pop ebp
ret
lea ecx, [esp + 0xd8]
push ecx
push eax
call dword [sym.imp.api_ms_win_crt_filesystem_l1_1_0.dll__stat64i32]
add esp, 8
test eax, eax
je 0x402900
push dword [esp + 0x14]
push str.ERROR:_Backup_directory___s__does_not_exist__n
call fcn.004013b0
add esp, 8
or eax, 0xffffffff
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x2150]
xor ecx, esp
call fcn.00404d44
mov esp, ebp
pop ebp
ret
push 0xb
call dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_malloc]
mov edx, str.Info
add esp, 4
mov ebx, eax
sub eax, edx
mov cl, byte [edx]
lea edx, [edx + 1]
mov byte [edx + eax - 1], cl
test cl, cl
jne 0x402914
lea ecx, [ebx - 1]
mov al, byte [ecx + 1]
lea ecx, [ecx + 1]
test al, al
jne 0x402924
mov eax, dword [str..plist]
mov dword [ecx], eax
mov ax, word [0x406328]
push 0
mov word [ecx + 4], ax
mov al, byte [0x40632a]
push ebx
push dword [esp + 0x1c]
mov byte [ecx + 6], al
call fcn.00401080
add esp, 0xc
mov dword [esp + 0x18], eax
push ebx
mov ebx, dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
call ebx
add esp, 4
cmp esi, 1
jne 0x4029b6
lea eax, [esp + 0xd8]
push eax
push dword [esp + 0x1c]
call dword [sym.imp.api_ms_win_crt_filesystem_l1_1_0.dll__stat64i32]
add esp, 8
test eax, eax
je 0x4029b6
push dword [esp + 0x18]
call ebx
add esp, 4
push dword [esp + 0x14]
push str.ERROR:_Backup_directory___s__is_invalid._No_Info.plist_found._n
call fcn.004013b0
add esp, 8
or eax, 0xffffffff
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x2150]
xor ecx, esp
call fcn.00404d44
mov esp, ebp
pop ebp
ret
push dword [esp + 0x14]
push str.Backup_directory_is___s__n
call fcn.004013b0
mov eax, dword [esp + 0xb0]
add esp, 8
test eax, eax
je 0x402a12
push eax
push 0x409388
call dword [sym.imp.imobiledevice.dll_idevice_new]
add esp, 8
test eax, eax
je 0x402a4b
mov ecx, dword [esp + 0xa8]
push ecx
push str.No_device_found_with_udid__s__is_it_plugged_in__n
call fcn.004013b0
add esp, 8
or eax, 0xffffffff
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x2150]
xor ecx, esp
call fcn.00404d44
mov esp, ebp
pop ebp
ret
push 0
push 0x409388
call dword [sym.imp.imobiledevice.dll_idevice_new]
add esp, 8
test eax, eax
je 0x402a4b
push str.No_device_found__is_it_plugged_in__n
call fcn.004013b0
add esp, 4
or eax, 0xffffffff
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x2150]
xor ecx, esp
call fcn.00404d44
mov esp, ebp
pop ebp
ret
push str.idevicebackup
push 0x409390
push dword [0x409388]
call dword [sym.imp.imobiledevice.dll_lockdownd_client_new_with_handshake]
add esp, 0xc
test eax, eax
je 0x402a9a
push eax
push str.ERROR:_Could_not_connect_to_lockdownd__error_code__d_n
call fcn.004013b0
push dword [0x409388]
call dword [sym.imp.imobiledevice.dll_idevice_free]
add esp, 0xc
or eax, 0xffffffff
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x2150]
xor ecx, esp
call fcn.00404d44
mov esp, ebp
pop ebp
ret
lea eax, [esp + 0x10]
push eax
push str.ProductVersion
push 0
push dword [0x409390]
call dword [sym.imp.imobiledevice.dll_lockdownd_get_value]
mov eax, dword [esp + 0x20]
add esp, 0x10
test eax, eax
je 0x402b64
push eax
mov dword [esp + 0x30], edi
call dword [sym.imp.plist.dll_plist_get_node_type]
add esp, 4
cmp eax, 3
jne 0x402ae6
lea eax, [esp + 0x2c]
push eax
push dword [esp + 0x14]
call dword [sym.imp.plist.dll_plist_get_string_val]
add esp, 8
push dword [esp + 0x10]
call dword [sym.imp.plist.dll_plist_free]
mov eax, dword [esp + 0x30]
add esp, 4
mov dword [esp + 0x10], edi
test eax, eax
je 0x402b64
push 0xa
push 0
push eax
call dword [sym.imp.api_ms_win_crt_convert_l1_1_0.dll_strtol]
add esp, 0xc
mov esi, eax
push dword [esp + 0x2c]
call ebx
add esp, 4
cmp esi, 3
jle 0x402b60
push str.ERROR:_This_tool_is_only_compatible_with_iOS_3_or_below._For_newer_iOS_versions_please_use_the_idevicebackup2_tool._n
call fcn.004013b0
add esp, 4
push dword [0x409390]
call dword [sym.imp.imobiledevice.dll_lockdownd_client_free]
add esp, 4
push dword [0x409388]
call dword [sym.imp.imobiledevice.dll_idevice_free]
add esp, 4
or eax, 0xffffffff
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x2150]
xor ecx, esp
call fcn.00404d44
mov esp, ebp
pop ebp
ret
mov esi, dword [esp + 0x1c]
lea eax, [esp + 0x38]
mov dword [esp + 0xbc], edi
push eax
push str.com.apple.mobile.notification_proxy
push dword [0x409390]
call dword [sym.imp.imobiledevice.dll_lockdownd_start_service]
add esp, 0xc
test eax, eax
jne 0x402c12
mov eax, dword [esp + 0x38]
test eax, eax
je 0x402c12
cmp word [eax], di
je 0x402c12
lea ecx, [esp + 0xbc]
push ecx
push eax
push dword [0x409388]
call dword [sym.imp.imobiledevice.dll_np_client_new]
add esp, 0xc
push 0
push 0x401610
push dword [esp + 0xc4]
call dword [sym.imp.imobiledevice.dll_np_set_notify_callback]
add esp, 0xc
mov dword [esp + 0x144], str.com.apple.itunes_client.syncCancelRequest
lea eax, [esp + 0x144]
mov dword [esp + 0x148], str.com.apple.itunes_client.syncSuspendRequest
mov dword [esp + 0x14c], str.com.apple.itunes_client.syncResumeRequest
mov dword [esp + 0x150], str.com.apple.mobile.backup.domain_changed
push eax
push dword [esp + 0xc0]
mov dword [esp + 0x15c], edi
call dword [sym.imp.imobiledevice.dll_np_observe_notifications]
jmp 0x402c21
push str.com.apple.mobile.notification_proxy
push str.ERROR:_Could_not_start_service__s._n
call fcn.004013b0
add esp, 8
mov dword [esp + 0x90], edi
test esi, esi
jne 0x402c7d
mov eax, dword [esp + 0x38]
xor ecx, ecx
mov word [eax], cx
mov eax, dword [esp + 0x38]
mov byte [eax + 2], cl
lea eax, [esp + 0x38]
push eax
push str.com.apple.afc
push dword [0x409390]
call dword [sym.imp.imobiledevice.dll_lockdownd_start_service]
add esp, 0xc
test eax, eax
jne 0x402c7d
mov eax, dword [esp + 0x38]
cmp word [eax], di
je 0x402c81
lea ecx, [esp + 0x90]
push ecx
push eax
push dword [0x409388]
call dword [sym.imp.imobiledevice.dll_afc_client_new]
add esp, 0xc
mov eax, dword [esp + 0x38]
test eax, eax
je 0x402c93
push eax
call dword [sym.imp.imobiledevice.dll_lockdownd_service_descriptor_free]
add esp, 4
mov dword [esp + 0x38], edi
lea eax, [esp + 0x38]
push eax
push str.com.apple.mobilebackup
push dword [0x409390]
call dword [sym.imp.imobiledevice.dll_lockdownd_start_service]
add esp, 0xc
test eax, eax
jne 0x404c7e
mov eax, dword [esp + 0x38]
test eax, eax
je 0x404c7e
movzx eax, word [eax]
test ax, ax
je 0x404c7e
push eax
push str.com.apple.mobilebackup
push str.Started___s__service_on_port__d._n
call fcn.004013b0
add esp, 0xc
push 0x409384
push dword [esp + 0x3c]
push dword [0x409388]
call dword [sym.imp.imobiledevice.dll_mobilebackup_client_new]
mov eax, dword [esp + 0x44]
add esp, 0xc
test eax, eax
je 0x402d0d
push eax
call dword [sym.imp.imobiledevice.dll_lockdownd_service_descriptor_free]
add esp, 4
mov dword [esp + 0x38], edi
cmp dword [0x40938c], edi
jle 0x402d2b
push str.Aborting_backup._Cancelled_by_user._n
call fcn.004013b0
mov esi, 2
add esp, 4
mov dword [esp + 0x1c], esi
lea eax, [esp + 0xd8]
push eax
push dword [esp + 0x1c]
call dword [sym.imp.api_ms_win_crt_filesystem_l1_1_0.dll__stat64i32]
add esp, 8
test eax, eax
jne 0x402ec0
push str.Reading_Info.plist_from_backup._n
call fcn.004013b0
mov edx, dword [esp + 0x1c]
lea ecx, [esp + 0x64]
add esp, 4
call fcn.004012a0
mov ecx, dword [esp + 0x60]
test ecx, ecx
jne 0x402d8b
push str.Could_not_read_Info.plist_n
call fcn.004013b0
mov ecx, dword [esp + 0x64]
add esp, 4
mov dword [esp + 0x24], 1
test ecx, ecx
je 0x402ed4
test esi, esi
jne 0x402e96
call fcn.00401a70
test eax, eax
je 0x402e76
mov eax, dword [esp + 0x60]
test eax, eax
je 0x402dda
push str.Last_Backup_Date
push eax
call dword [sym.imp.plist.dll_plist_dict_get_item]
add esp, 8
mov esi, eax
push 0
push 0
call dword [sym.imp.api_ms_win_crt_time_l1_1_0.dll__time64]
add esp, 4
sub eax, 0x3a4fc880
push eax
push esi
call dword [sym.imp.plist.dll_plist_set_date_val]
mov esi, dword [esp + 0x28]
add esp, 0xc
push dword [esp + 0x18]
call dword [sym.imp.api_ms_win_crt_filesystem_l1_1_0.dll_remove]
mov eax, dword [esp + 0x64]
add esp, 4
mov dword [esp + 0x2c], edi
test eax, eax
je 0x402e6b
cmp dword [esp + 0x18], edi
je 0x402e6b
lea ecx, [esp + 0x40]
push ecx
lea ecx, [esp + 0x30]
push ecx
push eax
call dword [sym.imp.plist.dll_plist_to_xml]
mov eax, dword [esp + 0x4c]
add esp, 0xc
mov dword [esp + 0x68], eax
mov eax, dword [esp + 0x2c]
mov dword [esp + 0xc4], edi
push 0x4062bc
push dword [esp + 0x1c]
mov dword [esp + 0x9c], eax
call dword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll_fopen]
add esp, 8
mov dword [esp + 0x20], eax
test eax, eax
je 0x402e62
push eax
push dword [esp + 0x6c]
push 1
push dword [esp + 0xa0]
call dword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll_fwrite]
push dword [esp + 0x30]
call dword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll_fclose]
add esp, 0x14
push dword [esp + 0x2c]
call ebx
add esp, 4
xorps xmm0, xmm0
movlpd qword [esp + 0x78], xmm0
jmp 0x402ee5
push str.Aborting_backup._Backup_is_not_compatible_with_the_current_device._n
call fcn.004013b0
xorps xmm0, xmm0
add esp, 4
mov esi, 2
movlpd qword [esp + 0x78], xmm0
jmp 0x40308f
test ecx, ecx
je 0x402ed4
cmp esi, 1
jne 0x402ed4
call fcn.00401a70
test eax, eax
jne 0x402ed4
push str.Aborting_restore._Backup_data_is_not_compatible_with_the_current_device._n
call fcn.004013b0
mov esi, 2
add esp, 4
mov dword [esp + 0x1c], esi
jmp 0x402ed4
cmp esi, 1
jne 0x402ecc
push str.Aborting_restore._Info.plist_is_missing._n
jmp 0x402e7b
mov dword [esp + 0x24], 1
xorps xmm0, xmm0
movlpd qword [esp + 0x78], xmm0
test esi, esi
jne 0x40308f
mov ecx, str.com.apple.itunes_mobdev.syncWillStart
call fcn.00402350
lea eax, [esp + 0x78]
push eax
push 2
push str._com.apple.itunes.lock_sync
push dword [esp + 0x9c]
call dword [sym.imp.imobiledevice.dll_afc_file_open]
mov eax, dword [esp + 0x88]
add esp, 0x10
or eax, dword [esp + 0x7c]
je 0x40308f
mov ecx, str.com.apple.itunes_mobdev.syncLockRequest
call fcn.00402350
mov esi, dword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
xor ebx, ebx
nop
push 6
push dword [esp + 0x80]
push dword [esp + 0x80]
push dword [esp + 0x9c]
call dword [sym.imp.imobiledevice.dll_afc_file_lock]
add esp, 0x10
test eax, eax
je 0x403034
cmp eax, 0x13
jne 0x402fe5
lea eax, [esp + 0x58]
push eax
call dword [sym.imp.KERNEL32.dll_QueryPerformanceFrequency]
lea eax, [esp + 0xb0]
push eax
call esi
lea eax, [esp + 0xc0]
push eax
call esi
mov ecx, dword [esp + 0xc0]
sub ecx, dword [esp + 0xb0]
mov edx, dword [esp + 0xc4]
sbb edx, dword [esp + 0xb4]
call fcn.00405dd0
mov edx, dword [esp + 0x5c]
mov ecx, dword [esp + 0x58]
cvtsd2ss xmm0, xmm0
movss dword [esp + 0x40], xmm0
call fcn.00405dd0
movss xmm1, dword [esp + 0x40]
cvtsd2ss xmm0, xmm0
divss xmm1, xmm0
movss xmm0, dword [0x407b1c]
mulss xmm1, dword [0x407b18]
mulss xmm1, dword [0x407b18]
comiss xmm0, xmm1
ja 0x402f76
jmp 0x403028
push eax
push str.ERROR:_could_not_lock_file__error_code:__d_n
push 2
call dword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll___acrt_iob_func]
add esp, 4
push eax
call fcn.00401010
add esp, 0xc
push dword [esp + 0x7c]
push dword [esp + 0x7c]
push dword [esp + 0x98]
call dword [sym.imp.imobiledevice.dll_afc_file_close]
xorps xmm0, xmm0
mov dword [esp + 0x28], 2
add esp, 0xc
movlpd qword [esp + 0x78], xmm0
inc ebx
cmp ebx, 0x32
jl 0x402f30
jmp 0x40303e
mov ecx, str.com.apple.itunes_mobdev.syncDidStart
call fcn.00402350
cmp ebx, 0x32
jne 0x403085
push str.ERROR:_timeout_while_locking_for_sync_n
push 2
call dword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll___acrt_iob_func]
add esp, 4
push eax
call fcn.00401010
push dword [esp + 0x84]
push dword [esp + 0x84]
push dword [esp + 0xa0]
call dword [sym.imp.imobiledevice.dll_afc_file_close]
xorps xmm0, xmm0
lea esi, [ebx - 0x30]
add esp, 0x14
movlpd qword [esp + 0x78], xmm0
jmp 0x403089
mov esi, dword [esp + 0x1c]
mov ebx, dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
push 0xf
call dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_malloc]
mov edx, str.Manifest
mov dword [esp + 0x98], eax
add esp, 4
sub eax, edx
nop dword [eax + eax]
mov cl, byte [edx]
lea edx, [edx + 1]
mov byte [edx + eax - 1], cl
test cl, cl
jne 0x4030b0
mov edx, dword [esp + 0x94]
lea ecx, [edx - 1]
mov al, byte [ecx + 1]
lea ecx, [ecx + 1]
test al, al
jne 0x4030c7
mov eax, dword [str..plist]
mov dword [ecx], eax
mov ax, word [0x406328]
push 0
mov word [ecx + 4], ax
mov al, byte [0x40632a]
push edx
push dword [esp + 0x1c]
mov byte [ecx + 6], al
call fcn.00401080
add esp, 0xc
mov dword [esp + 0x28], eax
push dword [esp + 0x94]
call ebx
add esp, 4
sub esi, edi
je 0x403ecc
sub esi, 1
jne 0x404bfb
mov eax, dword [0x409390]
test eax, eax
je 0x403133
push eax
call dword [sym.imp.imobiledevice.dll_lockdownd_client_free]
add esp, 4
mov dword [0x409390], edi
push 0xd
mov dword [esp + 0x30], 0xffffffff
mov dword [esp + 0xa8], edi
call dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_malloc]
mov edx, str.Status
mov dword [esp + 0x24], eax
mov esi, eax
add esp, 4
sub esi, edx
nop word [eax + eax]
mov cl, byte [edx]
lea edx, [edx + 1]
mov byte [edx + esi - 1], cl
test cl, cl
jne 0x403160
lea ecx, [eax - 1]
mov al, byte [ecx + 1]
lea ecx, [ecx + 1]
test al, al
jne 0x403170
mov eax, dword [str..plist]
mov dword [ecx], eax
mov ax, word [0x406328]
push 0
push dword [esp + 0x24]
mov word [ecx + 4], ax
mov al, byte [0x40632a]
push dword [esp + 0x1c]
mov byte [ecx + 6], al
call fcn.00401080
add esp, 0xc
mov esi, eax
push dword [esp + 0x20]
call ebx
add esp, 4
lea ecx, [esp + 0xa4]
mov edx, esi
call fcn.004012a0
push esi
call ebx
mov eax, dword [esp + 0xa8]
add esp, 4
test eax, eax
jne 0x4031e6
push str.Could_not_read_Status.plist__n
call fcn.004013b0
add esp, 4
push str.ERROR:_Cannot_ensure_we_restore_from_a_successful_backup._Aborting._n
jmp 0x404bf3
push str.Backup_Success
push eax
call dword [sym.imp.plist.dll_plist_dict_get_item]
mov esi, eax
add esp, 8
test esi, esi
je 0x403224
push esi
call dword [sym.imp.plist.dll_plist_get_node_type]
add esp, 4
test eax, eax
jne 0x403224
mov byte [esp + 0x53], al
lea eax, [esp + 0x53]
push eax
push esi
call dword [sym.imp.plist.dll_plist_get_bool_val]
movzx eax, byte [esp + 0x5b]
mov dword [esp + 0x34], eax
jmp 0x403233
push str.mobilebackup_read_status
push str._s:_ERROR_could_not_get_Backup_Success_key_from_Status.plist__n
call fcn.004013b0
add esp, 8
push dword [esp + 0xa4]
call dword [sym.imp.plist.dll_plist_free]
add esp, 4
cmp dword [esp + 0x2c], edi
jg 0x403256
push str.ERROR:_Cannot_ensure_we_restore_from_a_successful_backup._Aborting._n
jmp 0x404bf3
push str.Reading_existing_Manifest._n
call fcn.004013b0
mov esi, dword [esp + 0x2c]
lea ecx, [esp + 0x58]
add esp, 4
mov edx, esi
call fcn.004012a0
cmp dword [esp + 0x54], edi
jne 0x40328a
push str.Could_not_read_Manifest.plist._Aborting._n
call fcn.004013b0
add esp, 4
jmp 0x404bff
push str.Verifying_backup_integrity__please_wait._n
call fcn.004013b0
mov esi, dword [sym.imp.plist.dll_plist_dict_get_item]
add esp, 4
xorps xmm0, xmm0
mov dword [esp + 0xac], edi
movlpd qword [esp + 0xc0], xmm0
push str.Data
push dword [esp + 0x58]
call esi
add esp, 8
mov dword [esp + 0x10], eax
test eax, eax
je 0x403ec2
push eax
call dword [sym.imp.plist.dll_plist_get_node_type]
add esp, 4
cmp eax, 7
jne 0x403ec2
lea eax, [esp + 0xc0]
push eax
lea eax, [esp + 0xb0]
push eax
push dword [esp + 0x18]
call dword [sym.imp.plist.dll_plist_get_data_val]
add esp, 0xc
mov dword [esp + 0x4c], edi
cmp dword [esp + 0xac], edi
je 0x403eb8
push str.AuthVersion
push dword [esp + 0x58]
xorps xmm0, xmm0
mov dword [esp + 0x28], edi
mov dword [esp + 0x2c], edi
movlpd qword [esp + 0x60], xmm0
call esi
lea ecx, [esp + 0x28]
mov dword [esp + 0x18], eax
push ecx
push eax
call dword [sym.imp.plist.dll_plist_get_string_val]
mov esi, dword [esp + 0x30]
add esp, 0x10
test esi, esi
je 0x40344f
mov ecx, 0x407520
mov eax, esi
nop dword [eax]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x403370
test dl, dl
je 0x40336c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x403370
add eax, 2
add ecx, 2
test dl, dl
jne 0x403350
xor eax, eax
jmp 0x403375
sbb eax, eax
or eax, 1
test eax, eax
jne 0x403441
push str.AuthSignature
push dword [esp + 0x58]
call dword [sym.imp.plist.dll_plist_dict_get_item]
add esp, 8
mov dword [esp + 0x10], eax
test eax, eax
je 0x4033bd
push eax
call dword [sym.imp.plist.dll_plist_get_node_type]
add esp, 4
cmp eax, 7
jne 0x4033bd
lea eax, [esp + 0x58]
push eax
lea eax, [esp + 0x28]
push eax
push dword [esp + 0x18]
call dword [sym.imp.plist.dll_plist_get_data_val]
add esp, 0xc
cmp dword [esp + 0x24], edi
je 0x403429
cmp dword [esp + 0x58], 0x14
jne 0x403429
cmp dword [esp + 0x5c], edi
jne 0x403429
lea eax, [esp + 0x144]
push eax
push dword [esp + 0xc4]
push dword [esp + 0xb4]
call dword [sym.imp.LIBEAY32.dll_Ordinal_501]
mov ecx, dword [esp + 0x30]
lea esi, [esp + 0x150]
add esp, 0xc
xor edx, edx
sub esi, ecx
nop
mov al, byte [ecx]
cmp al, byte [esi + ecx]
jne 0x403415
inc edx
inc ecx
cmp edx, 0x14
jl 0x403400
mov ecx, 1
jmp 0x403417
xor ecx, ecx
test ecx, ecx
mov eax, str.ERROR:_AuthSignature_is_NOT_VALID_n
mov edx, str.AuthSignature_is_valid_n
cmovne eax, edx
push eax
jmp 0x40342e
push str.Could_not_get_AuthSignature_from_manifest__n
call fcn.004013b0
add esp, 4
push dword [esp + 0x24]
call ebx
add esp, 4
jmp 0x40344f
push esi
push str.Unknown_AuthVersion__s__cannot_verify_AuthSignature_n
call fcn.004013b0
add esp, 8
lea eax, [esp + 0x4c]
push eax
push dword [esp + 0xc4]
push dword [esp + 0xb4]
call dword [sym.imp.plist.dll_plist_from_bin]
add esp, 0xc
push dword [esp + 0xac]
call ebx
mov eax, dword [esp + 0x50]
add esp, 4
test eax, eax
je 0x403eb8
push str.Files
push eax
call dword [sym.imp.plist.dll_plist_dict_get_item]
mov ebx, eax
add esp, 8
mov dword [esp + 0x74], ebx
test ebx, ebx
je 0x4035d6
push ebx
call dword [sym.imp.plist.dll_plist_get_node_type]
add esp, 4
cmp eax, 5
jne 0x4035d6
lea eax, [esp + 0x30]
mov dword [esp + 0x30], edi
push eax
push ebx
call dword [sym.imp.plist.dll_plist_dict_new_iter]
add esp, 8
cmp dword [esp + 0x30], edi
je 0x4035d6
push ebx
mov dword [esp + 0x40], edi
xor esi, esi
call dword [sym.imp.plist.dll_plist_dict_get_size]
add esp, 4
mov dword [esp + 0x40], eax
lea eax, [esp + 0x10]
mov dword [esp + 0x10], esi
lea ebx, [esi + 1]
push eax
lea eax, [esp + 0x40]
push eax
push dword [esp + 0x38]
push dword [esp + 0x80]
call dword [sym.imp.plist.dll_plist_dict_next_item]
add esp, 0x10
cmp dword [esp + 0x10], esi
je 0x403598
mov esi, 0x64
mov ecx, dword [esp + 0x40]
mov eax, esi
cdq
idiv ecx
push eax
push ecx
push ebx
push str.Verifying_file__d__d___d_____r
call fcn.004013b0
push dword [esp + 0x20]
mov edx, dword [esp + 0x50]
inc ebx
mov ecx, dword [esp + 0x28]
add esi, 0x64
call fcn.00401ba0
add esp, 0x14
mov dword [esp + 0x10], 0
mov edi, eax
mov dword [esp + 0x68], edi
push dword [esp + 0x3c]
call dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
add esp, 4
mov dword [esp + 0x3c], 0
test edi, edi
je 0x403592
lea eax, [esp + 0x10]
push eax
lea eax, [esp + 0x40]
push eax
push dword [esp + 0x38]
push dword [esp + 0x80]
call dword [sym.imp.plist.dll_plist_dict_next_item]
add esp, 0x10
cmp dword [esp + 0x10], 0
jne 0x403518
mov esi, dword [esp + 0x68]
xor edi, edi
push 0x4062d0
call fcn.004013b0
add esp, 4
push dword [esp + 0x30]
call dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
add esp, 4
test esi, esi
jne 0x4035c5
push dword [esp + 0x4c]
call dword [sym.imp.plist.dll_plist_free]
jmp 0x404bf8
push str.All_backup_files_appear_to_be_valid_n
call fcn.004013b0
mov ebx, dword [esp + 0x78]
add esp, 4
push str.Requesting_restore_from_device..._n
call fcn.004013b0
add esp, 4
push 0x4070d8
push 7
push dword [esp + 0x5c]
push dword [0x409384]
call dword [sym.imp.imobiledevice.dll_mobilebackup_request_restore]
add esp, 0x10
test eax, eax
je 0x403660
cmp eax, 0xfffffffa
jne 0x403622
push str.ERROR:_Could_not_start_restore_process:_backup_protocol_version_mismatch__n
call fcn.004013b0
add esp, 4
push dword [esp + 0x4c]
call dword [sym.imp.plist.dll_plist_free]
jmp 0x404bf8
cmp eax, 0xfffffff9
jne 0x403643
push str.ERROR:_Could_not_start_restore_process:_device_refused_to_start_the_restore_process._n
call fcn.004013b0
add esp, 4
push dword [esp + 0x4c]
call dword [sym.imp.plist.dll_plist_free]
jmp 0x404bf8
push eax
push str.ERROR:_Could_not_start_restore_process:_unspecified_error_occurred___d__n
call fcn.004013b0
add esp, 8
push dword [esp + 0x4c]
call dword [sym.imp.plist.dll_plist_free]
jmp 0x404bf8
push str.Entered_restore_mode._n
call fcn.004013b0
xor esi, esi
add esp, 4
mov dword [esp + 0x18], esi
test ebx, ebx
je 0x403be6
push ebx
call dword [sym.imp.plist.dll_plist_get_node_type]
add esp, 4
cmp eax, 5
jne 0x403be6
lea eax, [esp + 0x24]
mov dword [esp + 0x24], esi
push eax
push ebx
call dword [sym.imp.plist.dll_plist_dict_new_iter]
add esp, 8
cmp dword [esp + 0x24], esi
je 0x403be6
push ebx
mov dword [esp + 0x40], esi
mov dword [esp + 0x20], esi
call dword [sym.imp.plist.dll_plist_dict_get_size]
add esp, 4
mov dword [esp + 0x80], eax
lea eax, [esp + 0x10]
mov dword [esp + 0x2c], esi
xorps xmm0, xmm0
mov byte [esp + 0x40], 0
movlpd qword [esp + 0x68], xmm0
push eax
lea eax, [esp + 0x40]
mov dword [esp + 0x68], esi
push eax
push dword [esp + 0x2c]
mov dword [esp + 0x1c], esi
push ebx
call dword [sym.imp.plist.dll_plist_dict_next_item]
add esp, 0x10
cmp dword [esp + 0x10], esi
je 0x403bc6
mov eax, dword [esp + 0x68]
mov ebx, dword [esp + 0x6c]
mov dword [esp + 0x20], esi
mov dword [esp + 0x30], eax
mov esi, dword [esp + 0x3c]
mov ecx, esi
lea edx, [ecx + 1]
nop dword [eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x403720
sub ecx, edx
lea eax, [ecx + 8]
push eax
call dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_malloc]
mov edx, eax
mov dword [esp + 0x6c], eax
add esp, 4
sub edx, esi
nop
mov cl, byte [esi]
lea esi, [esi + 1]
mov byte [esi + edx - 1], cl
test cl, cl
jne 0x403740
lea ecx, [eax - 1]
mov al, byte [ecx + 1]
lea ecx, [ecx + 1]
test al, al
jne 0x403750
mov eax, dword [str..mdinfo]
push 0
push dword [esp + 0x6c]
mov dword [ecx], eax
mov eax, dword [0x406644]
push dword [esp + 0x1c]
mov dword [ecx + 4], eax
call fcn.00401080
add esp, 0xc
mov esi, eax
push dword [esp + 0x68]
call dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
add esp, 4
lea ecx, [esp + 0x1c]
mov edx, esi
call fcn.004012a0
push str.IsEncrypted
push dword [esp + 0x20]
call dword [sym.imp.plist.dll_plist_dict_get_item]
lea ecx, [esp + 0x48]
mov dword [esp + 0x6c], eax
push ecx
push eax
call dword [sym.imp.plist.dll_plist_get_bool_val]
push str.Metadata
push dword [esp + 0x30]
call dword [sym.imp.plist.dll_plist_dict_get_item]
lea ecx, [esp + 0xb0]
mov dword [esp + 0x7c], eax
push ecx
lea ecx, [esp + 0xbc]
push ecx
push eax
call dword [sym.imp.plist.dll_plist_get_data_val]
add esp, 0x24
mov dword [esp + 0x64], 0
lea eax, [esp + 0x64]
push eax
push dword [esp + 0x9c]
push dword [esp + 0xa8]
call dword [sym.imp.plist.dll_plist_from_bin]
add esp, 0xc
push str.Path
push dword [esp + 0x68]
call dword [sym.imp.plist.dll_plist_dict_get_item]
lea ecx, [esp + 0x90]
push ecx
push eax
call dword [sym.imp.plist.dll_plist_get_string_val]
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x90]
cdq
idiv ecx
push eax
push ecx
push dword [esp + 0x44]
push dword [esp + 0xa4]
push str.Restoring_file__s__d__d___d___...
call fcn.004013b0
add esp, 0x24
push dword [esp + 0x10]
call dword [sym.imp.plist.dll_plist_copy]
add esp, 4
push eax
push str.DLFileAttributesKey
push dword [esp + 0x24]
call dword [sym.imp.plist.dll_plist_dict_set_item]
add esp, 0xc
push esi
call dword [sym.imp.plist.dll_plist_new_string]
add esp, 4
push eax
push str.DLFileSource
push dword [esp + 0x24]
call dword [sym.imp.plist.dll_plist_dict_set_item]
add esp, 0xc
push str._tmp_RestoreFile.plist
call dword [sym.imp.plist.dll_plist_new_string]
add esp, 4
push eax
push str.DLFileDest
push dword [esp + 0x24]
call dword [sym.imp.plist.dll_plist_dict_set_item]
add esp, 0xc
push dword [esp + 0x40]
call dword [sym.imp.plist.dll_plist_new_bool]
add esp, 4
push eax
push str.DLFileIsEncrypted
push dword [esp + 0x24]
call dword [sym.imp.plist.dll_plist_dict_set_item]
add esp, 0xc
push ebx
push dword [esp + 0x34]
call dword [sym.imp.plist.dll_plist_new_uint]
mov ebx, dword [sym.imp.plist.dll_plist_dict_set_item]
push eax
push str.DLFileOffsetKey
push dword [esp + 0x2c]
call ebx
add esp, 0x14
push 0
push edi
call dword [sym.imp.plist.dll_plist_new_uint]
push eax
push str.DLFileStatusKey
push dword [esp + 0x2c]
call ebx
mov ebx, dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
add esp, 0x14
push esi
call ebx
mov esi, dword [esp + 0x40]
add esp, 4
mov ecx, esi
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x403916
sub ecx, edx
lea eax, [ecx + 8]
push eax
call dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_malloc]
mov edi, eax
add esp, 4
mov edx, edi
sub edx, esi
mov cl, byte [esi]
lea esi, [esi + 1]
mov byte [esi + edx - 1], cl
test cl, cl
jne 0x403932
lea ecx, [edi - 1]
mov al, byte [ecx + 1]
lea ecx, [ecx + 1]
test al, al
jne 0x403942
mov eax, dword [str..mddata]
push 0
mov dword [ecx], eax
mov eax, dword [0x40662c]
push edi
push dword [esp + 0x1c]
mov dword [ecx + 4], eax
call fcn.00401080
add esp, 0xc
mov esi, eax
push edi
call ebx
add esp, 4
lea eax, [esp + 0x108]
push eax
push esi
call dword [sym.imp.api_ms_win_crt_filesystem_l1_1_0.dll__stat64]
add esp, 8
test eax, eax
jne 0x403d8d
mov eax, dword [esp + 0x120]
mov dword [esp + 0x98], eax
mov eax, dword [esp + 0x124]
push 0x4062b8
push esi
mov dword [esp + 0xa4], eax
call dword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll_fopen]
add esp, 8
mov dword [esp + 0x58], eax
test eax, eax
je 0x403d5e
push esi
call ebx
xorps xmm0, xmm0
add esp, 4
movlpd qword [esp + 0x68], xmm0
mov esi, dword [esp + 0x68]
mov ebx, dword [esp + 0x6c]
mov dword [esp + 0x30], esi
jmp 0x4039e4
mov esi, dword [esp + 0x30]
push dword [esp + 0x58]
lea eax, [esp + 0x15c]
push 0x2000
push 1
push eax
call dword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll_fread]
mov edx, dword [esp + 0xa8]
add esp, 0x10
mov ecx, dword [esp + 0x9c]
sub edx, esi
mov dword [esp + 0x68], eax
sbb ecx, ebx
test ecx, ecx
ja 0x403a2b
jb 0x403a24
cmp edx, 0x2000
ja 0x403a2b
mov edi, 2
jmp 0x403a30
mov edi, 1
push str.DLFileOffsetKey
push dword [esp + 0x20]
call dword [sym.imp.plist.dll_plist_dict_remove_item]
push ebx
push esi
call dword [sym.imp.plist.dll_plist_new_uint]
mov esi, dword [sym.imp.plist.dll_plist_dict_set_item]
push eax
push str.DLFileOffsetKey
push dword [esp + 0x34]
call esi
add esp, 0x1c
push str.DLFileStatusKey
push dword [esp + 0x20]
call dword [sym.imp.plist.dll_plist_dict_remove_item]
push 0
push edi
call dword [sym.imp.plist.dll_plist_new_uint]
push eax
push str.DLFileStatusKey
push dword [esp + 0x34]
call esi
add esp, 0x1c
call dword [sym.imp.plist.dll_plist_new_array]
push str.DLSendFile
mov esi, eax
call dword [sym.imp.plist.dll_plist_new_string]
add esp, 4
push eax
push esi
call dword [sym.imp.plist.dll_plist_array_append_item]
push 0
push dword [esp + 0x74]
lea eax, [esp + 0x168]
push eax
call dword [sym.imp.plist.dll_plist_new_data]
add esp, 0x14
push eax
push esi
call dword [sym.imp.plist.dll_plist_array_append_item]
push dword [esp + 0x24]
call dword [sym.imp.plist.dll_plist_copy]
add esp, 0xc
push eax
push esi
call dword [sym.imp.plist.dll_plist_array_append_item]
push esi
push dword [0x409384]
call dword [sym.imp.imobiledevice.dll_mobilebackup_send]
add esp, 0x10
test eax, eax
je 0x403af1
push eax
push str.ERROR:_Unable_to_send_file_hunk_due_to_error__d._Aborting..._n
jmp 0x403b11
cmp edi, 2
jne 0x403b1b
push 0
push dword [0x409384]
call dword [sym.imp.imobiledevice.dll_mobilebackup_receive_restore_file_received]
add esp, 8
test eax, eax
je 0x403b1b
push eax
push str.ERROR:_Did_not_receive_an_ack_for_the_sent_file_due_to_error__d._Aborting..._n
call fcn.004013b0
add esp, 8
xor edi, edi
mov eax, dword [esp + 0x68]
add dword [esp + 0x30], eax
adc ebx, 0
cmp edi, 2
jne 0x403b38
push str.DONE_n
call fcn.004013b0
add esp, 4
push esi
call dword [sym.imp.plist.dll_plist_free]
add esp, 4
test edi, edi
je 0x403b66
cmp ebx, dword [esp + 0x9c]
jb 0x4039e0
ja 0x403b66
mov esi, dword [esp + 0x30]
cmp esi, dword [esp + 0x98]
jb 0x4039e4
push dword [esp + 0x3c]
call dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
add esp, 4
mov dword [esp + 0x10], 0
mov dword [esp + 0x3c], 0
mov esi, 1
mov dword [esp + 0x18], esi
test edi, edi
je 0x403d53
inc dword [esp + 0x2c]
lea eax, [esp + 0x10]
add dword [esp + 0x20], 0x64
push eax
lea eax, [esp + 0x40]
push eax
push dword [esp + 0x2c]
push dword [esp + 0x80]
call dword [sym.imp.plist.dll_plist_dict_next_item]
add esp, 0x10
cmp dword [esp + 0x10], 0
jne 0x403710
mov ebx, dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
push dword [esp + 0x24]
call ebx
add esp, 4
push dword [esp + 0x2c]
push str.Restored__d_files_on_device._n
call fcn.004013b0
add esp, 8
push str.Applications
push dword [esp + 0x50]
call dword [sym.imp.plist.dll_plist_dict_get_item]
mov ebx, eax
add esp, 8
mov dword [esp + 0x58], ebx
test ebx, ebx
je 0x403e72
push ebx
call dword [sym.imp.plist.dll_plist_get_node_type]
add esp, 4
cmp eax, 5
jne 0x403e72
test esi, esi
je 0x403e72
lea eax, [esp + 0x14]
mov dword [esp + 0x14], 0
push eax
push ebx
call dword [sym.imp.plist.dll_plist_dict_new_iter]
add esp, 8
cmp dword [esp + 0x14], 0
je 0x403e72
push ebx
mov dword [esp + 0x34], 0
call dword [sym.imp.plist.dll_plist_dict_get_size]
add esp, 4
mov dword [esp + 0x10], 0
mov edi, eax
mov esi, 1
lea eax, [esp + 0x10]
mov dword [esp + 0x80], edi
mov dword [esp + 0x68], esi
push eax
lea eax, [esp + 0x34]
push eax
push dword [esp + 0x1c]
push ebx
call dword [sym.imp.plist.dll_plist_dict_next_item]
add esp, 0x10
cmp dword [esp + 0x10], 0
je 0x403e49
mov ebx, 0x64
mov eax, ebx
cdq
idiv edi
push eax
push edi
push esi
push dword [esp + 0x3c]
push str.Restoring_Application__s__d__d___d___...
call fcn.004013b0
add esp, 0x14
push str.AppInfo
push dword [esp + 0x14]
call dword [sym.imp.plist.dll_plist_dict_get_item]
mov esi, eax
call dword [sym.imp.plist.dll_plist_new_dict]
push esi
mov edi, eax
call dword [sym.imp.plist.dll_plist_copy]
mov esi, dword [sym.imp.plist.dll_plist_dict_set_item]
add esp, 0xc
push eax
push str.AppInfo
push edi
call esi
add esp, 0xc
push str.BackupMessageRestoreApplicationSent
call dword [sym.imp.plist.dll_plist_new_string]
add esp, 4
push eax
push str.BackupMessageTypeKey
push edi
call esi
add esp, 0xc
call dword [sym.imp.plist.dll_plist_new_array]
push str.DLMessageProcessMessage
mov esi, eax
call dword [sym.imp.plist.dll_plist_new_string]
add esp, 4
push eax
push esi
call dword [sym.imp.plist.dll_plist_array_append_item]
push edi
push esi
call dword [sym.imp.plist.dll_plist_array_append_item]
push esi
push dword [0x409384]
call dword [sym.imp.imobiledevice.dll_mobilebackup_send]
add esp, 0x18
test eax, eax
je 0x403da7
push eax
push dword [esp + 0x34]
push str.ERROR:_Unable_to_restore_application__s_due_to_error__d._Aborting..._n
call fcn.004013b0
add esp, 0xc
xor edi, edi
mov dword [esp + 0x18], edi
jmp 0x403dab
xor esi, esi
mov dword [esp + 0x18], esi
jmp 0x403bc6
call dword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__errno]
push dword [eax]
call dword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll_strerror]
add esp, 4
push eax
push esi
push str.ERROR:_could_not_open_local_file__s:__s_n
call fcn.004013b0
add esp, 0xc
push esi
call ebx
mov esi, dword [esp + 0x1c]
add esp, 4
jmp 0x403bcc
call dword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__errno]
push dword [eax]
call dword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll_strerror]
add esp, 4
push eax
push esi
push str.ERROR:_stat___failed_for__s:__s_n
jmp 0x403d76
mov edi, dword [esp + 0x18]
push esi
call dword [sym.imp.plist.dll_plist_free]
add esp, 4
test edi, edi
je 0x403de2
push 0
push dword [0x409384]
call dword [sym.imp.imobiledevice.dll_mobilebackup_receive_restore_application_received]
add esp, 8
test eax, eax
je 0x403de2
push eax
push str.ERROR:_Failed_to_receive_an_ack_from_the_device_for_this_application_due_to_error__d._Aborting..._n
call fcn.004013b0
add esp, 8
xor edi, edi
mov dword [esp + 0x18], edi
push dword [esp + 0x30]
mov dword [esp + 0x14], 0
call dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
add esp, 4
mov dword [esp + 0x30], 0
test edi, edi
je 0x403e49
push str.DONE_n
call fcn.004013b0
mov esi, dword [esp + 0x6c]
lea eax, [esp + 0x14]
add esp, 4
inc esi
mov dword [esp + 0x68], esi
add ebx, 0x64
push eax
lea eax, [esp + 0x34]
push eax
push dword [esp + 0x1c]
push dword [esp + 0x64]
call dword [sym.imp.plist.dll_plist_dict_next_item]
mov edi, dword [esp + 0x90]
add esp, 0x10
cmp dword [esp + 0x10], 0
jne 0x403c97
push dword [esp + 0x14]
call dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
mov esi, dword [esp + 0x1c]
add esp, 4
test esi, esi
je 0x403e65
push str.All_applications_restored._n
jmp 0x403e6a
push str.Failed_to_restore_applications._n
call fcn.004013b0
add esp, 4
push dword [esp + 0x4c]
call dword [sym.imp.plist.dll_plist_free]
add esp, 4
test esi, esi
je 0x403eae
push dword [0x409384]
call dword [sym.imp.imobiledevice.dll_mobilebackup_send_restore_complete]
add esp, 4
test eax, eax
je 0x403ea4
push eax
push str.ERROR:_Could_not_send_BackupMessageRestoreComplete__error_code__d_n
call fcn.004013b0
add esp, 8
push str.Restore_Successful._n
jmp 0x404bf3
push str.Restore_Failed._n
jmp 0x404bf3
push str.Could_not_read_plist_from_Manifest.plist_Data_key__n
jmp 0x404bf3
push str.Could_not_read_Data_key_from_Manifest.plist__n
jmp 0x404bf3
push str.Starting_backup..._n
call fcn.004013b0
add esp, 4
cmp dword [esp + 0x24], edi
jne 0x403f18
push str.Reading_existing_Manifest._n
call fcn.004013b0
mov edx, dword [esp + 0x2c]
lea ecx, [esp + 0x58]
add esp, 4
call fcn.004012a0
cmp dword [esp + 0x54], edi
jne 0x403fce
push str.Could_not_read_Manifest.plist__switching_to_full_backup_mode._n
call fcn.004013b0
add esp, 4
mov dword [esp + 0x24], 1
mov eax, dword [esp + 0x60]
test eax, eax
je 0x403f2e
push eax
call dword [sym.imp.plist.dll_plist_free]
add esp, 4
mov dword [esp + 0x60], edi
mov esi, dword [esp + 0x18]
push esi
call dword [sym.imp.api_ms_win_crt_filesystem_l1_1_0.dll_remove]
add esp, 4
push str.Creating_Info.plist_for_new_backup._n
call fcn.004013b0
mov ecx, dword [esp + 0xac]
add esp, 4
call fcn.00401670
mov dword [esp + 0x60], eax
mov dword [esp + 0x20], edi
test eax, eax
je 0x403fd2
test esi, esi
je 0x403fd2
lea ecx, [esp + 0x58]
push ecx
lea ecx, [esp + 0x24]
push ecx
push eax
call dword [sym.imp.plist.dll_plist_to_xml]
mov eax, dword [esp + 0x64]
add esp, 0xc
mov dword [esp + 0x80], eax
mov eax, dword [esp + 0x20]
mov dword [esp + 0x44], edi
push 0x4062bc
push esi
mov dword [esp + 0x48], eax
call dword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll_fopen]
mov edi, eax
add esp, 8
test edi, edi
je 0x403fc3
push edi
push dword [esp + 0x84]
push 1
push dword [esp + 0x4c]
call dword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll_fwrite]
push edi
call dword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll_fclose]
add esp, 0x14
push dword [esp + 0x20]
call ebx
add esp, 4
jmp 0x403fd2
mov esi, dword [esp + 0x18]
push esi
call ebx
add esp, 4
push dword [esp + 0x60]
call dword [sym.imp.plist.dll_plist_free]
mov eax, dword [0x409390]
add esp, 4
mov dword [esp + 0x60], 0
test eax, eax
je 0x40400a
push eax
call dword [sym.imp.imobiledevice.dll_lockdownd_client_free]
add esp, 4
mov dword [0x409390], 0
mov ecx, dword [esp + 0x14]
xor edx, edx
call fcn.00401910
push str.Requesting_backup_from_device..._n
call fcn.004013b0
add esp, 4
push 0x4070d8
push 0x40632c
push dword [esp + 0x5c]
push dword [0x409384]
call dword [sym.imp.imobiledevice.dll_mobilebackup_request_backup]
add esp, 0x10
test eax, eax
jne 0x404bd6
cmp dword [esp + 0x24], 0
mov ecx, str.Full_backup_mode._n
mov eax, str.Incremental_backup_mode._n
cmovne eax, ecx
push eax
call fcn.004013b0
add esp, 4
push str.Please_wait._Device_is_preparing_backup_data..._n
call fcn.004013b0
xorps xmm0, xmm0
mov dword [esp + 0x90], 0
movlpd qword [esp + 0x84], xmm0
add esp, 4
mov eax, dword [esp + 0x84]
mov dword [esp + 0x74], eax
mov eax, dword [esp + 0x80]
movlpd qword [esp + 0x58], xmm0
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x5c]
mov dword [esp + 0xa4], eax
mov eax, dword [esp + 0x58]
movlpd qword [esp + 0xb0], xmm0
mov dword [esp + 0x64], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x94], 0
mov byte [esp + 0x37], 0
mov dword [esp + 0x68], eax
nop
lea eax, [esp + 0x8c]
push eax
push dword [0x409384]
call dword [sym.imp.imobiledevice.dll_mobilebackup_receive]
mov eax, dword [esp + 0x94]
add esp, 8
test eax, eax
jne 0x40411f
push str.Device_is_not_ready_yet._Going_to_try_again_in_2_seconds..._n
call fcn.004013b0
add esp, 4
push 0x7d0
call dword [sym.imp.KERNEL32.dll_Sleep]
jmp 0x40474e
push 0
push eax
call dword [sym.imp.plist.dll_plist_array_get_item]
mov esi, eax
mov dword [esp + 0x48], 0
push esi
mov dword [esp + 0x1c], esi
call dword [sym.imp.plist.dll_plist_get_node_type]
add esp, 0xc
cmp eax, 3
jne 0x404193
lea eax, [esp + 0x40]
push eax
push esi
call dword [sym.imp.plist.dll_plist_get_string_val]
mov edi, dword [esp + 0x48]
add esp, 8
mov ecx, str.DLSendFile
mov eax, edi
nop
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x404180
test dl, dl
je 0x40417c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x404180
add eax, 2
add ecx, 2
test dl, dl
jne 0x404160
xor esi, esi
jmp 0x404185
sbb esi, esi
or esi, 1
push edi
call ebx
add esp, 4
test esi, esi
jne 0x404809
push 2
push dword [esp + 0x90]
call dword [sym.imp.plist.dll_plist_array_get_item]
mov esi, dword [esp + 0x20]
add esp, 8
mov edi, eax
test esi, esi
jne 0x404205
cmp dword [esp + 0x64], esi
jne 0x404205
push str.BackupTotalSizeKey
push edi
call dword [sym.imp.plist.dll_plist_dict_get_item]
add esp, 8
mov dword [esp + 0x10], eax
test eax, eax
je 0x404205
lea ecx, [esp + 0xc8]
push ecx
push eax
call dword [sym.imp.plist.dll_plist_get_uint_val]
push dword [esp + 0xd4]
push dword [esp + 0xd4]
call fcn.004011a0
mov esi, eax
push esi
push str.Backup_data_requires__s_on_the_disk._n
call fcn.004013b0
push esi
call ebx
mov esi, dword [esp + 0x34]
add esp, 0x1c
mov ebx, dword [sym.imp.plist.dll_plist_dict_get_item]
push str.DLFileStatusKey
push edi
call ebx
lea ecx, [esp + 0xd8]
mov dword [esp + 0x18], eax
push ecx
push eax
call dword [sym.imp.plist.dll_plist_get_uint_val]
mov eax, dword [esp + 0xe0]
push str.BackupManifestKey
push edi
mov dword [esp + 0x44], eax
call ebx
xor cl, cl
mov dword [esp + 0x28], eax
add esp, 0x18
mov byte [esp + 0x37], cl
test eax, eax
je 0x40425d
lea ecx, [esp + 0x37]
push ecx
push eax
call dword [sym.imp.plist.dll_plist_get_bool_val]
mov cl, byte [esp + 0x3f]
add esp, 8
xor ebx, ebx
cmp cl, 1
sete bl
test esi, esi
jne 0x404376
test ebx, ebx
jne 0x404376
mov esi, dword [sym.imp.plist.dll_plist_dict_get_item]
push str.DLFileSource
push edi
call esi
lea ecx, [esp + 0x9c]
mov dword [esp + 0x18], eax
push ecx
push eax
call dword [sym.imp.plist.dll_plist_get_string_val]
push str.DLFileAttributesKey
push edi
call esi
push str.FileSize
push eax
mov dword [esp + 0x30], eax
call esi
lea ecx, [esp + 0xd0]
mov dword [esp + 0x30], eax
push ecx
push eax
call dword [sym.imp.plist.dll_plist_get_uint_val]
mov ecx, dword [esp + 0x90]
add ecx, dword [esp + 0xd8]
mov eax, dword [esp + 0xcc]
adc eax, dword [esp + 0xdc]
push eax
push ecx
mov dword [esp + 0x98], ecx
mov dword [esp + 0xd4], eax
call fcn.004011a0
mov esi, eax
push esi
push 0x407308
call fcn.004013b0
push esi
call dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
add esp, 0x3c
push dword [esp + 0xcc]
push dword [esp + 0xcc]
call fcn.004011a0
mov esi, eax
push esi
push str.__s_:
call fcn.004013b0
push esi
call dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
add esp, 0x14
push dword [esp + 0xb4]
push dword [esp + 0xb4]
call fcn.004011a0
mov esi, eax
push esi
push dword [esp + 0xa0]
push str.Receiving_file__s___s_...__n
call fcn.004013b0
add esp, 0x14
push esi
mov esi, dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
call esi
mov eax, dword [esp + 0x98]
add esp, 4
test eax, eax
je 0x404376
push eax
call esi
add esp, 4
cmp dword [esp + 0x2c], 2
jne 0x4044ff
test ebx, ebx
jne 0x4044ff
mov esi, dword [sym.imp.plist.dll_plist_dict_get_item]
push str.BackupFileInfo
push edi
call esi
add esp, 8
mov dword [esp + 0x10], eax
test eax, eax
je 0x4044fb
push str.DLFileDest
push edi
call esi
lea ecx, [esp + 0x90]
mov dword [esp + 0x18], eax
push ecx
push eax
call dword [sym.imp.plist.dll_plist_get_string_val]
mov esi, dword [esp + 0x98]
add esp, 0x10
mov ecx, esi
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x4043d0
sub ecx, edx
lea eax, [ecx + 8]
push eax
call dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_malloc]
mov edx, eax
mov dword [esp + 0x44], eax
add esp, 4
sub edx, esi
nop
mov cl, byte [esi]
lea esi, [esi + 1]
mov byte [esi + edx - 1], cl
test cl, cl
jne 0x4043f0
lea ecx, [eax - 1]
mov al, byte [ecx + 1]
lea ecx, [ecx + 1]
test al, al
jne 0x404400
mov eax, dword [str..mdinfo]
push 0
push dword [esp + 0x44]
mov dword [ecx], eax
mov eax, dword [0x406644]
push dword [esp + 0x1c]
mov dword [ecx + 4], eax
call fcn.00401080
add esp, 0xc
mov esi, eax
push dword [esp + 0x40]
call dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
add esp, 4
lea eax, [esp + 0xd8]
push eax
push esi
call dword [sym.imp.api_ms_win_crt_filesystem_l1_1_0.dll__stat64i32]
add esp, 8
test eax, eax
jne 0x40445a
push esi
call dword [sym.imp.api_ms_win_crt_filesystem_l1_1_0.dll_remove]
add esp, 4
push str.BackupFileInfo
push edi
call dword [sym.imp.plist.dll_plist_dict_get_item]
add esp, 8
mov dword [esp + 0x10], eax
mov dword [esp + 0x20], 0
test eax, eax
je 0x4044f1
test esi, esi
je 0x4044f1
lea ecx, [esp + 0x58]
push ecx
lea ecx, [esp + 0x24]
push ecx
push eax
call dword [sym.imp.plist.dll_plist_to_bin]
mov eax, dword [esp + 0x64]
add esp, 0xc
mov dword [esp + 0x80], eax
mov eax, dword [esp + 0x20]
mov dword [esp + 0x44], 0
push 0x4062bc
push esi
mov dword [esp + 0x48], eax
call dword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll_fopen]
add esp, 8
mov dword [esp + 0x3c], eax
test eax, eax
je 0x4044e4
push eax
push dword [esp + 0x84]
push 1
push dword [esp + 0x4c]
call dword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll_fwrite]
push dword [esp + 0x4c]
call dword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll_fclose]
add esp, 0x14
push dword [esp + 0x20]
call dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
add esp, 4
push esi
call dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
add esp, 4
inc dword [esp + 0x64]
mov esi, dword [sym.imp.plist.dll_plist_dict_get_item]
push str.BackupFileInfo
push edi
call esi
add esp, 8
mov dword [esp + 0x10], eax
test edi, edi
je 0x40465e
push str.DLFileDest
push edi
call esi
lea ecx, [esp + 0x90]
mov dword [esp + 0x18], eax
push ecx
push eax
call dword [sym.imp.plist.dll_plist_get_string_val]
mov edx, dword [esp + 0x98]
xor ecx, ecx
test ebx, ebx
mov eax, str..mddata
cmovne eax, ecx
mov ecx, dword [esp + 0x24]
push eax
call fcn.00401860
add esp, 0x14
mov esi, eax
cmp dword [esp + 0x18], 0
jne 0x404580
lea eax, [esp + 0xd8]
push eax
push esi
call dword [sym.imp.api_ms_win_crt_filesystem_l1_1_0.dll__stat64i32]
add esp, 8
test eax, eax
jne 0x404580
push esi
call dword [sym.imp.api_ms_win_crt_filesystem_l1_1_0.dll_remove]
add esp, 4
push 1
push dword [esp + 0x90]
call dword [sym.imp.plist.dll_plist_array_get_item]
lea ecx, [esp + 0xa0]
push ecx
lea ecx, [esp + 0xac]
push ecx
push eax
call dword [sym.imp.plist.dll_plist_get_data_val]
mov eax, dword [esp + 0xac]
add esp, 0x14
mov dword [esp + 0x80], eax
mov eax, dword [esp + 0x9c]
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0xa0]
push 0x4062bc
push esi
mov dword [esp + 0x48], eax
call dword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll_fopen]
mov edi, eax
add esp, 8
test edi, edi
je 0x404600
push edi
push dword [esp + 0x84]
push 1
push dword [esp + 0x4c]
call dword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll_fwrite]
push edi
call dword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll_fclose]
add esp, 0x14
test ebx, ebx
jne 0x404622
mov eax, dword [esp + 0x24]
add eax, dword [esp + 0x98]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x74]
adc eax, dword [esp + 0x9c]
mov dword [esp + 0x74], eax
cmp dword [esp + 0x2c], 2
jne 0x40463b
test ebx, ebx
je 0x40463b
push dword [esp + 0x28]
push esi
call dword [sym.imp.api_ms_win_crt_filesystem_l1_1_0.dll_rename]
add esp, 8
push dword [esp + 0xa0]
mov edi, dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
call edi
add esp, 4
mov dword [esp + 0xa0], 0
push esi
call edi
add esp, 4
test ebx, ebx
jne 0x4046cd
cmp dword [esp + 0x18], ebx
jne 0x404688
mov esi, dword [esp + 0x2c]
cmp esi, 2
jne 0x404688
movsd xmm0, qword [0x407af0]
call fcn.00402410
mov dword [esp + 0x18], 1
jmp 0x4046d5
mov edi, dword [esp + 0xb4]
mov esi, dword [esp + 0xb0]
test edi, edi
jne 0x40469e
test esi, esi
je 0x4046cd
mov eax, dword [esp + 0x74]
mov ecx, 0x64
mul ecx
mov edx, 0x64
mov ecx, eax
mov eax, dword [esp + 0x24]
mul edx
push edi
push esi
add ecx, edx
push ecx
push eax
call fcn.004059e0
mov ecx, eax
call fcn.00405d70
call fcn.00402410
inc dword [esp + 0x18]
mov esi, dword [esp + 0x2c]
mov eax, dword [esp + 0x8c]
test eax, eax
je 0x4046ea
push eax
call dword [sym.imp.plist.dll_plist_free]
add esp, 4
mov dword [esp + 0x8c], 0
cmp esi, 2
jne 0x404748
push dword [0x409384]
call dword [sym.imp.imobiledevice.dll_mobilebackup_send_backup_file_received]
add esp, 4
mov dword [esp + 0x18], 0
test ebx, ebx
mov ebx, dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
jne 0x40474e
xorps xmm0, xmm0
movlpd qword [esp + 0x80], xmm0
mov esi, dword [esp + 0x84]
mov dword [esp + 0x74], esi
mov esi, dword [esp + 0x80]
movlpd qword [esp + 0xb0], xmm0
mov dword [esp + 0x24], esi
jmp 0x40474e
mov ebx, dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
cmp dword [0x40938c], 0
jle 0x4040e0
push str.Cancelling_DLSendFile
push dword [0x409384]
call dword [sym.imp.imobiledevice.dll_mobilebackup_send_error]
mov eax, dword [esp + 0x30]
add esp, 8
test eax, eax
je 0x40477d
push eax
call ebx
add esp, 4
push 0x13
call dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_malloc]
mov edi, eax
mov edx, str.Manifest
mov esi, edi
add esp, 4
sub esi, edx
mov cl, byte [edx]
lea edx, [edx + 1]
mov byte [edx + esi - 1], cl
test cl, cl
jne 0x404793
lea ecx, [edi - 1]
mov al, byte [ecx + 1]
lea ecx, [ecx + 1]
test al, al
jne 0x4047a3
mov eax, dword [str..plist.tmp]
mov dword [ecx], eax
mov eax, dword [0x407368]
mov dword [ecx + 4], eax
mov ax, word [0x40736c]
push 0
mov word [ecx + 8], ax
mov al, byte [0x40736e]
push edi
push dword [esp + 0x1c]
mov byte [ecx + 0xa], al
call fcn.00401080
add esp, 0xc
mov esi, eax
mov dword [esp + 0x28], esi
push edi
call ebx
add esp, 4
lea eax, [esp + 0xd8]
push eax
push esi
call dword [sym.imp.api_ms_win_crt_filesystem_l1_1_0.dll__stat64i32]
add esp, 8
test eax, eax
jne 0x404809
push esi
call dword [sym.imp.api_ms_win_crt_filesystem_l1_1_0.dll_remove]
add esp, 4
push dword [esp + 0x64]
push str.Received__d_files_from_device._n
call fcn.004013b0
add esp, 8
cmp dword [0x40938c], 0
jne 0x404bcf
mov esi, dword [esp + 0x10]
push esi
mov dword [esp + 0x44], 0
call dword [sym.imp.plist.dll_plist_get_node_type]
add esp, 4
cmp eax, 3
jne 0x404893
lea eax, [esp + 0x40]
push eax
push esi
call dword [sym.imp.plist.dll_plist_get_string_val]
mov edi, dword [esp + 0x48]
add esp, 8
mov ecx, str.DLMessageProcessMessage
mov eax, edi
nop dword [eax]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x404880
test dl, dl
je 0x40487c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x404880
add eax, 2
add ecx, 2
test dl, dl
jne 0x404860
xor esi, esi
jmp 0x404885
sbb esi, esi
or esi, 1
push edi
call ebx
add esp, 4
test esi, esi
jne 0x404bcf
mov edi, dword [sym.imp.plist.dll_plist_array_get_item]
push 1
push dword [esp + 0x90]
call edi
push str.BackupMessageTypeKey
push eax
mov dword [esp + 0x68], eax
call dword [sym.imp.plist.dll_plist_dict_get_item]
mov esi, eax
add esp, 0x10
mov dword [esp + 0x10], esi
test esi, esi
je 0x404bcf
push esi
mov dword [esp + 0x44], 0
call dword [sym.imp.plist.dll_plist_get_node_type]
add esp, 4
cmp eax, 3
jne 0x40492f
lea eax, [esp + 0x40]
push eax
push esi
call dword [sym.imp.plist.dll_plist_get_string_val]
mov edi, dword [esp + 0x48]
add esp, 8
mov ecx, str.BackupMessageBackupFinished
mov eax, edi
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x404916
test dl, dl
je 0x404912
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x404916
add eax, 2
add ecx, 2
test dl, dl
jne 0x4048f6
xor esi, esi
jmp 0x40491b
sbb esi, esi
or esi, 1
push edi
call ebx
add esp, 4
test esi, esi
jne 0x404bcf
mov edi, dword [sym.imp.plist.dll_plist_array_get_item]
push str.BackupFilesToDeleteKey
push dword [esp + 0x5c]
call dword [sym.imp.plist.dll_plist_dict_get_item]
add esp, 8
mov dword [esp + 0x10], eax
test eax, eax
je 0x404af2
push eax
call dword [sym.imp.plist.dll_plist_array_get_size]
add esp, 4
mov dword [esp + 0x98], eax
xor esi, esi
mov dword [esp + 0x9c], 0
push esi
push dword [esp + 0x14]
call edi
add esp, 8
test eax, eax
je 0x404af2
nop dword [eax]
lea ecx, [esp + 0x88]
inc esi
push ecx
push eax
mov dword [esp + 0x60], esi
call dword [sym.imp.plist.dll_plist_get_string_val]
mov edi, dword [esp + 0x90]
add esp, 8
mov ecx, edi
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x4049a3
sub ecx, edx
lea eax, [ecx + 8]
push eax
call dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_malloc]
mov ebx, eax
add esp, 4
mov esi, ebx
mov edx, edi
sub esi, edi
mov cl, byte [edx]
lea edx, [edx + 1]
mov byte [edx + esi - 1], cl
test cl, cl
jne 0x4049c1
lea ecx, [ebx - 1]
mov al, byte [ecx + 1]
lea ecx, [ecx + 1]
test al, al
jne 0x4049d1
mov eax, dword [str..mddata]
push 0
mov dword [ecx], eax
mov eax, dword [0x40662c]
push ebx
push dword [esp + 0x1c]
mov dword [ecx + 4], eax
call fcn.00401080
add esp, 0xc
mov esi, eax
push ebx
call dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
add esp, 4
push esi
push str.Removing___s_
call fcn.004013b0
push esi
call dword [sym.imp.api_ms_win_crt_filesystem_l1_1_0.dll_remove]
add esp, 0xc
neg eax
sbb ebx, ebx
push esi
call dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
add esp, 4
add ebx, 1
je 0x404ab8
mov ecx, edi
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x404a36
sub ecx, edx
lea eax, [ecx + 8]
push eax
call dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_malloc]
mov ebx, eax
add esp, 4
mov edx, ebx
sub edx, edi
mov cl, byte [edi]
lea edi, [edi + 1]
mov byte [edi + edx - 1], cl
test cl, cl
jne 0x404a52
lea ecx, [ebx - 1]
mov al, byte [ecx + 1]
lea ecx, [ecx + 1]
test al, al
jne 0x404a62
mov eax, dword [str..mdinfo]
push 0
mov dword [ecx], eax
mov eax, dword [0x406644]
push ebx
push dword [esp + 0x1c]
mov dword [ecx + 4], eax
call fcn.00401080
mov edi, dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
add esp, 0xc
mov esi, eax
push ebx
call edi
add esp, 4
push esi
push str.and___s_...
call fcn.004013b0
push esi
call dword [sym.imp.api_ms_win_crt_filesystem_l1_1_0.dll_remove]
add esp, 0xc
neg eax
sbb ebx, ebx
inc ebx
push esi
call edi
add esp, 4
test ebx, ebx
mov ecx, str.DONE_n
mov eax, str.FAILED_n
cmovne eax, ecx
push eax
call fcn.004013b0
mov esi, dword [esp + 0x5c]
add esp, 4
mov edi, dword [sym.imp.plist.dll_plist_array_get_item]
push esi
push dword [esp + 0x14]
call edi
add esp, 8
test eax, eax
jne 0x404980
mov ebx, dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
push 1
push dword [esp + 0x90]
call edi
push str.BackupManifestKey
push eax
call dword [sym.imp.plist.dll_plist_dict_get_item]
mov esi, dword [esp + 0x38]
add esp, 0x10
mov dword [esp + 0x54], eax
test eax, eax
je 0x404bb2
push esi
call dword [sym.imp.api_ms_win_crt_filesystem_l1_1_0.dll_remove]
add esp, 4
push str.Storing_Manifest.plist..._n
call fcn.004013b0
mov eax, dword [esp + 0x58]
add esp, 4
mov dword [esp + 0x20], 0
test eax, eax
je 0x404bb2
test esi, esi
je 0x404bb2
lea ecx, [esp + 0x58]
push ecx
lea ecx, [esp + 0x24]
push ecx
push eax
call dword [sym.imp.plist.dll_plist_to_xml]
mov eax, dword [esp + 0x2c]
add esp, 0xc
mov edi, dword [esp + 0x58]
mov dword [esp + 0x84], 0
mov dword [esp + 0x80], eax
push 0x4062bc
push esi
call dword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll_fopen]
mov esi, eax
add esp, 8
test esi, esi
je 0x404ba5
push esi
push edi
push 1
push dword [esp + 0x8c]
call dword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll_fwrite]
push esi
call dword [sym.imp.api_ms_win_crt_stdio_l1_1_0.dll_fclose]
add esp, 0x14
push dword [esp + 0x20]
call ebx
mov esi, dword [esp + 0x2c]
add esp, 4
push str.Backup_Successful._n
call fcn.004013b0
mov ecx, dword [esp + 0x18]
add esp, 4
mov edx, 1
call fcn.00401910
jmp 0x404bff
push str.Backup_Failed._n
jmp 0x404bf3
cmp eax, 0xfffffffa
jne 0x404be2
push str.ERROR:_Could_not_start_backup_process:_backup_protocol_version_mismatch__n
jmp 0x404bf3
cmp eax, 0xfffffff9
jne 0x404bee
push str.ERROR:_Could_not_start_backup_process:_device_refused_to_start_the_backup_process._n
jmp 0x404bf3
push str.ERROR:_Could_not_start_backup_process:_unspecified_error_occurred_n
call fcn.004013b0
add esp, 4
mov esi, dword [esp + 0x28]
mov ecx, dword [esp + 0x78]
mov eax, ecx
mov edx, dword [esp + 0x7c]
or eax, edx
je 0x404c4f
push 0xc
push edx
push ecx
push dword [esp + 0x9c]
call dword [sym.imp.imobiledevice.dll_afc_file_lock]
push dword [esp + 0x8c]
push dword [esp + 0x8c]
push dword [esp + 0xa8]
call dword [sym.imp.imobiledevice.dll_afc_file_close]
add esp, 0x1c
xorps xmm0, xmm0
mov ecx, str.com.apple.itunes_mobdev.syncDidFinish
movlpd qword [esp + 0x78], xmm0
call fcn.00402350
mov ebx, dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
test esi, esi
je 0x404c5f
push esi
call ebx
add esp, 4
mov eax, dword [0x409390]
test eax, eax
je 0x404ca2
push eax
call dword [sym.imp.imobiledevice.dll_lockdownd_client_free]
add esp, 4
mov dword [0x409390], 0
jmp 0x404ca2
push str.com.apple.mobilebackup
push str.ERROR:_Could_not_start_service__s._n
call fcn.004013b0
push dword [0x409390]
call dword [sym.imp.imobiledevice.dll_lockdownd_client_free]
add esp, 0xc
mov dword [0x409390], edi
mov eax, dword [esp + 0x90]
test eax, eax
je 0x404cb7
push eax
call dword [sym.imp.imobiledevice.dll_afc_client_free]
add esp, 4
mov eax, dword [esp + 0xbc]
test eax, eax
je 0x404ccc
push eax
call dword [sym.imp.imobiledevice.dll_np_client_free]
add esp, 4
mov eax, dword [0x409384]
test eax, eax
je 0x404cdf
push eax
call dword [sym.imp.imobiledevice.dll_mobilebackup_client_free]
add esp, 4
push dword [0x409388]
call dword [sym.imp.imobiledevice.dll_idevice_free]
mov eax, dword [esp + 0xac]
add esp, 4
test eax, eax
je 0x404cff
push eax
call ebx
add esp, 4
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x2150]
xor ecx, esp
call fcn.00404d44
mov esp, ebp
pop ebp
ret
push str.No_command_specified._n
call fcn.004013b0
mov edx, dword [esp + 0x50]
add esp, 4
call fcn.00402500
mov ecx, dword [esp + 0x215c]
or eax, 0xffffffff
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.00404d44
mov esp, ebp
pop ebp
ret