Function at 0x40a990
Capabilities:
Create directory
Query environment variable

Disassembly:
push ebp
mov eax, 0x207c
mov ebp, esp
push edi
push esi
push ebx
call fcn.004b12b0
sub esp, eax
mov ebx, dword [ebp + 0xc]
mov dword [esp], str.ANDROID_PRODUCT_OUT
call sub.msvcrt.dll_getenv
test eax, eax
mov dword [0x4ef264], eax
je 0x40ac61
cmp byte [eax], 0
je 0x40ac61
mov dword [esp], str.ANDROID_SERIAL
call sub.msvcrt.dll_getenv
mov dword [esp], str.ANDROID_ADB_SERVER_PORT
mov dword [ebp - 0x2060], eax
call sub.msvcrt.dll_getenv
mov dword [ebp - 0x2064], 0x13ad
test eax, eax
mov esi, eax
je 0x40a9fe
cmp byte [eax], 0
jne 0x40b0ff
mov eax, dword [ebp + 8]
test eax, eax
jle 0x40ad17
mov dword [ebp - 0x2058], 2
mov dword [ebp - 0x205c], 0
mov dword [ebp - 0x204c], 0
mov dword [ebp - 0x2054], 0
mov dword [ebp - 0x2050], 0
nop
lea esi, [esi]
mov eax, dword [ebx]
mov ecx, 7
mov edi, 0x4c4652
mov esi, eax
repe cmpsb byte [esi], byte es:[edi]
je 0x40ac70
mov edi, str.nodaemon
mov ecx, 9
mov esi, eax
repe cmpsb byte [esi], byte es:[edi]
je 0x40ac91
mov edi, str.fork_server
mov ecx, 0xc
mov esi, eax
repe cmpsb byte [esi], byte es:[edi]
je 0x40aca0
mov edi, str.persist
mov ecx, 8
mov esi, eax
repe cmpsb byte [esi], byte es:[edi]
je 0x40acb0
mov edi, 0x4c1baf
mov ecx, 2
mov esi, eax
repe cmpsb byte [esi], byte es:[edi]
jne 0x40acc0
cmp byte [eax + 2], 0
jne 0x40ad00
cmp dword [ebp + 8], 1
je 0x40b067
sub dword [ebp + 8], 1
add ebx, 4
mov esi, dword [ebx]
test esi, esi
je 0x40b0c5
movsx eax, byte [esi]
test al, al
je 0x40b0c5
mov dword [esp], eax
call dword [sym.imp.msvcrt.dll_isalpha]
test eax, eax
je 0x40aaed
cmp byte [esi + 1], 0x3a
je 0x40b148
mov dword [esp + 4], 0x2f
mov dword [esp], esi
call sub.msvcrt.dll_strchr
mov dword [esp + 4], 0x5c
mov dword [esp], esi
mov edi, eax
call sub.msvcrt.dll_strchr
test edi, edi
je 0x40ab1b
cmp edi, eax
jae 0x40ab26
test eax, eax
je 0x40ab26
test eax, eax
lea esi, [esi]
je 0x40b176
mov dword [esp + 4], 0x104
mov dword [esp], 0x4ef160
call sub.msvcrt.dll__getcwd
test eax, eax
je 0x40bf13
mov edi, 0x4ef160
mov edx, dword [edi]
add edi, 4
lea eax, [edx - 0x1010101]
not edx
and eax, edx
and eax, 0x80808080
je 0x40ab47
mov edx, eax
shr edx, 0x10
test eax, 0x8080
cmove eax, edx
lea edx, [edi + 2]
cmove edi, edx
add al, al
mov dword [esp], esi
sbb edi, 3
call sub.msvcrt.dll_strlen
sub edi, 0x4ef160
lea eax, [edi + eax + 1]
cmp eax, 0x103
ja 0x40b244
mov byte [edi + 0x4ef160], 0x5c
add edi, 0x4ef161
mov dword [esp + 4], esi
mov dword [esp], edi
call sub.msvcrt.dll_strcpy
sub dword [ebp + 8], 1
add ebx, 4
mov eax, dword [ebp + 8]
mov dword [0x4ef264], 0x4ef160
test eax, eax
jg 0x40aa40
mov eax, dword [ebp - 0x2060]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x2058]
mov dword [esp], eax
call fcn.0040d4c0
mov eax, dword [ebp - 0x2064]
mov dword [esp], eax
call fcn.0040d4e0
mov eax, dword [ebp - 0x204c]
test eax, eax
je 0x40ad50
mov eax, dword [ebp - 0x2050]
or eax, dword [ebp - 0x2054]
mov eax, dword [ebp - 0x2064]
je 0x40b139
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x2054]
mov dword [esp], eax
call fcn.004035e0
mov ebx, eax
test ebx, ebx
mov dword [ebp - 0x204c], 0
je 0x40ac53
mov eax, dword [sym.imp.msvcrt.dll__iob]
mov dword [esp + 4], str._could_not_start_server__n
add eax, 0x40
mov dword [esp], eax
call fcn.00408e50
mov dword [ebp - 0x204c], ebx
mov eax, dword [ebp - 0x204c]
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
mov dword [0x4ef264], 0
jmp 0x40a9c7
mov dword [ebp - 0x204c], 1
sub dword [ebp + 8], 1
add ebx, 4
mov eax, dword [ebp + 8]
test eax, eax
jg 0x40aa40
jmp 0x40abc7
mov dword [ebp - 0x2050], 1
jmp 0x40ac7a
mov dword [ebp - 0x2054], 1
jmp 0x40ac7a
mov dword [ebp - 0x205c], 1
jmp 0x40ac7a
cmp byte [eax], 0x2d
je 0x40afed
mov edi, 0x4c478b
mov ecx, 3
mov esi, eax
repe cmpsb byte [esi], byte es:[edi]
je 0x40ad08
mov edi, 0x4c478e
mov ecx, 3
mov esi, eax
repe cmpsb byte [esi], byte es:[edi]
jne 0x40afa6
mov dword [ebp - 0x2058], 1
jmp 0x40ac7a
lea esi, [eax + 2]
jmp 0x40aac3
mov dword [ebp - 0x2058], 0
jmp 0x40ac7a
mov eax, dword [ebp - 0x2060]
mov dword [esp], 2
mov dword [esp + 4], eax
call fcn.0040d4c0
mov eax, dword [ebp - 0x2064]
mov dword [esp], eax
call fcn.0040d4e0
mov dword [ebp - 0x2058], 2
mov dword [ebp - 0x205c], 0
nop
mov eax, dword [ebp + 8]
test eax, eax
je 0x40b067
mov dword [ebp + 0xc], ebx
mov eax, dword [ebp + 0xc]
mov ecx, 8
mov edi, str.devices
mov edx, dword [eax]
mov esi, edx
repe cmpsb byte [esi], byte es:[edi]
seta al
setb cl
sub eax, ecx
movsx eax, al
test eax, eax
je 0x40ba58
mov ecx, 8
mov edi, 0x4c4898
mov esi, edx
repe cmpsb byte [esi], byte es:[edi]
seta al
setb cl
sub eax, ecx
movsx eax, al
test eax, eax
je 0x40bae1
mov ecx, 0xb
mov edi, str.disconnect
mov esi, edx
repe cmpsb byte [esi], byte es:[edi]
seta al
setb cl
sub eax, ecx
movsx eax, al
test eax, eax
je 0x40bb1b
mov edi, 0x4c492d
mov ecx, 4
mov esi, edx
repe cmpsb byte [esi], byte es:[edi]
je 0x40bb85
mov edi, str.shell
mov ecx, 6
mov esi, edx
repe cmpsb byte [esi], byte es:[edi]
je 0x40b420
mov edi, str.hell
mov ecx, 5
mov esi, edx
repe cmpsb byte [esi], byte es:[edi]
je 0x40b420
mov ecx, 8
mov edi, str.exec_in
mov esi, edx
repe cmpsb byte [esi], byte es:[edi]
seta al
setb cl
sub eax, ecx
movsx eax, al
test eax, eax
je 0x40b770
mov ecx, 9
mov esi, edx
mov edi, str.exec_out
repe cmpsb byte [esi], byte es:[edi]
seta cl
mov esi, ecx
setb cl
mov ebx, esi
cmp bl, cl
je 0x40b770
mov edi, str.kill_server
mov ecx, 0xc
mov esi, edx
repe cmpsb byte [esi], byte es:[edi]
je 0x40bba2
mov edi, str.sideload
mov ecx, 9
mov esi, edx
repe cmpsb byte [esi], byte es:[edi]
je 0x40bbc4
mov edi, str.remount
mov esi, edx
mov ecx, 8
repe cmpsb byte [esi], byte es:[edi]
je 0x40b878
mov edi, str.reboot
mov ecx, 7
mov esi, edx
repe cmpsb byte [esi], byte es:[edi]
je 0x40b878
mov edi, str.reboot_bootloader
mov ecx, 0x12
mov esi, edx
repe cmpsb byte [esi], byte es:[edi]
je 0x40b88f
mov edi, str.tcpip
mov ecx, 6
mov esi, edx
repe cmpsb byte [esi], byte es:[edi]
je 0x40b261
mov edi, 0x4c4a87
mov ecx, 4
mov esi, edx
repe cmpsb byte [esi], byte es:[edi]
je 0x40b261
mov edi, str.root
mov ecx, 5
mov esi, edx
repe cmpsb byte [esi], byte es:[edi]
je 0x40b261
mov edi, str.disable_verity
mov ecx, 0xf
mov esi, edx
repe cmpsb byte [esi], byte es:[edi]
je 0x40b261
mov ecx, 0xa
mov edi, str.bugreport
mov esi, edx
repe cmpsb byte [esi], byte es:[edi]
seta al
setb cl
sub eax, ecx
movsx eax, al
test eax, eax
je 0x40bbef
mov edi, 0x4c4abf
mov ecx, 9
mov esi, edx
repe cmpsb byte [esi], byte es:[edi]
jne 0x40bc34
mov edi, str.wait_for_device
mov ecx, 0xf
mov esi, edx
repe cmpsb byte [esi], byte es:[edi]
jne 0x40af5f
mov ebx, dword [ebp - 0x2058]
mov edx, str.wait_for_usb
test ebx, ebx
je 0x40af5f
cmp dword [ebp - 0x2058], 1
mov edx, str.wait_for_local
mov eax, str.wait_for_any
cmovne edx, eax
mov eax, dword [ebp - 0x2060]
mov ecx, dword [ebp - 0x2058]
mov dword [esp], eax
lea eax, [ebp - 0x2018]
call fcn.00409850
lea eax, [ebp - 0x2018]
mov dword [esp], eax
call fcn.0040e250
test eax, eax
jne 0x40b301
cmp dword [ebp + 8], 1
jle 0x40b90d
sub dword [ebp + 8], 1
add dword [ebp + 0xc], 4
jmp 0x40ad5e
mov edi, 0x4c1bb2
mov ecx, 3
mov esi, eax
repe cmpsb byte [esi], byte es:[edi]
je 0x40b167
mov edi, 0x4c4791
mov ecx, 2
mov esi, eax
repe cmpsb byte [esi], byte es:[edi]
jne 0x40b018
cmp byte [eax + 2], 0
jne 0x40b410
cmp dword [ebp + 8], 1
je 0x40b067
mov eax, dword [ebx + 4]
add ebx, 4
sub dword [ebp + 8], 1
jmp 0x40b413
cmp byte [eax + 1], 0x73
jne 0x40acc9
movzx edx, byte [eax + 2]
movsx ecx, dl
sub ecx, 0x30
cmp ecx, 9
ja 0x40b2da
add eax, 2
mov dword [ebp - 0x2060], eax
jmp 0x40ac7a
mov edi, 0x4c4794
mov ecx, 2
mov esi, eax
repe cmpsb byte [esi], byte es:[edi]
jne 0x40abc7
cmp byte [eax + 2], 0
jne 0x40b3c9
cmp dword [ebp + 8], 1
je 0x40b067
mov esi, dword [ebx + 4]
add ebx, 4
sub dword [ebp + 8], 1
cmp byte [esi], 0
jne 0x40b3cc
mov dword [esp + 4], str.adb:_port_number_must_be_a_positive_number_less_than_65536._Got_empty_string._n
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp], eax
call fcn.00408e50
call fcn.00409ae0
mov dword [ebp - 0x204c], 1
mov eax, dword [ebp - 0x204c]
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
call fcn.00409910
test eax, eax
jne 0x40b8c6
mov eax, dword [sym.imp.msvcrt.dll__iob]
mov dword [esp + 8], edi
mov dword [esp + 4], str.adb:_bad_TOP_value___s__n
add eax, 0x40
mov dword [esp], eax
call fcn.00408e50
mov eax, dword [sym.imp.msvcrt.dll__iob]
mov dword [esp + 4], str.adb:_Couldnt_find_top_of_build_tree_n
add eax, 0x40
mov dword [esp], eax
call fcn.00408e50
mov dword [0x4ef264], 0
mov dword [esp + 8], esi
mov dword [esp + 4], str.adb:_could_not_resolve___p__s__n
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp], eax
call fcn.00408e50
call fcn.00409ae0
mov dword [ebp - 0x204c], 1
jmp 0x40b076
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], eax
call sub.msvcrt.dll_strtol
mov dword [ebp - 0x2064], eax
sub eax, 1
cmp eax, 0xfffe
jbe 0x40a9fe
mov dword [esp + 8], esi
mov dword [esp + 4], str.adb:_Env_var_ANDROID_ADB_SERVER_PORT_must_be_a_positive_number_less_than_65535._Got___s__n
jmp 0x40b0db
mov dword [esp], eax
call fcn.00403260
mov ebx, eax
jmp 0x40ac27
cmp byte [esi + 2], 0x5c
jne 0x40aaed
mov dword [esp + 4], esi
mov dword [esp], 0x4ef160
call sub.msvcrt.dll_strcpy
jmp 0x40abab
mov dword [0x4ef020], 1
jmp 0x40ac7a
mov dword [esp], str.ANDROID_BUILD_TOP
call sub.msvcrt.dll_getenv
test eax, eax
mov edi, eax
je 0x40b191
cmp byte [eax], 0
jne 0x40b8b8
mov dword [esp], 0x4c46e7
call sub.msvcrt.dll_getenv
test eax, eax
mov edi, eax
je 0x40b1ac
cmp byte [eax], 0
jne 0x40b084
lea edi, [ebp - 0x1018]
mov dword [esp + 4], 0x104
mov dword [esp], edi
call sub.msvcrt.dll__getcwd
lea edx, [ebp - 0x2018]
call fcn.00409a20
test eax, eax
je 0x40c152
lea eax, [ebp - 0x2018]
mov dword [esp + 0x10], esi
mov dword [esp + 0xc], eax
mov dword [esp + 8], str._sout_targetproduct_s
mov dword [esp + 4], 0x104
mov dword [esp], 0x4ef160
call fcn.00409740
mov dword [esp + 4], 0
mov dword [esp], 0x4ef160
call sub.msvcrt.dll__access
test eax, eax
jns 0x40abab
mov eax, dword [sym.imp.msvcrt.dll__iob]
mov dword [esp + 0xc], 0x4ef160
mov dword [esp + 8], esi
mov dword [esp + 4], str.adb:_Couldnt_find_a_product_dir_based_on___p__s_____s__doesnt_exist_n
add eax, 0x40
mov dword [esp], eax
call fcn.00408e50
jmp 0x40b0c5
mov eax, dword [sym.imp.msvcrt.dll__iob]
mov dword [esp + 4], str.adb:_Couldnt_assemble_path_n
add eax, 0x40
mov dword [esp], eax
call fcn.00408e50
jmp 0x40b0c5
mov ebx, dword [ebp + 0xc]
cmp dword [ebp + 8], 1
jle 0x40b91c
mov eax, dword [ebx + 4]
mov dword [esp + 0xc], edx
mov dword [esp + 8], 0x4c1be0
mov dword [esp + 4], 0x64
mov dword [esp + 0x10], eax
lea eax, [ebp - 0x1018]
mov dword [esp], eax
mov dword [ebp - 0x2050], eax
call fcn.00409740
mov eax, dword [ebp - 0x2050]
mov dword [esp], eax
call fcn.0040de20
test eax, eax
mov ebx, eax
js 0x40b399
call fcn.00409130
mov dword [esp], ebx
call fcn.00419a30
mov dword [ebp - 0x204c], 0
mov eax, dword [ebp - 0x204c]
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
cmp dword [ebp + 8], 1
je 0x40b067
test dl, dl
jne 0x40b067
mov eax, dword [ebx + 4]
add ebx, 4
sub dword [ebp + 8], 1
mov dword [ebp - 0x2060], eax
jmp 0x40ac7a
test byte [0x504120], 1
je 0x40b399
mov ebx, dword [sym.imp.msvcrt.dll__errno]
call ebx
mov esi, dword [eax]
mov dword [esp], 0x504108
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
sub esp, 4
mov dword [esp + 0xc], str.adb_commandline
mov dword [esp + 8], str.system_core_adb_commandline.c
mov dword [esp + 4], 0x4c199e
mov dword [esp], eax
call fcn.00408e50
call ebx
mov dword [eax], esi
call fcn.0040d500
mov dword [esp + 4], str.failure:__s__n
mov dword [esp + 8], eax
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp], eax
call fcn.00408e50
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp], eax
call sub.msvcrt.dll_fflush
mov dword [esp], 0x504108
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
sub esp, 4
call ebx
mov dword [eax], esi
call fcn.0040d500
mov dword [esp + 4], 0x4c426c
mov dword [esp + 8], eax
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp], eax
call fcn.00408e50
mov dword [ebp - 0x204c], 1
jmp 0x40ac53
lea esi, [eax + 2]
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], esi
call sub.msvcrt.dll_strtol
mov dword [ebp - 0x2064], eax
sub eax, 1
cmp eax, 0xfffe
jbe 0x40ac7a
mov dword [esp + 8], esi
mov dword [esp + 4], str.adb:_port_number_must_be_a_positive_number_less_than_65536._Got___s__n
jmp 0x40b0db
add eax, 2
mov dword [esp], eax
call fcn.0040d4f0
jmp 0x40ac7a
cmp byte [edx], 0x68
mov ebx, dword [ebp + 0xc]
sete byte [ebp - 0x2050]
je 0x40bd34
cmp dword [ebp + 8], 1
jle 0x40b949
mov eax, dword [ebx + 4]
lea edi, [ebp - 0x2018]
xor esi, esi
mov dword [esp + 8], str.shell:_s
mov dword [esp + 4], 0x1000
mov dword [esp], edi
mov dword [esp + 0xc], eax
call fcn.00409740
mov eax, dword [ebp + 8]
sub eax, 2
cmp dword [ebp + 8], 2
mov dword [ebp - 0x2054], eax
je 0x40b622
mov dword [ebp - 0x204c], edi
mov eax, dword [ebx + esi*4 + 8]
call fcn.00409950
mov ecx, dword [ebp - 0x204c]
mov edi, eax
mov edx, dword [ecx]
add ecx, 4
lea eax, [edx - 0x1010101]
not edx
and eax, edx
and eax, 0x80808080
je 0x40b491
mov edx, eax
shr edx, 0x10
test eax, 0x8080
cmove eax, edx
lea edx, [ecx + 2]
cmovne edx, ecx
add al, al
sbb edx, 3
mov eax, 0x20
mov word [edx], ax
mov eax, dword [ebp - 0x204c]
add esi, 1
mov dword [esp + 8], 0xfff
mov dword [esp + 4], edi
mov dword [esp], eax
call sub.msvcrt.dll_strncat
mov dword [esp], edi
call sub.msvcrt.dll_free
cmp esi, dword [ebp - 0x2054]
jne 0x40b480
mov edi, dword [ebp - 0x204c]
jmp 0x40b622
call dword [sym.imp.msvcrt.dll__errno]
mov ebx, dword [eax]
mov dword [esp], 0x504108
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
sub esp, 4
mov dword [esp + 0xc], str.adb_commandline
mov dword [esp + 8], str.system_core_adb_commandline.c
mov dword [esp + 4], 0x4c199e
mov dword [esp], eax
call fcn.00408e50
call dword [sym.imp.msvcrt.dll__errno]
mov dword [eax], ebx
mov eax, dword [sym.imp.msvcrt.dll__iob]
mov dword [esp + 8], edi
mov dword [esp + 4], str.interactive_shell_loop._buff_s_n
add eax, 0x40
mov dword [esp], eax
call fcn.00408e50
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp], eax
call sub.msvcrt.dll_fflush
mov dword [esp], 0x504108
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
sub esp, 4
call dword [sym.imp.msvcrt.dll__errno]
mov dword [eax], ebx
mov dword [esp], edi
call fcn.0040de20
test eax, eax
mov esi, eax
js 0x40b8dd
test byte [0x504120], 1
jne 0x40b6d0
mov eax, esi
call fcn.00409130
test byte [0x504120], 1
jne 0x40b634
mov dword [esp], esi
xor ebx, ebx
call fcn.00419a30
mov ecx, dword [ebp - 0x205c]
test ecx, ecx
je 0x40b98f
mov eax, dword [sym.imp.msvcrt.dll__iob]
mov dword [esp + 4], str._n__waiting_for_device___n
add eax, 0x40
mov dword [esp], eax
call fcn.00408e50
mov dword [esp], 0x3e8
call dword [sym.imp.KERNEL32.dll_Sleep]
mov eax, dword [ebp - 0x2060]
sub esp, 4
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x2058]
mov dword [esp + 0xc], 0
mov dword [esp + 8], str.wait_for_device
mov dword [esp], eax
call fcn.0040cee0
test byte [0x504120], 1
je 0x40b58b
jmp 0x40b4ff
mov ebx, dword [sym.imp.msvcrt.dll__errno]
call ebx
mov eax, dword [eax]
mov dword [esp], 0x504108
mov dword [ebp - 0x204c], eax
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov ecx, dword [sym.imp.msvcrt.dll__iob]
lea eax, [ecx + 0x40]
sub esp, 4
mov dword [esp + 0xc], str.adb_commandline
mov dword [esp + 8], str.system_core_adb_commandline.c
mov dword [esp + 4], 0x4c199e
mov dword [esp], eax
call fcn.00408e50
call ebx
mov edx, dword [ebp - 0x204c]
mov dword [eax], edx
mov ecx, dword [sym.imp.msvcrt.dll__iob]
mov dword [esp + 4], str.read_and_dump___done._n
lea eax, [ecx + 0x40]
mov dword [esp], eax
call fcn.00408e50
mov ecx, dword [sym.imp.msvcrt.dll__iob]
lea eax, [ecx + 0x40]
mov dword [esp], eax
call sub.msvcrt.dll_fflush
mov dword [esp], 0x504108
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
sub esp, 4
call ebx
mov edx, dword [ebp - 0x204c]
mov dword [eax], edx
jmp 0x40b5ba
mov ebx, dword [sym.imp.msvcrt.dll__errno]
call ebx
mov eax, dword [eax]
mov dword [esp], 0x504108
mov dword [ebp - 0x204c], eax
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov ecx, dword [sym.imp.msvcrt.dll__iob]
lea eax, [ecx + 0x40]
sub esp, 4
mov dword [esp + 0xc], str.adb_commandline
mov dword [esp + 8], str.system_core_adb_commandline.c
mov dword [esp + 4], 0x4c199e
mov dword [esp], eax
call fcn.00408e50
call ebx
mov edx, dword [ebp - 0x204c]
mov dword [eax], edx
mov ecx, dword [sym.imp.msvcrt.dll__iob]
mov dword [esp + 8], esi
mov dword [esp + 4], str.about_to_read_and_dump_fd_d__n
lea eax, [ecx + 0x40]
mov dword [esp], eax
call fcn.00408e50
mov ecx, dword [sym.imp.msvcrt.dll__iob]
lea eax, [ecx + 0x40]
mov dword [esp], eax
call sub.msvcrt.dll_fflush
mov dword [esp], 0x504108
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
sub esp, 4
call ebx
mov edx, dword [ebp - 0x204c]
mov dword [eax], edx
jmp 0x40b5aa
mov ebx, dword [ebp + 0xc]
lea edi, [ebp - 0x2018]
xor esi, esi
mov dword [ebp - 0x2054], eax
mov eax, dword [ebx + 4]
mov dword [esp + 8], str.exec:_s
mov dword [esp + 4], 0x1000
mov dword [esp], edi
mov dword [esp + 0xc], eax
call fcn.00409740
mov eax, dword [ebp + 8]
sub eax, 2
cmp dword [ebp + 8], 2
mov dword [ebp - 0x2050], eax
jle 0x40b838
mov dword [ebp - 0x204c], edi
mov eax, dword [ebx + esi*4 + 8]
call fcn.00409950
mov edi, eax
mov eax, dword [ebp - 0x204c]
mov ecx, dword [eax]
add eax, 4
lea edx, [ecx - 0x1010101]
not ecx
and edx, ecx
and edx, 0x80808080
je 0x40b7cd
mov ecx, edx
shr ecx, 0x10
test edx, 0x8080
cmove edx, ecx
lea ecx, [eax + 2]
cmove eax, ecx
add dl, dl
sbb eax, 3
mov edx, 0x20
mov word [eax], dx
mov eax, dword [ebp - 0x204c]
add esi, 1
mov dword [esp + 8], 0xfff
mov dword [esp + 4], edi
mov dword [esp], eax
call sub.msvcrt.dll_strncat
mov dword [esp], edi
call sub.msvcrt.dll_free
cmp esi, dword [ebp - 0x2050]
jne 0x40b7bc
mov edi, dword [ebp - 0x204c]
mov dword [esp], edi
call fcn.0040de20
test eax, eax
mov esi, eax
js 0x40c20d
mov edi, dword [ebp - 0x2054]
test edi, edi
jne 0x40bb73
mov edx, eax
xor eax, eax
call fcn.00409330
mov dword [esp], esi
call fcn.00419a30
mov dword [ebp - 0x204c], 0
jmp 0x40ac53
mov edi, str.reboot_bootloader
mov ecx, 0x12
mov ebx, dword [ebp + 0xc]
mov esi, edx
repe cmpsb byte [esi], byte es:[edi]
jne 0x40b264
lea eax, [ebp - 0x1018]
mov dword [esp + 8], str.reboot:bootloader
mov dword [esp + 4], 0x64
mov dword [esp], eax
mov dword [ebp - 0x2050], eax
call fcn.00409740
jmp 0x40b29d
call fcn.00409910
test eax, eax
nop
je 0x40c17c
lea eax, [ebp - 0x2018]
mov dword [esp + 4], edi
mov dword [esp], eax
call sub.msvcrt.dll_strcpy
jmp 0x40b1d5
call fcn.0040d500
mov ebx, 0xffffffff
mov dword [esp + 4], 0x4c426c
mov dword [esp + 8], eax
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp], eax
call fcn.00408e50
jmp 0x40b5c4
call fcn.00409ae0
mov dword [ebp - 0x204c], 0
jmp 0x40ac53
lea eax, [ebp - 0x1018]
mov dword [esp + 0xc], edx
mov dword [esp + 8], 0x4c4ab1
mov dword [esp + 4], 0x64
mov dword [esp], eax
mov dword [ebp - 0x2050], eax
call fcn.00409740
jmp 0x40b29d
test byte [0x504120], 1
jne 0x40bf44
call fcn.00409b50
cmp byte [ebp - 0x2050], 0
mov dword [ebp - 0x204c], eax
je 0x40ac53
mov dword [esp], str.e_0m
call fcn.00409720
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x20
mov dword [esp], eax
call sub.msvcrt.dll_fflush
jmp 0x40ac53
cmp byte [ebp - 0x2050], 0
je 0x40b9b4
mov dword [esp], str.e_0m
call fcn.00409720
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x20
mov dword [esp], eax
call sub.msvcrt.dll_fflush
test byte [0x504120], 1
mov dword [ebp - 0x204c], ebx
je 0x40ac53
mov ebx, dword [sym.imp.msvcrt.dll__errno]
call ebx
mov esi, dword [eax]
mov dword [esp], 0x504108
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
sub esp, 4
mov dword [esp + 0xc], str.adb_commandline
mov dword [esp + 8], str.system_core_adb_commandline.c
mov dword [esp + 4], 0x4c199e
mov dword [esp], eax
call fcn.00408e50
call ebx
mov dword [eax], esi
mov eax, dword [ebp - 0x204c]
mov dword [esp + 4], str.interactive_shell_loop._return_r_d_n
mov dword [esp + 8], eax
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp], eax
call fcn.00408e50
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp], eax
call sub.msvcrt.dll_fflush
mov dword [esp], 0x504108
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
sub esp, 4
call ebx
mov dword [eax], esi
jmp 0x40ac53
cmp dword [ebp + 8], 1
mov dword [ebp - 0x204c], eax
mov ebx, dword [ebp + 0xc]
jle 0x40bed2
cmp dword [ebp + 8], 2
jne 0x40bd55
mov eax, dword [ebx + 4]
mov edi, 0x4c4853
mov ecx, 3
mov esi, eax
repe cmpsb byte [esi], byte es:[edi]
jne 0x40bd55
lea ebx, [ebp - 0x2018]
mov dword [esp + 0xc], edx
mov dword [esp], ebx
mov dword [esp + 0x10], eax
mov dword [esp + 8], str.host:_s_s
mov dword [esp + 4], 0x1000
call fcn.00409740
mov dword [esp], ebx
call fcn.0040e2b0
test eax, eax
mov ebx, eax
je 0x40bb0c
mov dword [esp], str.List_of_devices_attached__n
call fcn.00409720
mov dword [esp + 4], ebx
mov dword [esp], 0x4c4894
call fcn.00409720
jmp 0x40ac53
cmp dword [ebp + 8], 2
mov dword [ebp - 0x204c], eax
mov ebx, dword [ebp + 0xc]
je 0x40bdb1
mov dword [esp + 4], str.Usage:_adb_connect__host__:_port___n
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp], eax
call fcn.00408e50
mov dword [ebp - 0x204c], 1
jmp 0x40ac53
cmp dword [ebp + 8], 2
mov dword [ebp - 0x204c], eax
mov ebx, dword [ebp + 0xc]
jg 0x40bf06
je 0x40bedc
lea edi, [ebp - 0x2018]
mov dword [esp + 8], str.host:disconnect:
mov dword [esp + 4], 0x1000
mov dword [esp], edi
call fcn.00409740
mov dword [esp], edi
call fcn.0040e2b0
test eax, eax
je 0x40bb0c
mov dword [esp + 4], eax
mov dword [esp], 0x4c4894
call fcn.00409720
jmp 0x40ac53
mov edx, 1
call fcn.00409330
lea esi, [esi]
jmp 0x40b861
mov ebx, dword [ebp + 0xc]
mov eax, dword [ebp + 8]
mov dword [esp + 4], ebx
mov dword [esp], eax
call fcn.004041d0
mov dword [ebp - 0x204c], eax
jmp 0x40ac53
mov dword [esp], 0x4c4a3e
call fcn.0040d740
cmp eax, 0xffffffff
jne 0x40b90d
mov dword [esp + 4], str._server_not_running__n
jmp 0x40bafc
cmp dword [ebp + 8], 2
mov ebx, dword [ebp + 0xc]
jne 0x40b067
mov eax, dword [ebx + 4]
mov dword [esp], eax
call fcn.00409f20
test eax, eax
setne al
movzx eax, al
mov dword [ebp - 0x204c], eax
jmp 0x40ac53
cmp dword [ebp + 8], 1
mov dword [ebp - 0x204c], eax
jne 0x40b067
mov eax, dword [ebp - 0x2060]
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], str.bugreport
mov dword [esp + 8], str.shell
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x2058]
mov dword [esp], eax
call fcn.0040cee0
jmp 0x40ac53
mov ecx, 8
mov edi, 0x4c45ac
mov ebx, dword [ebp + 0xc]
mov esi, edx
repe cmpsb byte [esi], byte es:[edi]
mov edi, 0x4c4ad8
mov esi, edx
seta cl
setb al
cmp cl, al
mov ecx, 8
jne 0x40bd62
repe cmpsb byte [esi], byte es:[edi]
setb al
seta dl
sub edx, eax
movsx eax, dl
mov dword [ebp - 0x2050], eax
cmp dword [ebp + 8], 1
jle 0x40c021
mov eax, dword [ebx + 4]
mov byte [ebp - 0x2064], 0
mov byte [ebp - 0x204c], 0
mov byte [ebp - 0x205c], 0
cmp byte [eax], 0x2d
mov byte [ebp - 0x2054], 0
je 0x40bcfd
jmp 0x40be16
mov edi, str.__remove
mov esi, eax
mov ecx, 9
repe cmpsb byte [esi], byte es:[edi]
je 0x40bd22
mov edi, str.__remove_all
mov ecx, 0xd
mov esi, eax
repe cmpsb byte [esi], byte es:[edi]
je 0x40bd2b
mov edi, str.__no_rebind
mov ecx, 0xc
mov esi, eax
repe cmpsb byte [esi], byte es:[edi]
jne 0x40b067
mov byte [ebp - 0x2064], 1
sub dword [ebp + 8], 1
add ebx, 4
cmp dword [ebp + 8], 1
je 0x40bdeb
mov eax, dword [ebx + 4]
cmp byte [eax], 0x2d
jne 0x40bdeb
mov esi, eax
mov ecx, 7
mov edi, str.__list
repe cmpsb byte [esi], byte es:[edi]
seta cl
mov esi, ecx
setb cl
mov edx, esi
cmp dl, cl
jne 0x40bca5
mov byte [ebp - 0x204c], 1
jmp 0x40bce0
mov byte [ebp - 0x2054], 1
jmp 0x40bce0
mov byte [ebp - 0x205c], 1
jmp 0x40bce0
mov dword [esp], str.e_41_33m
call fcn.00409720
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x20
mov dword [esp], eax
call sub.msvcrt.dll_fflush
jmp 0x40b433
mov dword [esp + 4], str.Usage:_adb_devices___l__n
jmp 0x40bafc
repe cmpsb byte [esi], byte es:[edi]
setb al
seta cl
sub ecx, eax
movsx eax, cl
test eax, eax
mov dword [ebp - 0x2050], eax
je 0x40bc72
mov edi, 0x4c4b5c
mov ecx, 3
mov esi, edx
repe cmpsb byte [esi], byte es:[edi]
jne 0x40c19d
cmp dword [ebp + 8], 2
jne 0x40b067
mov eax, dword [ebx + 4]
mov dword [esp], eax
call fcn.00414950
mov dword [ebp - 0x204c], eax
jmp 0x40ac53
mov eax, dword [ebx + 4]
lea ebx, [ebp - 0x2018]
mov dword [esp + 8], str.host:connect:_s
mov dword [esp + 4], 0x1000
mov dword [esp], ebx
mov dword [esp + 0xc], eax
call fcn.00409740
mov dword [esp], ebx
call fcn.0040e2b0
test eax, eax
jne 0x40bb5e
jmp 0x40bb0c
movsx eax, byte [ebp - 0x2054]
movsx edx, byte [ebp - 0x204c]
add edx, eax
movsx eax, byte [ebp - 0x205c]
add edx, eax
movsx eax, byte [ebp - 0x2064]
add eax, edx
cmp eax, 1
jg 0x40b067
mov ecx, dword [ebp - 0x2050]
test ecx, ecx
je 0x40c0d1
mov eax, dword [ebp - 0x2060]
test eax, eax
je 0x40c08d
mov dword [esp + 0xc], eax
lea eax, [ebp - 0x1018]
mov dword [esp + 8], str.host_serial:_s
mov dword [esp + 4], 0x40
mov dword [esp], eax
mov dword [ebp - 0x2050], eax
call fcn.00409740
cmp byte [ebp - 0x204c], 0
je 0x40bfcb
cmp dword [ebp + 8], 1
jne 0x40b067
mov eax, dword [ebp - 0x2050]
lea ebx, [ebp - 0x2018]
mov dword [esp], ebx
mov dword [esp + 8], str._s:list_forward
mov dword [esp + 4], 0x1000
mov dword [esp + 0xc], eax
call fcn.00409740
mov dword [esp], ebx
call fcn.0040e2b0
test eax, eax
mov ebx, eax
je 0x40b399
mov dword [esp + 4], eax
mov dword [esp], 0x4c4b28
call fcn.00409720
mov dword [esp], ebx
call sub.msvcrt.dll_free
mov dword [ebp - 0x204c], 0
jmp 0x40ac53
mov eax, 0x4c4398
jmp 0x40ba8c
mov eax, dword [ebx + 4]
lea edi, [ebp - 0x2018]
mov dword [esp + 8], str.host:disconnect:_s
mov dword [esp + 4], 0x1000
mov dword [esp], edi
mov dword [esp + 0xc], eax
call fcn.00409740
jmp 0x40bb52
mov dword [esp + 4], str.Usage:_adb_disconnect___host__:_port____n
jmp 0x40bafc
call dword [sym.imp.msvcrt.dll__errno]
mov eax, dword [eax]
mov dword [esp], eax
call sub.msvcrt.dll_strerror
mov dword [esp + 4], str.adb:_Couldnt_get_CWD:__s_n
mov dword [esp + 8], eax
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp], eax
call fcn.00408e50
jmp 0x40b0c5
mov ebx, dword [sym.imp.msvcrt.dll__errno]
call ebx
mov esi, dword [eax]
mov dword [esp], 0x504108
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
sub esp, 4
mov dword [esp + 0xc], str.adb_commandline
mov dword [esp + 8], str.system_core_adb_commandline.c
mov dword [esp + 4], 0x4c199e
mov dword [esp], eax
call fcn.00408e50
call ebx
mov dword [eax], esi
mov eax, dword [sym.imp.msvcrt.dll__iob]
mov dword [esp + 4], str.starting_interactive_shell_n
add eax, 0x40
mov dword [esp], eax
call fcn.00408e50
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp], eax
call sub.msvcrt.dll_fflush
mov dword [esp], 0x504108
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
sub esp, 4
call ebx
mov dword [eax], esi
jmp 0x40b956
cmp byte [ebp - 0x205c], 0
je 0x40c042
cmp dword [ebp + 8], 1
jne 0x40b067
mov eax, dword [ebp - 0x2050]
lea edi, [ebp - 0x2018]
mov dword [esp + 8], str._s:killforward_all
mov dword [esp + 4], 0x1000
mov dword [esp], edi
mov dword [esp + 0xc], eax
call fcn.00409740
mov dword [esp], edi
call fcn.0040e250
test eax, eax
mov dword [ebp - 0x204c], eax
je 0x40ac53
jmp 0x40b399
mov byte [ebp - 0x2064], 0
mov byte [ebp - 0x204c], 0
mov byte [ebp - 0x205c], 0
mov byte [ebp - 0x2054], 0
jmp 0x40be16
cmp byte [ebp - 0x2054], 0
je 0x40c0db
cmp dword [ebp + 8], 2
jne 0x40b067
mov eax, dword [ebx + 4]
lea edi, [ebp - 0x2018]
mov dword [esp + 8], str._s:killforward:_s
mov dword [esp + 4], 0x1000
mov dword [esp], edi
mov dword [esp + 0x10], eax
mov eax, dword [ebp - 0x2050]
mov dword [esp + 0xc], eax
call fcn.00409740
jmp 0x40c006
mov edx, dword [ebp - 0x2058]
test edx, edx
je 0x40c145
cmp dword [ebp - 0x2058], 1
je 0x40c138
mov dword [esp + 8], 0x4c1bbe
lea eax, [ebp - 0x1018]
mov dword [esp + 4], 0x40
mov dword [esp], eax
mov dword [ebp - 0x2050], eax
call fcn.00409740
jmp 0x40be5a
mov dword [esp + 8], 0x4c4ad8
jmp 0x40c0b0
cmp dword [ebp + 8], 3
jne 0x40b067
cmp byte [ebp - 0x2064], 0
mov edx, 0x4c45ac
mov eax, str.forward:norebind:
lea edi, [ebp - 0x2018]
cmove eax, edx
mov edx, dword [ebx + 8]
mov dword [esp + 0x18], edx
mov edx, dword [ebx + 4]
mov dword [esp + 0x10], eax
mov eax, dword [ebp - 0x2050]
mov dword [esp + 8], str._s:_s:_s__s
mov dword [esp + 4], 0x1000
mov dword [esp + 0x14], edx
mov dword [esp + 0xc], eax
mov dword [esp], edi
call fcn.00409740
jmp 0x40c006
mov dword [esp + 8], str.host_local
jmp 0x40c0b0
mov dword [esp + 8], str.host_usb
jmp 0x40c0b0
mov dword [esp + 4], 0x104
mov dword [esp], edi
call fcn.004159f0
lea edx, [ebp - 0x2018]
mov eax, edi
call fcn.00409a20
test eax, eax
je 0x40b0ad
jmp 0x40b1d5
mov eax, dword [sym.imp.msvcrt.dll__iob]
mov dword [esp + 8], edi
mov dword [esp + 4], str.adb:_bad_ANDROID_BUILD_TOP_value___s__n
add eax, 0x40
mov dword [esp], eax
call fcn.00408e50
jmp 0x40b0ad
mov edi, str.push
mov ecx, 5
mov esi, edx
repe cmpsb byte [esi], byte es:[edi]
je 0x40c321
mov edi, str.pull
mov ecx, 5
mov esi, edx
repe cmpsb byte [esi], byte es:[edi]
je 0x40c289
mov edi, str.install
mov ecx, 8
mov esi, edx
repe cmpsb byte [esi], byte es:[edi]
jne 0x40c23d
cmp dword [ebp + 8], 1
jle 0x40b067
mov eax, dword [ebp + 8]
mov dword [esp + 0xc], ebx
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x2060]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x2058]
mov dword [esp], eax
call fcn.0040d1f0
mov dword [ebp - 0x204c], eax
jmp 0x40ac53
call fcn.0040d500
mov dword [esp + 4], 0x4c426c
mov dword [esp + 8], eax
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp], eax
call fcn.00408e50
mov dword [ebp - 0x204c], 0xffffffff
jmp 0x40ac53
mov edi, str.install_multiple
mov ecx, 0x11
mov esi, edx
repe cmpsb byte [esi], byte es:[edi]
jne 0x40c3b7
cmp dword [ebp + 8], 1
jle 0x40b067
mov eax, dword [ebp + 8]
mov dword [esp + 0xc], ebx
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x2060]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x2058]
mov dword [esp], eax
call fcn.0040a410
mov dword [ebp - 0x204c], eax
jmp 0x40ac53
mov eax, dword [ebp + 8]
lea ecx, [ebp - 0x203c]
mov dword [esp + 8], ecx
lea ecx, [ebp - 0x2040]
mov dword [esp + 4], ecx
lea ecx, [ebp - 0x1018]
mov dword [esp], ecx
lea ecx, [ebp - 0x2038]
lea edx, [eax - 1]
lea eax, [ebx + 4]
mov dword [ebp - 0x2040], 0
mov dword [ebp - 0x203c], 0
mov dword [ebp - 0x2038], 0
mov dword [ebp - 0x1018], 0x4c4b69
call fcn.004bd560
mov eax, dword [ebp - 0x2038]
test eax, eax
je 0x40b067
mov edx, dword [ebp - 0x203c]
mov dword [esp], eax
mov dword [esp + 0xc], edx
mov edx, dword [ebp - 0x2040]
mov dword [esp + 8], edx
mov edx, dword [ebp - 0x1018]
mov dword [esp + 4], edx
call fcn.00415480
mov dword [ebp - 0x204c], eax
jmp 0x40ac53
mov eax, dword [ebp + 8]
lea ecx, [ebp - 0x203c]
mov dword [esp + 8], ecx
lea ecx, [ebp - 0x2040]
mov dword [esp + 4], ecx
lea ecx, [ebp - 0x1018]
mov dword [esp], ecx
lea ecx, [ebp - 0x2038]
lea edx, [eax - 1]
lea eax, [ebx + 4]
mov dword [ebp - 0x2040], 0
mov dword [ebp - 0x203c], 0
mov dword [ebp - 0x2038], 0
mov dword [ebp - 0x1018], 0
call fcn.004bd560
mov eax, dword [ebp - 0x2038]
test eax, eax
je 0x40b067
mov edx, dword [ebp - 0x1018]
test edx, edx
je 0x40b067
mov ecx, dword [ebp - 0x2040]
mov dword [esp + 4], edx
mov dword [esp], eax
mov dword [esp + 8], ecx
call fcn.00415200
mov dword [ebp - 0x204c], eax
jmp 0x40ac53
mov edi, str.uninstall
mov ecx, 0xa
mov esi, edx
repe cmpsb byte [esi], byte es:[edi]
jne 0x40c3ff
cmp dword [ebp + 8], 1
jle 0x40b067
mov eax, dword [ebp + 8]
mov dword [esp + 0xc], ebx
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x2060]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x2058]
mov dword [esp], eax
call fcn.0040d0f0
mov dword [ebp - 0x204c], eax
jmp 0x40ac53
mov edi, str.sync
mov ecx, 5
mov esi, edx
repe cmpsb byte [esi], byte es:[edi]
jne 0x40c527
cmp dword [ebp + 8], 1
jle 0x40c50d
mov eax, dword [ebx + 4]
mov edi, 0x4c4853
mov ecx, 3
mov esi, eax
repe cmpsb byte [esi], byte es:[edi]
jne 0x40c516
xor eax, eax
mov esi, 1
cmp dword [ebp + 8], 3
jne 0x40c444
mov eax, dword [ebx + 8]
lea edx, [ebp - 0x1018]
mov dword [esp + 0xc], edx
lea edx, [ebp - 0x2038]
mov dword [esp + 8], edx
lea edx, [ebp - 0x203c]
mov dword [esp + 4], edx
mov dword [esp], eax
call fcn.0040a2c0
test eax, eax
mov ebx, eax
jne 0x40b067
mov eax, dword [ebp - 0x203c]
test eax, eax
je 0x40c496
mov dword [esp + 8], esi
mov dword [esp + 4], str._system
mov dword [esp], eax
call fcn.00415910
test eax, eax
jne 0x40c4d6
mov eax, dword [ebp - 0x1018]
test eax, eax
je 0x40c4b8
mov dword [esp + 8], esi
mov dword [esp + 4], str._vendor
mov dword [esp], eax
call fcn.00415910
test eax, eax
jne 0x40c4d6
mov eax, dword [ebp - 0x2038]
test eax, eax
je 0x40c4d8
mov dword [esp + 8], esi
mov dword [esp + 4], str._data
mov dword [esp], eax
call fcn.00415910
mov ebx, eax
mov eax, dword [ebp - 0x203c]
mov dword [esp], eax
call sub.msvcrt.dll_free
mov eax, dword [ebp - 0x1018]
mov dword [esp], eax
call sub.msvcrt.dll_free
mov eax, dword [ebp - 0x2038]
mov dword [esp], eax
call sub.msvcrt.dll_free
mov dword [ebp - 0x204c], ebx
jmp 0x40ac53
xor esi, esi
xor eax, eax
jmp 0x40c444
cmp dword [ebp + 8], 2
jne 0x40b067
xor esi, esi
jmp 0x40c444
mov edi, str.get_state
mov ecx, 0xa
mov esi, edx
repe cmpsb byte [esi], byte es:[edi]
je 0x40c557
mov edi, str.get_serialno
mov ecx, 0xd
mov esi, edx
repe cmpsb byte [esi], byte es:[edi]
je 0x40c557
mov edi, str.get_devpath
mov ecx, 0xc
mov esi, edx
repe cmpsb byte [esi], byte es:[edi]
jne 0x40c5a2
mov eax, dword [ebp - 0x2060]
lea ebx, [ebp - 0x2018]
mov ecx, dword [ebp - 0x2058]
mov dword [esp], eax
mov eax, ebx
call fcn.00409850
mov dword [esp], ebx
call fcn.0040e2b0
test eax, eax
je 0x40bb0c
mov dword [esp + 4], eax
mov dword [esp], 0x4c4894
call fcn.00409720
mov dword [ebp - 0x204c], 0
jmp 0x40ac53
mov edi, str.status_window
mov ecx, 0xe
mov esi, edx
repe cmpsb byte [esi], byte es:[edi]
je 0x40c6a2
mov edi, str.logcat
mov ecx, 7
mov esi, edx
repe cmpsb byte [esi], byte es:[edi]
je 0x40c7df
mov edi, str.lolcat
mov ecx, 7
mov esi, edx
repe cmpsb byte [esi], byte es:[edi]
je 0x40c7df
mov edi, str.longcat
mov ecx, 8
mov dword [ebp - 0x204c], edi
mov esi, edx
repe cmpsb byte [esi], byte es:[edi]
je 0x40c7e9
mov edi, 0x4c4c60
mov ecx, 4
mov esi, edx
repe cmpsb byte [esi], byte es:[edi]
je 0x40c7ce
mov edi, str.start_server
mov ecx, 0xd
mov esi, edx
repe cmpsb byte [esi], byte es:[edi]
je 0x40c7b7
mov ecx, 7
mov edi, 0x4c4c83
mov esi, edx
repe cmpsb byte [esi], byte es:[edi]
setb al
seta cl
sub ecx, eax
movsx eax, cl
test eax, eax
mov dword [ebp - 0x204c], eax
je 0x40c9ae
mov ecx, 8
mov edi, str.restore
mov esi, edx
repe cmpsb byte [esi], byte es:[edi]
setb al
seta cl
sub ecx, eax
movsx eax, cl
test eax, eax
mov dword [ebp - 0x204c], eax
je 0x40c947
mov edi, str.keygen
mov ecx, 7
mov esi, edx
repe cmpsb byte [esi], byte es:[edi]
jne 0x40cb4f
cmp dword [ebp + 8], 1
jle 0x40b067
mov eax, dword [ebx + 4]
mov dword [esp], eax
call fcn.0040fe90
mov dword [ebp - 0x204c], eax
jmp 0x40ac53
mov ebx, dword [ebp - 0x2060]
lea eax, [ebp - 0x1018]
mov edx, str.get_state
mov ecx, dword [ebp - 0x2058]
xor esi, esi
mov dword [ebp - 0x2050], eax
mov dword [esp], ebx
call fcn.00409850
mov edi, dword [sym.imp.KERNEL32.dll_Sleep]
mov dword [esp], 0xfa
call edi
sub esp, 4
mov eax, dword [ebp - 0x2050]
mov dword [esp], eax
call fcn.0040e2b0
test eax, eax
mov ebx, eax
je 0x40c788
test esi, esi
je 0x40c713
mov dword [esp + 4], esi
mov dword [esp], eax
call sub.msvcrt.dll_strcmp
test eax, eax
je 0x40cbfa
mov dword [esp], esi
call sub.msvcrt.dll_free
mov dword [esp], ebx
call sub.msvcrt.dll__strdup
mov dword [esp + 8], 0x1b
mov dword [esp + 4], 0x1b
mov dword [esp], str._c_2J_c_2H
mov esi, eax
call fcn.00409720
mov dword [esp], str.Android_Debug_Bridge_n
call fcn.00409720
mov eax, ebx
mov dword [esp + 4], eax
mov dword [esp], str.State:__s_n
call fcn.00409720
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x20
mov dword [esp], eax
call sub.msvcrt.dll_fflush
mov dword [esp], 0xfa
call edi
sub esp, 4
test ebx, ebx
je 0x40c6db
mov dword [esp], ebx
call sub.msvcrt.dll_free
jmp 0x40c6db
mov dword [esp + 8], 0x1b
mov dword [esp + 4], 0x1b
mov dword [esp], str._c_2J_c_2H
call fcn.00409720
mov dword [esp], str.Android_Debug_Bridge_n
call fcn.00409720
mov eax, str.offline
jmp 0x40c747
mov dword [esp], 0x4c4c71
call fcn.0040de20
mov dword [ebp - 0x204c], eax
jmp 0x40ac53
mov dword [esp + 8], edx
mov dword [esp + 4], str.error:_adb__s_not_implemented_on_Win32_n
jmp 0x40c21e
mov dword [ebp - 0x204c], str.longcat
mov dword [esp], str.ANDROID_LOG_TAGS
call sub.msvcrt.dll_getenv
mov edx, 0x4c4398
test eax, eax
cmovne edx, eax
mov eax, edx
call fcn.00409950
mov dword [esp + 8], str.shell:export_ANDROID_LOG_TAGS__s___exec_logcat
mov dword [esp + 4], 0x1000
mov esi, eax
mov dword [esp + 0xc], eax
lea eax, [ebp - 0x1018]
mov dword [esp], eax
mov dword [ebp - 0x2050], eax
call fcn.00409740
mov dword [esp], esi
call sub.msvcrt.dll_free
mov esi, dword [ebx]
mov ecx, 8
mov edi, dword [ebp - 0x204c]
repe cmpsb byte [esi], byte es:[edi]
je 0x40c8fd
mov eax, dword [ebp + 8]
xor edi, edi
sub eax, 1
cmp dword [ebp + 8], 1
mov dword [ebp - 0x204c], eax
jle 0x40c8d7
mov eax, dword [ebx + edi*4 + 4]
call fcn.00409950
mov ecx, dword [ebp - 0x2050]
mov esi, eax
mov eax, dword [ecx]
add ecx, 4
lea edx, [eax - 0x1010101]
not eax
and edx, eax
and edx, 0x80808080
je 0x40c872
mov eax, edx
shr eax, 0x10
test edx, 0x8080
cmove edx, eax
lea eax, [ecx + 2]
cmove ecx, eax
add dl, dl
sbb ecx, 3
mov eax, 0x20
mov word [ecx], ax
mov eax, dword [ebp - 0x2050]
add edi, 1
mov dword [esp + 8], 0xfff
mov dword [esp + 4], esi
mov dword [esp], eax
call sub.msvcrt.dll_strncat
mov dword [esp], esi
call sub.msvcrt.dll_free
cmp edi, dword [ebp - 0x204c]
jne 0x40c861
mov ecx, dword [ebp - 0x2050]
mov edx, dword [ebp - 0x2060]
mov eax, dword [ebp - 0x2058]
call fcn.0040cf70
mov dword [ebp - 0x204c], 0
jmp 0x40ac53
mov edx, dword [ebp - 0x2050]
mov ecx, dword [edx]
add edx, 4
lea eax, [ecx - 0x1010101]
not ecx
and eax, ecx
and eax, 0x80808080
je 0x40c903
mov ecx, eax
shr ecx, 0x10
test eax, 0x8080
cmove eax, ecx
lea ecx, [edx + 2]
cmove edx, ecx
add al, al
sbb edx, 3
mov dword [edx], 0x20762d20
mov dword [edx + 4], 0x676e6f6c
mov byte [edx + 8], 0
jmp 0x40c84d
cmp dword [ebp + 8], 2
jne 0x40b067
mov esi, dword [ebx + 4]
mov dword [esp + 4], 0
mov dword [esp], esi
call fcn.00418ef0
test eax, eax
mov ebx, eax
js 0x40cb3e
mov dword [esp], str.restore:
call fcn.0040de20
test eax, eax
mov esi, eax
js 0x40cb0f
mov dword [esp], str.Now_unlock_your_device_and_confirm_the_restore_operation._n
call fcn.00409720
mov edx, esi
mov eax, ebx
call fcn.00409330
mov dword [esp], esi
call fcn.00419a30
mov dword [esp], ebx
call fcn.00419a30
jmp 0x40ac53
cmp dword [ebp + 8], 1
lea eax, [ebp - 0x2038]
mov dword [ebp - 0x2038], 0x61622f2e
mov dword [ebp - 0x2034], 0x70756b63
mov dword [ebp - 0x2030], 0x62612e
mov dword [ebp - 0x2054], eax
jle 0x40b067
lea eax, [ebx - 4]
mov edx, 1
mov dword [ebp - 0x205c], eax
lea eax, [edx*4]
mov esi, 0x4c4c8a
mov dword [ebp - 0x2050], eax
add eax, ebx
mov ecx, 3
mov edi, dword [eax]
mov dword [ebp - 0x2058], eax
repe cmpsb byte [esi], byte es:[edi]
seta cl
mov esi, ecx
setb cl
mov eax, esi
cmp al, cl
jne 0x40ca7f
mov eax, dword [ebp + 8]
lea ecx, [eax - 1]
cmp edx, ecx
je 0x40ce8b
mov eax, dword [ebp - 0x2050]
lea ecx, [edx + 2]
cmp ecx, dword [ebp + 8]
mov eax, dword [ebx + eax + 4]
mov dword [ebp - 0x2054], eax
jg 0x40ca71
mov edi, dword [ebp - 0x205c]
mov esi, dword [ebp + 8]
mov eax, dword [ebp - 0x2058]
lea ecx, [edi + esi*4]
mov esi, dword [eax + 8]
add eax, 4
mov dword [eax - 4], esi
cmp eax, ecx
jne 0x40ca59
mov eax, dword [ebp + 8]
lea eax, [edx + eax - 1]
sub eax, edx
mov edx, eax
sub dword [ebp + 8], 2
mov eax, dword [ebp + 8]
mov dword [ebx + eax*4], 0
add edx, 1
cmp edx, dword [ebp + 8]
jl 0x40c9f0
cmp dword [ebp + 8], 1
jle 0x40b067
mov eax, dword [ebp - 0x2054]
mov dword [esp], eax
call sub.msvcrt.dll__unlink
cmp eax, 0xffffffff
je 0x40ce98
mov eax, dword [ebp - 0x2054]
lea esi, [eax + 1]
mov dword [esp + 4], 0x2f
mov dword [esp], esi
call sub.msvcrt.dll_strchr
mov dword [esp + 4], 0x5c
mov dword [esp], esi
mov edi, eax
call sub.msvcrt.dll_strchr
test edi, edi
je 0x40cae3
cmp edi, eax
jae 0x40caed
test eax, eax
je 0x40caed
test eax, eax
je 0x40cc46
mov edi, eax
mov eax, dword [ebp - 0x2054]
mov byte [edi], 0
mov dword [esp], eax
call dword [sym.imp.msvcrt.dll__mkdir]
mov byte [edi], 0x5c
test eax, eax
js 0x40cc35
lea esi, [edi + 1]
jmp 0x40cab5
mov eax, dword [sym.imp.msvcrt.dll__iob]
mov dword [esp + 4], str.adb:_unable_to_connect_for_restore_n
add eax, 0x40
mov dword [esp], eax
call fcn.00408e50
mov dword [esp], ebx
call fcn.00419a30
mov dword [ebp - 0x204c], 0xffffffff
jmp 0x40ac53
mov dword [esp + 8], esi
mov dword [esp + 4], str.adb:_unable_to_open_file__s_n
jmp 0x40c21e
mov ecx, 5
mov edi, str.jdwp
mov esi, edx
repe cmpsb byte [esi], byte es:[edi]
setb al
seta cl
sub ecx, eax
movsx eax, cl
test eax, eax
mov dword [ebp - 0x204c], eax
je 0x40cc0b
mov edi, str.help
mov ecx, 5
mov esi, edx
repe cmpsb byte [esi], byte es:[edi]
je 0x40b908
mov edi, 0x4c4dcc
mov ecx, 3
mov esi, edx
repe cmpsb byte [esi], byte es:[edi]
je 0x40b908
mov esi, edx
mov edi, 0x4c4dcf
mov ecx, 8
repe cmpsb byte [esi], byte es:[edi]
setb al
seta dl
sub edx, eax
movsx eax, dl
test eax, eax
mov dword [ebp - 0x204c], eax
jne 0x40b067
mov eax, dword [sym.imp.msvcrt.dll__iob]
mov dword [esp + 0x10], 0x20
mov dword [esp + 0xc], 0
mov dword [esp + 8], 1
add eax, 0x20
mov dword [esp + 4], str.Android_Debug_Bridge_version__d._d._d_n
mov dword [esp], eax
call fcn.00408e50
jmp 0x40ac53
mov dword [esp], 0xfa
call edi
sub esp, 4
jmp 0x40c77b
mov dword [esp], str.jdwp
call fcn.0040de20
test eax, eax
mov ebx, eax
js 0x40c20d
call fcn.00409130
mov dword [esp], ebx
call fcn.00419a30
nop
jmp 0x40ac53
call dword [sym.imp.msvcrt.dll__errno]
cmp dword [eax], 0x11
nop
je 0x40cb0a
mov eax, dword [ebp - 0x2054]
mov dword [esp + 4], 0x1a0
mov dword [esp], eax
call fcn.00419440
test eax, eax
mov dword [ebp - 0x2058], eax
js 0x40ce3f
lea eax, [ebp - 0x1018]
xor esi, esi
mov dword [esp + 8], 0x4c4c83
mov edi, 0xfff
mov dword [esp + 4], 0x1000
mov dword [esp], eax
mov dword [ebp - 0x2050], eax
call fcn.00409740
mov eax, dword [ebp + 8]
sub eax, 1
mov dword [ebp - 0x205c], eax
mov edx, dword [ebp - 0x2050]
mov ecx, dword [edx]
add edx, 4
lea eax, [ecx - 0x1010101]
not ecx
and eax, ecx
and eax, 0x80808080
je 0x40cca7
mov ecx, eax
shr ecx, 0x10
test eax, 0x8080
cmove eax, ecx
lea ecx, [edx + 2]
cmove edx, ecx
mov ecx, dword [ebp - 0x2050]
add al, al
sbb edx, 3
mov eax, edi
mov dword [esp + 4], 0x4c4cce
sub edx, ecx
sub eax, edx
mov dword [esp + 8], eax
mov dword [esp], ecx
call sub.msvcrt.dll_strncat
mov edx, dword [ebp - 0x2050]
mov ecx, dword [edx]
add edx, 4
lea eax, [ecx - 0x1010101]
not ecx
and eax, ecx
and eax, 0x80808080
je 0x40ccfb
mov ecx, eax
shr ecx, 0x10
test eax, 0x8080
cmove eax, ecx
lea ecx, [edx + 2]
cmove edx, ecx
mov ecx, dword [ebp - 0x2050]
add al, al
sbb edx, 3
mov eax, edi
sub edx, ecx
sub eax, edx
mov dword [esp + 8], eax
mov eax, dword [ebx + esi*4 + 4]
add esi, 1
mov dword [esp], ecx
mov dword [esp + 4], eax
call sub.msvcrt.dll_strncat
cmp esi, dword [ebp - 0x205c]
jne 0x40cca1
test byte [0x504120], 1
je 0x40cdfb
mov edi, dword [sym.imp.msvcrt.dll__errno]
call edi
mov esi, dword [eax]
mov dword [esp], 0x504108
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
sub esp, 4
mov dword [esp + 0xc], str.backup
mov dword [esp + 8], str.system_core_adb_commandline.c
mov dword [esp + 4], 0x4c199e
mov dword [esp], eax
call fcn.00408e50
call edi
mov dword [eax], esi
mov eax, dword [ebp - 0x2050]
mov dword [esp + 4], str.backup._filename_s_buf_s_n
mov dword [esp + 0xc], eax
mov eax, dword [ebp - 0x2054]
mov dword [esp + 8], eax
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp], eax
call fcn.00408e50
mov eax, dword [sym.imp.msvcrt.dll__iob]
add eax, 0x40
mov dword [esp], eax
call sub.msvcrt.dll_fflush
mov dword [esp], 0x504108
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
sub esp, 4
call edi
mov dword [eax], esi
mov eax, dword [ebp - 0x2050]
mov dword [esp], eax
call fcn.0040de20
test eax, eax
mov esi, eax
js 0x40ce56
mov dword [esp], str.Now_unlock_your_device_and_confirm_the_backup_operation._n
call fcn.00409720
mov ebx, dword [ebp - 0x2058]
mov eax, esi
mov edx, ebx
call fcn.00409330
mov dword [esp], esi
call fcn.00419a30
mov dword [esp], ebx
call fcn.00419a30
jmp 0x40ac53
mov eax, dword [ebp - 0x2054]
mov dword [esp + 4], str.adb:_unable_to_open_file__s_n
mov dword [esp + 8], eax
jmp 0x40c21e
mov eax, dword [sym.imp.msvcrt.dll__iob]
mov dword [esp + 4], str.adb:_unable_to_connect_for_backup_n
add eax, 0x40
mov dword [esp], eax
call fcn.00408e50
mov eax, dword [ebp - 0x2058]
mov dword [esp], eax
call fcn.00419a30
mov dword [ebp - 0x204c], 0xffffffff
jmp 0x40ac53
mov dword [esp + 4], str.adb:__f_passed_with_no_filename_n
jmp 0x40b057
call dword [sym.imp.msvcrt.dll__errno]
cmp dword [eax], 0xd
jne 0x40caac
mov eax, dword [ebp - 0x2054]
mov dword [esp + 4], 0x180
mov dword [esp], eax
call sub.msvcrt.dll__chmod
test eax, eax
jne 0x40caac
mov eax, dword [ebp - 0x2054]
mov dword [esp], eax
call sub.msvcrt.dll__unlink
jmp 0x40caac