Function at 0x101feec0
Capabilities:
Check for time delay via gettickcount

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x1021a1b0
mov eax, dword fs:[0]
push eax
sub esp, 8
push ebx
push esi
push edi
mov eax, dword [0x105520d0]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov esi, ecx
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov edi, dword [ebp + 8]
push edi
push str.ARMPRGFilePath__s
push 2
push esi
call fcn.101fad20
mov eax, dword [ebp + 0xc]
push eax
push str.CDTRawProgramXml__s
push 2
push esi
call fcn.101fad20
mov ecx, dword [ebp + 0x10]
push ecx
push str.CDTPatchXml__s
push 2
push esi
call fcn.101fad20
mov edx, dword [ebp + 0x14]
push edx
push str.EMMCUserParitionImage__s
push 2
push esi
call fcn.101fad20
movzx eax, byte [ebp + 0x18]
add esp, 0x40
push eax
push str.bUseTrustedMode__d
push 2
push esi
call fcn.101fad20
mov ecx, dword [ebp + 0x1c]
push ecx
push str.iSleepTimeToDOWNLOADmode___d_ms
push 2
push esi
call fcn.101fad20
mov edx, dword [ebp + 0x20]
push edx
push str.iSleepTimeToGOcommand___d_ms
push 2
push esi
call fcn.101fad20
add esp, 0x30
cmp byte [edi], 0
je 0x101feffb
push 0x3e8
push 1
mov ecx, esi
call fcn.101fbc50
xor edi, edi
mov bl, al
cmp dword [esi + 0x24], edi
jbe 0x101fefd8
mov edi, edi
test bl, bl
jne 0x101fefe0
mov ecx, dword [esi]
call fcn.10145c30
mov eax, dword [esi + 0x20]
push eax
call dword [sym.imp.KERNEL32.dll_Sleep]
mov ecx, dword [esi]
call fcn.10146320
cmp al, 1
jne 0x101fefd2
lea ecx, [edi + 1]
push ecx
push str.Retry__Sending_NOP___d
push esi
call fcn.100df120
add esp, 0xc
push 0x3e8
push 1
mov ecx, esi
call fcn.101fbc50
mov bl, al
inc edi
cmp edi, dword [esi + 0x24]
jb 0x101fef90
test bl, bl
je 0x101ff249
mov edx, dword [ebp + 0x20]
mov eax, dword [ebp + 0x24]
mov ecx, dword [ebp + 8]
push edx
push eax
push ecx
mov ecx, esi
call fcn.101fb920
test al, al
je 0x101ff249
push str.QMSL_DownloadAgent::Step2__Downloading_Software_Image_Files_
push esi
call fcn.100df120
xor edi, edi
add esp, 8
xor al, al
mov dword [ebp - 0x14], edi
mov dword [ebp - 0x10], edi
cmp dword [esi + 0x1c], edi
jbe 0x101ff0f2
lea esp, [esp]
test al, al
jne 0x101ff0f2
lea edx, [edi + 1]
push edx
push str.Sending_HELLO_to_flash_programmer___d
push esi
call fcn.100df120
add esp, 0xc
push 0x7d0
push 1
lea eax, [ebp - 0x10]
push eax
lea ecx, [ebp - 0x14]
push ecx
mov ecx, esi
call fcn.101fb280
mov byte [ebp + 0x23], al
test al, al
je 0x101ff070
movzx edx, word [ebp - 0x10]
mov eax, dword [ebp - 0x14]
push edx
push eax
push str.HELLO_command_succeeded__block_size__u__window_size__u
push esi
call fcn.100df120
add esp, 0x10
jmp 0x101ff0e5
push 0x1021c9c8
push 0xf
push esi
call fcn.101fadb0
mov ecx, dword [esi]
add esp, 0xc
call fcn.10145c30
cmp al, 1
jne 0x101ff0d7
mov ecx, dword [esi + 0x18]
mov ebx, dword [sym.imp.KERNEL32.dll_Sleep]
push ecx
call ebx
cmp edi, dword [esi + 0x1c]
jae 0x101ff0c6
lea esp, [esp]
mov ecx, dword [esi]
call fcn.10146320
test al, al
jne 0x101ff0c6
inc edi
push edi
push str.Failed_to_open_the_serial_port_for_retrying_the_Hello___d
push esi
call fcn.100df120
mov edx, dword [esi + 0x18]
add esp, 0xc
push edx
call ebx
cmp edi, dword [esi + 0x1c]
jb 0x101ff0a0
mov ecx, dword [esi]
call fcn.10146320
test al, al
je 0x101ff249
jmp 0x101ff0e5
push str.Failed_to_close_the_port_before_opening_the_new_port_before_retrying_the_Hello
push esi
call fcn.100df120
add esp, 8
mov al, byte [ebp + 0x23]
inc edi
cmp edi, dword [esi + 0x1c]
jb 0x101ff020
add dword [ebp - 0x10], 0xffff
test al, al
je 0x101ff243
lea ecx, [ebp + 0x20]
call fcn.101ffda0
mov eax, dword [ebp + 0x18]
push eax
mov ecx, esi
mov dword [ebp - 4], 0
call fcn.101faf90
test al, al
jne 0x101ff14c
push str.QMSL_DownloadAgent::UploadEmmcUserParitionImage__
push 3
push esi
call fcn.101fadb0
mov ecx, dword [ebp + 0x24]
mov dword [ecx], 3
add esp, 0xc
lea ecx, [ebp + 0x20]
mov dword [ebp - 4], 0xffffffff
call fcn.101ffdc0
jmp 0x101ff249
mov edx, dword [ebp - 0x10]
mov eax, dword [ebp - 0x14]
push edx
mov edx, dword [esi]
push eax
mov eax, dword [ebp + 0x10]
push 0x2710
push 0x23
lea ecx, [ebp + 0x20]
push ecx
mov ecx, dword [ebp + 0xc]
push edx
push eax
push ecx
mov ecx, esi
call fcn.101fea80
test al, al
jne 0x101ff1a2
push str.QMSL_DownloadAgent::DownloadSB2ImageSet__
push 5
push esi
call fcn.101fadb0
mov edx, dword [ebp + 0x24]
add esp, 0xc
lea ecx, [ebp + 0x20]
mov dword [edx], 5
mov dword [ebp - 4], 0xffffffff
call fcn.101ffdc0
jmp 0x101ff249
or edi, 0xffffffff
lea ecx, [ebp + 0x20]
mov dword [ebp - 4], edi
call fcn.101ffdc0
lea ecx, [ebp + 8]
call fcn.101ffda0
mov eax, dword [ebp - 0x10]
mov ecx, dword [ebp - 0x14]
push eax
mov eax, dword [esi]
push ecx
mov ecx, dword [ebp + 0x14]
push 0x2710
push 0x21
lea edx, [ebp + 8]
push edx
push eax
push ecx
mov ecx, esi
mov dword [ebp - 4], 1
call fcn.101fbf10
test al, al
jne 0x101ff20a
push str.QMSL_DownloadAgent::DownloadSB2ImageSet__
push 5
push esi
call fcn.101fadb0
mov edx, dword [ebp + 0x24]
add esp, 0xc
lea ecx, [ebp + 8]
mov dword [edx], 5
mov dword [ebp - 4], edi
call fcn.101ffdc0
jmp 0x101ff249
push 0x1388
mov ecx, esi
call fcn.101fb2e0
lea ecx, [ebp + 8]
mov bl, al
mov dword [ebp - 4], edi
call fcn.101ffdc0
test bl, bl
je 0x101ff249
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov al, bl
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x20
call dword [sym.imp.KERNEL32.dll_GetTickCount]
xor al, al
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x20