Function at 0x407370
Capabilities:
Get number of processors
Query environment variable
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x45affb
mov eax, dword fs:[0]
push eax
push ecx
mov eax, 0x109c
call fcn.0045a200
mov eax, dword [0x480160]
xor eax, esp
mov dword [esp + 0x1098], eax
push ebx
push esi
push edi
mov eax, dword [0x480160]
xor eax, esp
push eax
lea eax, [esp + 0x10b0]
mov dword fs:[0], eax
mov eax, dword [ebp + 8]
mov esi, dword [sym.imp.MSVCR100.dll_getenv]
xor ebx, ebx
push str.ANDROID_PRODUCT_OUT
mov dword [esp + 0x14], eax
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x24], ebx
mov dword [esp + 0x20], ebx
mov dword [esp + 0x30], ebx
mov dword [esp + 0x28], 2
call esi
add esp, 4
mov dword [0x4936ec], eax
cmp eax, ebx
je 0x4073f3
cmp byte [eax], bl
jne 0x4073f9
mov dword [0x4936ec], ebx
push str.ANDROID_SERIAL
call esi
add esp, 4
push str.ANDROID_ADB_SERVER_PORT
mov dword [esp + 0x2c], eax
call esi
mov esi, eax
add esp, 4
mov dword [esp + 0x30], 0x13ad
cmp esi, ebx
je 0x407464
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x407422
sub eax, edx
je 0x407464
push ebx
push ebx
push esi
call dword [sym.imp.MSVCR100.dll_strtol]
add esp, 0xc
mov dword [esp + 0x30], eax
cmp eax, ebx
jg 0x407464
push esi
push str.adb:_Env_var_ANDROID_ADB_SERVER_PORT_must_be_a_positive_number._Got___s__n
call dword [sym.imp.MSVCR100.dll___iob_func]
add eax, 0x40
push eax
call dword [sym.imp.MSVCR100.dll_fprintf]
add esp, 0xc
mov eax, 1
jmp 0x408c70
cmp dword [esp + 0x10], ebx
jle 0x4076b7
mov edi, dword [sym.imp.MSVCR100.dll_isdigit]
mov edx, dword [esp + 0x18]
mov esi, dword [edx]
mov ecx, str.server
mov eax, esi
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x4074a1
test dl, dl
je 0x40749d
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x4074a1
add eax, 2
add ecx, 2
test dl, dl
jne 0x407481
xor eax, eax
jmp 0x4074a6
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x4074b2
lea ebx, [eax + 1]
jmp 0x4076a1
mov ecx, str.nodaemon
mov eax, esi
lea esp, [esp]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x4074e0
test dl, dl
je 0x4074dc
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x4074e0
add eax, 2
add ecx, 2
test dl, dl
jne 0x4074c0
xor eax, eax
jmp 0x4074e5
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x4074f6
mov dword [esp + 0x20], 1
jmp 0x4076a1
mov ecx, str.fork_server
mov eax, esi
lea ecx, [ecx]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x407520
test dl, dl
je 0x40751c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x407520
add eax, 2
add ecx, 2
test dl, dl
jne 0x407500
xor eax, eax
jmp 0x407525
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x407536
mov dword [esp + 0x1c], 1
jmp 0x4076a1
mov ecx, str.persist
mov eax, esi
lea ecx, [ecx]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x407560
test dl, dl
je 0x40755c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x407560
add eax, 2
add ecx, 2
test dl, dl
jne 0x407540
xor eax, eax
jmp 0x407565
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x407576
mov dword [esp + 0x2c], 1
jmp 0x4076a1
push 2
push 0x46fc14
push esi
call dword [sym.imp.MSVCR100.dll_strncmp]
add esp, 0xc
test eax, eax
jne 0x4075d0
mov ecx, dword [esp + 0x18]
mov esi, dword [ecx]
add esi, 2
cmp byte [esi], al
jne 0x4075b1
cmp dword [esp + 0x10], 2
jl 0x40745a
mov esi, dword [ecx + 4]
dec dword [esp + 0x10]
add ecx, 4
mov dword [esp + 0x18], ecx
mov ecx, esi
call fcn.00407130
mov dword [0x4936ec], eax
test eax, eax
jne 0x4076a1
push esi
push str.adb:_could_not_resolve___p__s__n
jmp 0x407447
mov eax, dword [esp + 0x18]
mov esi, dword [eax]
cmp byte [esi], 0x2d
jne 0x407630
cmp byte [esi + 1], 0x73
jne 0x407630
movsx ecx, byte [esi + 2]
push ecx
call edi
add esp, 4
test eax, eax
je 0x407601
mov edx, dword [esp + 0x18]
mov eax, dword [edx]
add eax, 2
mov dword [esp + 0x28], eax
jmp 0x4076a1
cmp dword [esp + 0x10], 2
jl 0x40745a
mov eax, dword [esp + 0x18]
mov ecx, dword [eax]
cmp byte [ecx + 2], 0
jne 0x40745a
mov edx, dword [eax + 4]
dec dword [esp + 0x10]
add eax, 4
mov dword [esp + 0x28], edx
mov dword [esp + 0x18], eax
jmp 0x4076a1
mov edx, 0x46fc38
mov ecx, esi
mov al, byte [ecx]
cmp al, byte [edx]
jne 0x407657
test al, al
je 0x407653
mov al, byte [ecx + 1]
cmp al, byte [edx + 1]
jne 0x407657
add ecx, 2
add edx, 2
test al, al
jne 0x407637
xor eax, eax
jmp 0x40765c
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x407666
mov dword [esp + 0x24], eax
jmp 0x4076a1
mov ecx, 0x46fc3c
mov eax, esi
lea ecx, [ecx]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x407690
test dl, dl
je 0x40768c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x407690
add eax, 2
add ecx, 2
test dl, dl
jne 0x407670
xor eax, eax
jmp 0x407695
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x4076b7
mov dword [esp + 0x24], 1
mov eax, dword [esp + 0x10]
add dword [esp + 0x18], 4
dec eax
mov dword [esp + 0x10], eax
test eax, eax
jg 0x407474
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x28]
mov dword [0x480354], eax
mov eax, dword [esp + 0x30]
mov dword [0x4936e8], ecx
mov dword [0x4803ac], eax
test ebx, ebx
je 0x40771a
cmp dword [esp + 0x20], 0
jne 0x40770f
cmp dword [esp + 0x1c], 0
jne 0x40770f
call fcn.00402960
mov esi, eax
test esi, esi
je 0x407708
push str._could_not_start_server__n
call dword [sym.imp.MSVCR100.dll___iob_func]
add eax, 0x40
push eax
call dword [sym.imp.MSVCR100.dll_fprintf]
add esp, 8
mov eax, esi
jmp 0x408c70
mov edx, dword [esp + 0x1c]
push eax
push edx
call fcn.00402ba0
mov edi, dword [esp + 0x10]
test edi, edi
je 0x40745a
jmp 0x407730
mov esi, dword [esp + 0x18]
mov ebx, dword [esi]
mov ecx, str.shortcut
mov eax, ebx
lea ecx, [ecx]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x407760
test dl, dl
je 0x40775c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x407760
add eax, 2
add ecx, 2
test dl, dl
jne 0x407740
xor eax, eax
jmp 0x407765
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x407c10
mov ecx, str.devices
mov eax, ebx
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x407794
test dl, dl
je 0x407790
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x407794
add eax, 2
add ecx, 2
test dl, dl
jne 0x407774
xor eax, eax
jmp 0x407799
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x407dc0
mov ecx, str.connect
mov eax, ebx
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x4077c8
test dl, dl
je 0x4077c4
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x4077c8
add eax, 2
add ecx, 2
test dl, dl
jne 0x4077a8
xor eax, eax
jmp 0x4077cd
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x407e8c
mov ecx, str.disconnect
mov eax, ebx
lea esp, [esp]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x407800
test dl, dl
je 0x4077fc
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x407800
add eax, 2
add ecx, 2
test dl, dl
jne 0x4077e0
xor eax, eax
jmp 0x407805
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x407ee2
mov ecx, 0x46fd74
mov eax, ebx
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x407834
test dl, dl
je 0x407830
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x407834
add eax, 2
add ecx, 2
test dl, dl
jne 0x407814
xor eax, eax
jmp 0x407839
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x407f5a
mov ecx, str.shell
mov eax, ebx
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x407868
test dl, dl
je 0x407864
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x407868
add eax, 2
add ecx, 2
test dl, dl
jne 0x407848
xor eax, eax
jmp 0x40786d
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x4087f7
mov ecx, str.hell
mov eax, ebx
lea esp, [esp]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x4078a0
test dl, dl
je 0x40789c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x4078a0
add eax, 2
add ecx, 2
test dl, dl
jne 0x407880
xor eax, eax
jmp 0x4078a5
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x4087f7
mov ecx, str.kill_server
mov eax, ebx
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x4078d4
test dl, dl
je 0x4078d0
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x4078d4
add eax, 2
add ecx, 2
test dl, dl
jne 0x4078b4
xor eax, eax
jmp 0x4078d9
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x407f69
mov ecx, str.sideload
mov eax, ebx
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x407908
test dl, dl
je 0x407904
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x407908
add eax, 2
add ecx, 2
test dl, dl
jne 0x4078e8
xor eax, eax
jmp 0x40790d
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x407f89
mov ecx, str.remount
mov eax, ebx
lea esp, [esp]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x407940
test dl, dl
je 0x40793c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x407940
add eax, 2
add ecx, 2
test dl, dl
jne 0x407920
xor eax, eax
jmp 0x407945
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x40873c
mov ecx, str.reboot
mov eax, ebx
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x407974
test dl, dl
je 0x407970
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x407974
add eax, 2
add ecx, 2
test dl, dl
jne 0x407954
xor eax, eax
jmp 0x407979
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x40873c
mov ecx, str.reboot_bootloader
mov eax, ebx
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x4079a8
test dl, dl
je 0x4079a4
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x4079a8
add eax, 2
add ecx, 2
test dl, dl
jne 0x407988
xor eax, eax
jmp 0x4079ad
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x40873c
mov ecx, str.tcpip
mov eax, ebx
lea esp, [esp]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x4079e0
test dl, dl
je 0x4079dc
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x4079e0
add eax, 2
add ecx, 2
test dl, dl
jne 0x4079c0
xor eax, eax
jmp 0x4079e5
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x40873c
mov ecx, 0x46e54c
mov eax, ebx
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x407a14
test dl, dl
je 0x407a10
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x407a14
add eax, 2
add ecx, 2
test dl, dl
jne 0x4079f4
xor eax, eax
jmp 0x407a19
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x40873c
mov ecx, str.root
mov eax, ebx
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x407a48
test dl, dl
je 0x407a44
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x407a48
add eax, 2
add ecx, 2
test dl, dl
jne 0x407a28
xor eax, eax
jmp 0x407a4d
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x40873c
mov ecx, str.bugreport
mov eax, ebx
lea esp, [esp]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x407a80
test dl, dl
je 0x407a7c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x407a80
add eax, 2
add ecx, 2
test dl, dl
jne 0x407a60
xor eax, eax
jmp 0x407a85
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x407fa5
push 9
push str.wait_for_
push ebx
call dword [sym.imp.MSVCR100.dll_strncmp]
add esp, 0xc
test eax, eax
jne 0x407fd3
mov eax, dword [esp + 0x18]
mov esi, dword [eax]
push 0xf
push str.wait_for_device
push esi
call dword [sym.imp.MSVCR100.dll_strncmp]
mov ecx, dword [esp + 0x30]
add esp, 0xc
test eax, eax
jne 0x407adf
test ecx, ecx
jne 0x407ad0
mov esi, str.wait_for_usb
jmp 0x407adf
mov esi, str.wait_for_local
cmp ecx, 1
je 0x407adf
mov esi, str.wait_for_any
mov eax, dword [esp + 0x28]
test eax, eax
je 0x407afd
push esi
push eax
push str.host_serial:_s:_s
push 0x1000
lea ecx, [esp + 0xb4]
push ecx
jmp 0x407b2b
mov eax, str.host
test ecx, ecx
jne 0x407b0d
mov eax, str.host_usb
jmp 0x407b17
cmp ecx, 1
jne 0x407b17
mov eax, str.host_local
push esi
push eax
push str._s:_s
push 0x1000
lea edx, [esp + 0xb4]
push edx
call dword [sym.imp.MSVCR100.dll__snprintf]
lea eax, [esp + 0xb8]
add esp, 0x14
push eax
call fcn.004057d0
mov esi, eax
add esp, 4
test esi, esi
js 0x407b82
mov ecx, esi
call fcn.004053f0
test eax, eax
jne 0x407b7b
mov eax, dword [esp + 0x10]
cmp eax, 1
jle 0x407db9
add dword [esp + 0x18], 4
dec eax
mov dword [esp + 0x10], eax
test eax, eax
je 0x40745a
mov edi, eax
jmp 0x407730
mov eax, esi
call fcn.0040ff10
test byte [0x4815b8], 1
mov esi, dword [sym.imp.MSVCR100.dll___iob_func]
je 0x407bff
mov edi, dword [sym.imp.MSVCR100.dll__errno]
call edi
mov ebx, dword [eax]
push 0x4815a0
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
push str.adb_commandline
push str.commandline.cpp
push str._s::_s__:
call esi
add eax, 0x40
push eax
call dword [sym.imp.MSVCR100.dll_fprintf]
add esp, 0x10
call edi
push 0x4936f0
push str.failure:__s__n
mov dword [eax], ebx
call esi
add eax, 0x40
push eax
call dword [sym.imp.MSVCR100.dll_fprintf]
add esp, 0xc
call esi
add eax, 0x40
push eax
call dword [sym.imp.MSVCR100.dll_fflush]
add esp, 4
push 0x4815a0
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
call edi
mov dword [eax], ebx
push 0x4936f0
push str.error:__s_n
call esi
jmp 0x40744d
cmp edi, 2
jl 0x40745a
push str.framebuffer:
call fcn.004057d0
mov esi, eax
xor edi, edi
add esp, 4
mov dword [esp + 0x1c], esi
cmp esi, edi
jl 0x40745a
mov dword [esp + 0x20], edi
mov byte [esp + 0x17], 0
mov dword [esp + 0x74], edi
mov dword [esp + 0x78], edi
mov byte [esp + 0x70], 0
cmp dword [esp + 0x10], 3
mov dword [esp + 0x10b8], edi
jne 0x407c94
mov ecx, dword [esp + 0x18]
mov ecx, dword [ecx + 4]
mov eax, 0x46fc78
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x407c86
test dl, dl
je 0x407c82
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x407c86
add eax, 2
add ecx, 2
test dl, dl
jne 0x407c66
xor eax, eax
jmp 0x407c8b
sbb eax, eax
sbb eax, 0xffffffff
cmp eax, edi
jne 0x407c94
mov byte [esp + 0x70], 1
push 4
lea edx, [esp + 0x38]
push edx
push esi
call fcn.00415900
add esp, 0xc
cmp eax, edi
je 0x407cb8
mov dword [esp + 0x10b8], 0xffffffff
jmp 0x407d89
mov eax, dword [esp + 0x34]
mov dword [esp + 0x3c], eax
dec eax
je 0x407cd3
sub eax, 0xf
je 0x407ccc
xor eax, eax
jmp 0x407cd8
mov eax, 3
jmp 0x407cd8
mov eax, 0xc
mov ebx, dword [sym.imp.MSVCR100.dll_void____cdecl_operator_new___unsigned_int_]
lea esi, [eax*4]
push esi
call ebx
add esp, 4
mov edi, eax
mov eax, dword [esp + 0x1c]
push esi
push edi
push eax
mov dword [esp + 0x2c], edi
call fcn.00415900
add esp, 0xc
test eax, eax
je 0x407d11
mov dword [esp + 0x10b8], 0xffffffff
jmp 0x407d89
mov ecx, edi
lea eax, [esp + 0x3c]
call fcn.0040bbd0
test al, al
je 0x407d6c
mov edi, dword [esp + 0x44]
push edi
call ebx
mov ecx, dword [esp + 0x20]
add esp, 4
mov esi, eax
push edi
push esi
push ecx
call fcn.00415900
add esp, 0xc
push esi
test eax, eax
je 0x407d4b
call dword [sym.imp.MSVCR100.dll_void___cdecl_operator_delete_void__]
add esp, 4
jmp 0x407d6c
lea esi, [esp + 0x40]
call fcn.0040bce0
mov edx, dword [esp + 0x18]
mov eax, dword [esp + 0x10]
mov ecx, dword [edx + eax*4 - 4]
push ecx
mov ecx, esi
call fcn.0040c030
mov byte [esp + 0x17], al
mov dword [esp + 0x10b8], 0xffffffff
mov eax, dword [esp + 0x74]
test eax, eax
je 0x407d89
push eax
call dword [sym.imp.MSVCR100.dll_void___cdecl_operator_delete_void__]
add esp, 4
mov edx, dword [esp + 0x20]
push edx
call dword [sym.imp.MSVCR100.dll_void___cdecl_operator_delete_void__]
mov eax, dword [esp + 0x20]
add esp, 4
call fcn.0040ff10
cmp byte [esp + 0x17], 0
je 0x40745a
push str.shortcut_success__n
call dword [sym.imp.MSVCR100.dll_printf]
add esp, 4
xor eax, eax
jmp 0x408c70
cmp edi, 2
jge 0x407dcc
mov eax, 0x46f8ad
jmp 0x407e0b
jne 0x407e6a
mov eax, dword [esp + 0x18]
mov esi, dword [eax + 4]
mov ecx, 0x46ed20
mov eax, esi
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x407e00
test dl, dl
je 0x407dfc
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x407e00
add eax, 2
add ecx, 2
test dl, dl
jne 0x407de0
xor eax, eax
jmp 0x407e05
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x407e6a
mov eax, esi
mov ecx, dword [esp + 0x18]
mov edx, dword [ecx]
push eax
push edx
push str.host:_s_s
lea eax, [esp + 0xb0]
push 0x1000
push eax
call dword [sym.imp.MSVCR100.dll__snprintf]
lea ecx, [esp + 0xb8]
add esp, 0x14
push ecx
call fcn.00405af0
mov esi, eax
add esp, 4
test esi, esi
je 0x40745a
mov edi, dword [sym.imp.MSVCR100.dll_printf]
push str.List_of_devices_attached__n
call edi
add esp, 4
push esi
push 0x46fcd4
call edi
add esp, 8
xor eax, eax
jmp 0x408c70
push str.Usage:_adb_devices___l__n
call dword [sym.imp.MSVCR100.dll___iob_func]
add eax, 0x40
push eax
call dword [sym.imp.MSVCR100.dll_fprintf]
add esp, 8
mov eax, 1
jmp 0x408c70
cmp edi, 2
je 0x407e98
push str.Usage:_adb_connect__host__:_port___n
jmp 0x407e6f
mov edx, dword [esi + 4]
push edx
push str.host:connect:_s
lea eax, [esp + 0xac]
push 0x1000
push eax
call dword [sym.imp.MSVCR100.dll__snprintf]
lea ecx, [esp + 0xb4]
push ecx
call fcn.00405af0
add esp, 0x14
test eax, eax
je 0x40745a
push eax
push 0x46fcd4
call dword [sym.imp.MSVCR100.dll_printf]
add esp, 8
xor eax, eax
jmp 0x408c70
cmp edi, 2
jle 0x407eee
push str.Usage:_adb_disconnect___host__:_port____n
jmp 0x407e6f
jne 0x407f11
mov edx, dword [esi + 4]
push edx
push str.host:disconnect:_s
lea eax, [esp + 0xac]
push 0x1000
push eax
call dword [sym.imp.MSVCR100.dll__snprintf]
add esp, 0x10
jmp 0x407f2c
push str.host:disconnect:
lea ecx, [esp + 0xa8]
push 0x1000
push ecx
call dword [sym.imp.MSVCR100.dll__snprintf]
add esp, 0xc
lea edx, [esp + 0xa4]
push edx
call fcn.00405af0
add esp, 4
test eax, eax
je 0x40745a
push eax
push 0x46fcd4
call dword [sym.imp.MSVCR100.dll_printf]
add esp, 8
xor eax, eax
jmp 0x408c70
push esi
push edi
call fcn.00409560
add esp, 8
jmp 0x408c70
push str.host:kill
call fcn.00405550
add esp, 4
cmp eax, 0xffffffff
jne 0x407db9
push str._server_not_running__n
jmp 0x407e6f
cmp edi, 2
jne 0x40745a
mov ecx, dword [esi + 4]
call fcn.00406770
neg eax
sbb eax, eax
neg eax
jmp 0x408c70
cmp edi, 1
jne 0x40745a
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x24]
push 0
push str.bugreport
push str.shell
push eax
push ecx
call fcn.00408ca0
add esp, 0x14
xor eax, eax
jmp 0x408c70
mov ebx, dword [esp + 0x18]
mov esi, dword [ebx]
mov ecx, str.forward
mov eax, esi
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x408000
test dl, dl
je 0x407ffc
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x408000
add eax, 2
add ecx, 2
test dl, dl
jne 0x407fe0
xor eax, eax
jmp 0x408005
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x4080a9
cmp dword [esp + 0x10], 3
jne 0x40745a
mov eax, dword [esp + 0x28]
mov ecx, dword [ebx + 4]
test eax, eax
je 0x408046
mov edx, dword [ebx + 8]
push edx
push ecx
push eax
push str.host_serial:_s:forward:_s__s
lea edx, [esp + 0xb4]
push 0x1000
push edx
call dword [sym.imp.MSVCR100.dll__snprintf]
add esp, 0x18
jmp 0x408086
mov eax, dword [esp + 0x24]
test eax, eax
jne 0x40805a
mov eax, dword [ebx + 8]
push eax
push ecx
push str.host_usb:forward:_s__s
jmp 0x408070
cmp eax, 1
mov eax, dword [ebx + 8]
push eax
push ecx
jne 0x40806b
push str.host_local:forward:_s__s
jmp 0x408070
push str.host:forward:_s__s
lea edx, [esp + 0xb0]
push 0x1000
push edx
call dword [sym.imp.MSVCR100.dll__snprintf]
add esp, 0x14
lea eax, [esp + 0xa4]
call fcn.00405ac0
test eax, eax
je 0x407db9
push 0x4936f0
push str.error:__s_n
jmp 0x407447
mov ecx, 0x46ffcc
mov eax, esi
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x4080d0
test dl, dl
je 0x4080cc
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x4080d0
add eax, 2
add ecx, 2
test dl, dl
jne 0x4080b0
xor eax, eax
jmp 0x4080d5
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x4080f1
cmp dword [esp + 0x10], 2
jne 0x40745a
mov esi, dword [ebx + 4]
call fcn.0040a370
jmp 0x408c70
mov ecx, str.push
mov eax, esi
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x408118
test dl, dl
je 0x408114
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x408118
add eax, 2
add ecx, 2
test dl, dl
jne 0x4080f8
xor eax, eax
jmp 0x40811d
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x40813c
cmp dword [esp + 0x10], 3
jne 0x40745a
mov edx, dword [ebx + 8]
mov ecx, dword [ebx + 4]
call fcn.0040aa70
jmp 0x408c70
mov ecx, str.pull
mov eax, esi
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x408163
test dl, dl
je 0x40815f
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x408163
add eax, 2
add ecx, 2
test dl, dl
jne 0x408143
xor eax, eax
jmp 0x408168
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x4081a7
mov eax, dword [esp + 0x10]
cmp eax, 2
jne 0x40818a
mov ecx, dword [ebx + 4]
push 0x46ffe0
call fcn.0040afa0
add esp, 4
jmp 0x408c70
cmp eax, 3
jne 0x40745a
mov eax, dword [ebx + 8]
mov ecx, dword [ebx + 4]
push eax
call fcn.0040afa0
add esp, 4
jmp 0x408c70
mov ecx, str.install
mov eax, esi
mov edi, edi
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x4081d0
test dl, dl
je 0x4081cc
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x4081d0
add eax, 2
add ecx, 2
test dl, dl
jne 0x4081b0
xor eax, eax
jmp 0x4081d5
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x4081f5
mov eax, dword [esp + 0x10]
cmp eax, 2
jl 0x40745a
push ebx
push eax
call fcn.00409110
add esp, 8
jmp 0x408c70
mov ecx, str.uninstall
mov eax, esi
lea esp, [esp]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x408220
test dl, dl
je 0x40821c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x408220
add eax, 2
add ecx, 2
test dl, dl
jne 0x408200
xor eax, eax
jmp 0x408225
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x408242
mov ecx, dword [esp + 0x10]
cmp ecx, 2
jl 0x40745a
mov edx, ebx
call fcn.00408f70
jmp 0x408c70
mov ecx, str.sync
mov eax, esi
lea esp, [esp]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x408270
test dl, dl
je 0x40826c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x408270
add eax, 2
add ecx, 2
test dl, dl
jne 0x408250
xor eax, eax
jmp 0x408275
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x408355
mov edi, dword [esp + 0x10]
mov dword [esp + 0x1c], eax
cmp edi, 2
jl 0x4082de
mov esi, dword [ebx + 4]
mov ecx, 0x46ed20
mov eax, esi
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x4082b4
test dl, dl
je 0x4082b0
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x4082b4
add eax, 2
add ecx, 2
test dl, dl
jne 0x408294
xor eax, eax
jmp 0x4082b9
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x4082d3
mov dword [esp + 0x1c], 1
cmp edi, 3
jne 0x4082cf
mov eax, dword [ebx + 8]
jmp 0x4082de
xor eax, eax
jmp 0x4082de
cmp edi, 2
jne 0x40745a
mov eax, esi
lea ecx, [esp + 0x20]
push ecx
lea edx, [esp + 0x30]
push edx
call fcn.00408d20
mov edi, eax
add esp, 8
test edi, edi
jne 0x40745a
mov esi, dword [esp + 0x2c]
test esi, esi
je 0x40831c
mov eax, dword [esp + 0x1c]
push eax
mov edi, str._system
mov ebx, esi
call fcn.0040b220
mov edi, eax
add esp, 4
test edi, edi
jne 0x408338
mov ebx, dword [esp + 0x20]
test ebx, ebx
je 0x408338
mov ecx, dword [esp + 0x1c]
push ecx
mov edi, str._data
call fcn.0040b220
add esp, 4
mov edi, eax
push esi
mov esi, dword [sym.imp.MSVCR100.dll_free]
call esi
mov edx, dword [esp + 0x24]
add esp, 4
push edx
call esi
add esp, 4
mov eax, edi
jmp 0x408c70
mov ecx, str.get_state
mov eax, esi
lea esp, [esp]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x408380
test dl, dl
je 0x40837c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x408380
add eax, 2
add ecx, 2
test dl, dl
jne 0x408360
xor eax, eax
jmp 0x408385
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x40871e
mov ecx, str.get_serialno
mov eax, esi
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x4083b4
test dl, dl
je 0x4083b0
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x4083b4
add eax, 2
add ecx, 2
test dl, dl
jne 0x408394
xor eax, eax
jmp 0x4083b9
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x40871e
mov ecx, str.get_devpath
mov eax, esi
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x4083e8
test dl, dl
je 0x4083e4
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x4083e8
add eax, 2
add ecx, 2
test dl, dl
jne 0x4083c8
xor eax, eax
jmp 0x4083ed
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x40871e
mov ecx, str.status_window
mov eax, esi
lea esp, [esp]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x408420
test dl, dl
je 0x40841c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x408420
add eax, 2
add ecx, 2
test dl, dl
jne 0x408400
xor eax, eax
jmp 0x408425
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x408437
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x24]
push eax
call fcn.004067d0
mov ecx, str.logcat
mov eax, esi
mov edi, edi
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x408460
test dl, dl
je 0x40845c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x408460
add eax, 2
add ecx, 2
test dl, dl
jne 0x408440
xor eax, eax
jmp 0x408465
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x40870a
mov ecx, str.lolcat
mov eax, esi
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x408494
test dl, dl
je 0x408490
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x408494
add eax, 2
add ecx, 2
test dl, dl
jne 0x408474
xor eax, eax
jmp 0x408499
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x40870a
mov ecx, str.longcat
mov eax, esi
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x4084c8
test dl, dl
je 0x4084c4
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x4084c8
add eax, 2
add ecx, 2
test dl, dl
jne 0x4084a8
xor eax, eax
jmp 0x4084cd
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x40870a
mov ecx, 0x470028
mov eax, esi
lea esp, [esp]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x408500
test dl, dl
je 0x4084fc
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x408500
add eax, 2
add ecx, 2
test dl, dl
jne 0x4084e0
xor eax, eax
jmp 0x408505
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x40852a
push esi
push str.error:_adb__s_not_implemented_on_Win32_n
call dword [sym.imp.MSVCR100.dll___iob_func]
add eax, 0x40
push eax
call dword [sym.imp.MSVCR100.dll_fprintf]
add esp, 0xc
or eax, 0xffffffff
jmp 0x408c70
mov ecx, str.start_server
mov eax, esi
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x408551
test dl, dl
je 0x40854d
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x408551
add eax, 2
add ecx, 2
test dl, dl
jne 0x408531
xor eax, eax
jmp 0x408556
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x40856c
push str.host:start_server
call fcn.004057d0
add esp, 4
jmp 0x408c70
mov ecx, str.backup
mov eax, esi
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x408593
test dl, dl
je 0x40858f
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x408593
add eax, 2
add ecx, 2
test dl, dl
jne 0x408573
xor eax, eax
jmp 0x408598
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x4085ac
mov ecx, dword [esp + 0x10]
mov edx, ebx
call fcn.00406ad0
jmp 0x408c70
mov ecx, str.restore
mov eax, esi
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x4085d3
test dl, dl
je 0x4085cf
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x4085d3
add eax, 2
add ecx, 2
test dl, dl
jne 0x4085b3
xor eax, eax
jmp 0x4085d8
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x4085ef
mov ecx, dword [esp + 0x10]
push ebx
push ecx
call fcn.00406de0
add esp, 8
jmp 0x408c70
mov ecx, str.jdwp
mov eax, esi
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x408616
test dl, dl
je 0x408612
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x408616
add eax, 2
add ecx, 2
test dl, dl
jne 0x4085f6
xor eax, eax
jmp 0x40861b
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x408658
push str.jdwp
call fcn.004057d0
mov esi, eax
add esp, 4
test esi, esi
js 0x408649
push esi
call fcn.00405d10
add esp, 4
mov eax, esi
call fcn.0040ff10
xor eax, eax
jmp 0x408c70
push 0x4936f0
push str.error:__s_n
jmp 0x40850f
mov ecx, str.help
mov eax, esi
nop
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x408680
test dl, dl
je 0x40867c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x408680
add eax, 2
add ecx, 2
test dl, dl
jne 0x408660
xor eax, eax
jmp 0x408685
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x407db9
mov ecx, 0x47004c
mov eax, esi
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x4086b4
test dl, dl
je 0x4086b0
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x4086b4
add eax, 2
add ecx, 2
test dl, dl
jne 0x408694
xor eax, eax
jmp 0x4086b9
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x407db9
mov ecx, str.version
mov eax, esi
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x4086e8
test dl, dl
je 0x4086e4
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x4086e8
add eax, 2
add ecx, 2
test dl, dl
jne 0x4086c8
xor eax, eax
jmp 0x4086ed
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x40745a
call dword [sym.imp.MSVCR100.dll___iob_func]
add eax, 0x20
call fcn.00405cf0
xor eax, eax
jmp 0x408c70
mov edx, dword [esp + 0x10]
push edx
mov ecx, ebx
call fcn.00406980
add esp, 4
jmp 0x408c70
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x24]
mov edx, esi
lea esi, [esp + 0xa4]
call fcn.004064f0
mov eax, esi
push eax
jmp 0x407f34
mov edi, dword [esp + 0x18]
mov esi, dword [edi]
mov ecx, str.reboot_bootloader
mov eax, esi
lea esp, [esp]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x408770
test dl, dl
je 0x40876c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x408770
add eax, 2
add ecx, 2
test dl, dl
jne 0x408750
xor eax, eax
jmp 0x408775
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
jne 0x408790
push str.reboot:bootloader
lea ecx, [esp + 0x40]
push 0x64
push ecx
call dword [sym.imp.MSVCR100.dll__snprintf]
add esp, 0xc
jmp 0x4087c9
cmp dword [esp + 0x10], 1
jle 0x4087b3
mov edx, dword [edi + 4]
push edx
push esi
push str._s:_s
lea eax, [esp + 0x48]
push 0x64
push eax
call dword [sym.imp.MSVCR100.dll__snprintf]
add esp, 0x14
jmp 0x4087c9
push esi
push 0x46ff00
lea ecx, [esp + 0x44]
push 0x64
push ecx
call dword [sym.imp.MSVCR100.dll__snprintf]
add esp, 0x10
lea edx, [esp + 0x3c]
push edx
call fcn.004057d0
mov esi, eax
add esp, 4
test esi, esi
js 0x40809a
push esi
call fcn.00405d10
add esp, 4
mov eax, esi
call fcn.0040ff10
xor eax, eax
jmp 0x408c70
mov esi, dword [esp + 0x18]
mov eax, dword [esi]
cmp byte [eax], 0x68
mov ebx, dword [sym.imp.MSVCR100.dll___iob_func]
sete al
mov byte [esp + 0x17], al
test al, al
je 0x40882e
push str.e_41_33m
call dword [sym.imp.MSVCR100.dll_printf]
add esp, 4
call ebx
add eax, 0x20
push eax
call dword [sym.imp.MSVCR100.dll_fflush]
add esp, 4
mov edi, dword [esp + 0x10]
cmp edi, 2
jge 0x4088dc
test byte [0x4815b8], 1
je 0x4088aa
mov esi, dword [sym.imp.MSVCR100.dll__errno]
call esi
mov edi, dword [eax]
push 0x4815a0
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
push str.adb_commandline
push str.commandline.cpp
push str._s::_s__:
call ebx
add eax, 0x40
push eax
call dword [sym.imp.MSVCR100.dll_fprintf]
add esp, 0x10
call esi
push str.starting_interactive_shell_n
mov dword [eax], edi
call ebx
add eax, 0x40
push eax
call dword [sym.imp.MSVCR100.dll_fprintf]
call ebx
add eax, 0x40
push eax
call dword [sym.imp.MSVCR100.dll_fflush]
add esp, 0xc
push 0x4815a0
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
call esi
mov dword [eax], edi
call fcn.00406480
cmp byte [esp + 0x17], 0
mov esi, eax
je 0x4088d5
push str.e_0m
call dword [sym.imp.MSVCR100.dll_printf]
add esp, 4
call ebx
add eax, 0x20
push eax
call dword [sym.imp.MSVCR100.dll_fflush]
add esp, 4
mov eax, esi
jmp 0x408c70
mov ecx, dword [esi + 4]
push ecx
push str.shell:_s
lea edx, [esp + 0xac]
push 0x1000
push edx
call dword [sym.imp.MSVCR100.dll__snprintf]
sub edi, 2
add esi, 8
add esp, 0x10
mov dword [esp + 0x10], edi
mov dword [esp + 0x18], esi
test edi, edi
jle 0x4089d0
dec dword [esp + 0x10]
lea edi, [esp + 0xa4]
dec edi
lea ecx, [ecx]
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x408920
mov ax, word [0x46f8f8]
mov esi, dword [esp + 0x18]
mov word [edi], ax
mov eax, dword [esi]
cmp byte [eax], 0
je 0x408950
push 0x20
push eax
call dword [sym.imp.MSVCR100.dll_strchr]
add esp, 8
test eax, eax
jne 0x408950
xor edx, edx
jmp 0x408972
lea edi, [esp + 0xa4]
mov edx, 1
dec edi
lea ecx, [ecx]
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x408960
mov cx, word [0x46fdd4]
mov word [edi], cx
mov eax, dword [esi]
add esi, 4
mov dword [esp + 0x18], esi
mov esi, eax
lea ecx, [ecx]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x408980
lea edi, [esp + 0xa4]
sub eax, esi
dec edi
mov cl, byte [edi + 1]
inc edi
test cl, cl
jne 0x408991
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
test edx, edx
je 0x4089c5
lea edi, [esp + 0xa4]
dec edi
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x4089b3
mov dx, word [0x46fdd4]
mov word [edi], dx
cmp dword [esp + 0x10], 0
jg 0x408911
mov edi, dword [sym.imp.MSVCR100.dll_fprintf]
mov esi, dword [sym.imp.MSVCR100.dll__errno]
lea esp, [esp]
test byte [0x4815b8], 1
je 0x408a58
call esi
mov eax, dword [eax]
push 0x4815a0
mov dword [esp + 0x24], eax
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
push str.adb_commandline
push str.commandline.cpp
push str._s::_s__:
call ebx
add eax, 0x40
push eax
call edi
add esp, 0x10
call esi
mov ecx, dword [esp + 0x20]
lea edx, [esp + 0xa4]
push edx
push str.interactive_shell_loop._buff_s_n
mov dword [eax], ecx
call ebx
add eax, 0x40
push eax
call edi
add esp, 0xc
call ebx
add eax, 0x40
push eax
call dword [sym.imp.MSVCR100.dll_fflush]
add esp, 4
push 0x4815a0
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
call esi
mov ecx, dword [esp + 0x20]
mov dword [eax], ecx
lea edx, [esp + 0xa4]
push edx
call fcn.004057d0
add esp, 4
mov dword [esp + 0x1c], eax
test eax, eax
js 0x408b76
test byte [0x4815b8], 1
je 0x408ae9
call esi
mov eax, dword [eax]
push 0x4815a0
mov dword [esp + 0x24], eax
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
push str.adb_commandline
push str.commandline.cpp
push str._s::_s__:
call ebx
add eax, 0x40
push eax
call edi
add esp, 0x10
call esi
mov edx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x20]
push edx
push str.about_to_read_and_dump_fd_d__n
mov dword [eax], ecx
call ebx
add eax, 0x40
push eax
call edi
add esp, 0xc
call ebx
add eax, 0x40
push eax
call dword [sym.imp.MSVCR100.dll_fflush]
add esp, 4
push 0x4815a0
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
call esi
mov ecx, dword [esp + 0x20]
mov dword [eax], ecx
mov edx, dword [esp + 0x1c]
push edx
call fcn.00405d10
add esp, 4
test byte [0x4815b8], 1
je 0x408b63
call esi
mov eax, dword [eax]
push 0x4815a0
mov dword [esp + 0x24], eax
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
push str.adb_commandline
push str.commandline.cpp
push str._s::_s__:
call ebx
add eax, 0x40
push eax
call edi
add esp, 0x10
call esi
mov ecx, dword [esp + 0x20]
push str.read_and_dump___done._n
mov dword [eax], ecx
call ebx
add eax, 0x40
push eax
call edi
call ebx
add eax, 0x40
push eax
call dword [sym.imp.MSVCR100.dll_fflush]
add esp, 0xc
push 0x4815a0
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
call esi
mov edx, dword [esp + 0x20]
mov dword [eax], edx
mov eax, dword [esp + 0x1c]
call fcn.0040ff10
mov dword [esp + 0x1c], 0
jmp 0x408b93
push 0x4936f0
push str.error:__s_n
call ebx
add eax, 0x40
push eax
call edi
add esp, 0xc
mov dword [esp + 0x1c], 0xffffffff
cmp dword [esp + 0x2c], 0
je 0x408bd3
push str._n__waiting_for_device___n
call ebx
add eax, 0x40
push eax
call edi
add esp, 8
push 0x3e8
call dword [sym.imp.KERNEL32.dll_Sleep]
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x24]
push 0
push str.wait_for_device
push eax
push ecx
call fcn.00408ca0
add esp, 0x10
jmp 0x4089e0
cmp byte [esp + 0x17], 0
je 0x408bf7
push str.e_0m
call dword [sym.imp.MSVCR100.dll_printf]
add esp, 4
call ebx
add eax, 0x20
push eax
call dword [sym.imp.MSVCR100.dll_fflush]
add esp, 4
test byte [0x4815b8], 1
je 0x408c6c
call esi
mov edx, dword [eax]
push 0x4815a0
mov dword [esp + 0x30], edx
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
push str.adb_commandline
push str.commandline.cpp
push str._s::_s__:
call ebx
add eax, 0x40
push eax
call edi
add esp, 0x10
call esi
mov edx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x2c]
push edx
push str.interactive_shell_loop._return_r_d_n
mov dword [eax], ecx
call ebx
add eax, 0x40
push eax
call edi
add esp, 0xc
call ebx
add eax, 0x40
push eax
call dword [sym.imp.MSVCR100.dll_fflush]
add esp, 4
push 0x4815a0
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
call esi
mov ecx, dword [esp + 0x2c]
mov dword [eax], ecx
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x10b0]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x1098]
xor ecx, esp
call fcn.00459ce1
mov esp, ebp
pop ebp
ret