### FUNC 180001000 - 180001043 (67 bytes) name=sub_180001000
180001000: sub     rsp, 28h
180001004: mov     edx, 1
180001009: mov     [rsp+28h+arg_0], 7Eh ; '~'
18000100E: lea     rcx, Block
180001015: call    sub_180002AB0
18000101A: mov     rcx, cs:Block
180001021: movzx   eax, [rsp+28h+arg_0]
180001026: mov     [rcx], al
180001028: lea     rax, [rcx+1]
18000102C: lea     rcx, sub_18000E300; void (__cdecl *)()
180001033: mov     qword ptr cs:xmmword_180016068, rax
18000103A: add     rsp, 28h
18000103E: jmp     atexit

### FUNC 180001050 - 18000109F (79 bytes) name=sub_180001050
180001050: sub     rsp, 28h
180001054: mov     edx, 8
180001059: mov     dword ptr [rsp+28h+arg_0], 39393902h
180001061: lea     rcx, qword_180016000
180001068: mov     dword ptr [rsp+28h+arg_0+4], 3393939h
180001070: call    sub_180002AB0
180001075: mov     rcx, cs:qword_180016000
18000107C: mov     rax, [rsp+28h+arg_0]
180001081: mov     [rcx], rax
180001084: lea     rax, [rcx+8]
180001088: lea     rcx, sub_18000E370; void (__cdecl *)()
18000108F: mov     qword ptr cs:xmmword_180016008, rax
180001096: add     rsp, 28h
18000109A: jmp     atexit

### FUNC 1800010A0 - 1800010EF (79 bytes) name=sub_1800010A0
1800010A0: sub     rsp, 28h
1800010A4: mov     edx, 8
1800010A9: mov     dword ptr [rsp+28h+arg_0], 31323102h
1800010B1: lea     rcx, qword_180016018
1800010B8: mov     dword ptr [rsp+28h+arg_0+4], 3343132h
1800010C0: call    sub_180002AB0
1800010C5: mov     rcx, cs:qword_180016018
1800010CC: mov     rax, [rsp+28h+arg_0]
1800010D1: mov     [rcx], rax
1800010D4: lea     rax, [rcx+8]
1800010D8: lea     rcx, sub_18000E3E0; void (__cdecl *)()
1800010DF: mov     qword ptr cs:xmmword_180016020, rax
1800010E6: add     rsp, 28h
1800010EA: jmp     atexit

### FUNC 1800010F0 - 180001133 (67 bytes) name=sub_1800010F0
1800010F0: sub     rsp, 28h
1800010F4: mov     edx, 1
1800010F9: mov     [rsp+28h+arg_0], 13h
1800010FE: lea     rcx, qword_180016090
180001105: call    sub_180002AB0
18000110A: mov     rcx, cs:qword_180016090
180001111: movzx   eax, [rsp+28h+arg_0]
180001116: mov     [rcx], al
180001118: lea     rax, [rcx+1]
18000111C: lea     rcx, sub_18000E450; void (__cdecl *)()
180001123: mov     qword ptr cs:xmmword_180016098, rax
18000112A: add     rsp, 28h
18000112E: jmp     atexit

### FUNC 180001140 - 180001183 (67 bytes) name=sub_180001140
180001140: sub     rsp, 28h
180001144: mov     edx, 1
180001149: mov     [rsp+28h+arg_0], 12h
18000114E: lea     rcx, qword_180016078
180001155: call    sub_180002AB0
18000115A: mov     rcx, cs:qword_180016078
180001161: movzx   eax, [rsp+28h+arg_0]
180001166: mov     [rcx], al
180001168: lea     rax, [rcx+1]
18000116C: lea     rcx, sub_18000E4C0; void (__cdecl *)()
180001173: mov     qword ptr cs:xmmword_180016080, rax
18000117A: add     rsp, 28h
18000117E: jmp     atexit

### FUNC 180001190 - 1800011EC (92 bytes) name=sub_180001190
180001190: push    rbx
180001192: sub     rsp, 20h
180001196: mov     edx, 6
18000119B: mov     [rsp+28h+Src], 70757766h
1800011A3: lea     rcx, qword_180016030
1800011AA: mov     [rsp+28h+arg_4], 0A0Dh
1800011B1: call    sub_180002AB0
1800011B6: mov     rbx, cs:qword_180016030
1800011BD: lea     rdx, [rsp+28h+Src]; Src
1800011C2: mov     rcx, rbx; void *
1800011C5: mov     r8d, 6; Size
1800011CB: call    memmove
1800011D0: lea     rax, [rbx+6]
1800011D4: lea     rcx, sub_18000E530; void (__cdecl *)()
1800011DB: mov     qword ptr cs:xmmword_180016038, rax
1800011E2: add     rsp, 20h
1800011E6: pop     rbx
1800011E7: jmp     atexit

### FUNC 1800011F0 - 18000124A (90 bytes) name=sub_1800011F0
1800011F0: push    rbx
1800011F2: sub     rsp, 20h
1800011F6: mov     edx, 5
1800011FB: mov     [rsp+28h+Src], 0D726576h
180001203: lea     rcx, qword_1800160A8
18000120A: mov     [rsp+28h+arg_4], 0Ah
18000120F: call    sub_180002AB0
180001214: mov     rbx, cs:qword_1800160A8
18000121B: lea     rdx, [rsp+28h+Src]; Src
180001220: mov     rcx, rbx; void *
180001223: mov     r8d, 5; Size
180001229: call    memmove
18000122E: lea     rax, [rbx+5]
180001232: lea     rcx, sub_18000E5A0; void (__cdecl *)()
180001239: mov     qword ptr cs:xmmword_1800160B0, rax
180001240: add     rsp, 20h
180001244: pop     rbx
180001245: jmp     atexit

### FUNC 180001250 - 180001293 (67 bytes) name=sub_180001250
180001250: sub     rsp, 28h
180001254: mov     edx, 1
180001259: mov     [rsp+28h+arg_0], 4
18000125E: lea     rcx, qword_180016048
180001265: call    sub_180002AB0
18000126A: mov     rcx, cs:qword_180016048
180001271: movzx   eax, [rsp+28h+arg_0]
180001276: mov     [rcx], al
180001278: lea     rax, [rcx+1]
18000127C: lea     rcx, sub_18000E610; void (__cdecl *)()
180001283: mov     qword ptr cs:xmmword_180016050, rax
18000128A: add     rsp, 28h
18000128E: jmp     atexit

### FUNC 1800012A0 - 1800012CD (45 bytes) name=sub_1800012A0
1800012A0: sub     rsp, 28h
1800012A4: mov     r8d, 0Eh; Size
1800012AA: lea     rdx, aScannerNormal; "SCANNER_NORMAL"
1800012B1: lea     rcx, qword_180015060; void *
1800012B8: call    sub_180002610
1800012BD: lea     rcx, sub_18000E6F0; void (__cdecl *)()
1800012C4: add     rsp, 28h
1800012C8: jmp     atexit

### FUNC 1800012D0 - 1800012FD (45 bytes) name=sub_1800012D0
1800012D0: sub     rsp, 28h
1800012D4: mov     r8d, 0Fh; Size
1800012DA: lea     rdx, aScannerOffline; "SCANNER_OFFLINE"
1800012E1: lea     rcx, qword_1800150A0; void *
1800012E8: call    sub_180002610
1800012ED: lea     rcx, sub_18000E760; void (__cdecl *)()
1800012F4: add     rsp, 28h
1800012F8: jmp     atexit

### FUNC 180001300 - 18000132D (45 bytes) name=sub_180001300
180001300: sub     rsp, 28h
180001304: mov     r8d, 13h; Size
18000130A: lea     rdx, aScannerDataExc; "SCANNER_DATA_EXCEED"
180001311: lea     rcx, qword_1800151E0; void *
180001318: call    sub_180002610
18000131D: lea     rcx, sub_18000E7D0; void (__cdecl *)()
180001324: add     rsp, 28h
180001328: jmp     atexit

### FUNC 180001330 - 18000135D (45 bytes) name=sub_180001330
180001330: sub     rsp, 28h
180001334: mov     r8d, 11h; Size
18000133A: lea     rdx, aScannerFiltedQ; "SCANNER_FILTED_QR"
180001341: lea     rcx, qword_180015180; void *
180001348: call    sub_180002610
18000134D: lea     rcx, sub_18000E840; void (__cdecl *)()
180001354: add     rsp, 28h
180001358: jmp     atexit

### FUNC 180001360 - 18000138D (45 bytes) name=sub_180001360
180001360: sub     rsp, 28h
180001364: mov     r8d, 13h; Size
18000136A: lea     rdx, aScannerFiltedE; "SCANNER_FILTED_EAN8"
180001371: lea     rcx, qword_1800150E0; void *
180001378: call    sub_180002610
18000137D: lea     rcx, sub_18000E8B0; void (__cdecl *)()
180001384: add     rsp, 28h
180001388: jmp     atexit

### FUNC 180001390 - 1800013BD (45 bytes) name=sub_180001390
180001390: sub     rsp, 28h
180001394: mov     r8d, 14h; Size
18000139A: lea     rdx, aScannerFiltedE_0; "SCANNER_FILTED_EAN13"
1800013A1: lea     rcx, qword_180015160; void *
1800013A8: call    sub_180002610
1800013AD: lea     rcx, sub_18000E920; void (__cdecl *)()
1800013B4: add     rsp, 28h
1800013B8: jmp     atexit

### FUNC 1800013C0 - 1800013ED (45 bytes) name=sub_1800013C0
1800013C0: sub     rsp, 28h
1800013C4: mov     r8d, 12h; Size
1800013CA: lea     rdx, aScannerFiltedC; "SCANNER_FILTED_C39"
1800013D1: lea     rcx, qword_1800151C0; void *
1800013D8: call    sub_180002610
1800013DD: lea     rcx, sub_18000E990; void (__cdecl *)()
1800013E4: add     rsp, 28h
1800013E8: jmp     atexit

### FUNC 1800013F0 - 18000141D (45 bytes) name=sub_1800013F0
1800013F0: sub     rsp, 28h
1800013F4: mov     r8d, 13h; Size
1800013FA: lea     rdx, aScannerFiltedC_0; "SCANNER_FILTED_C128"
180001401: lea     rcx, qword_180015120; void *
180001408: call    sub_180002610
18000140D: lea     rcx, sub_18000EA00; void (__cdecl *)()
180001414: add     rsp, 28h
180001418: jmp     atexit

### FUNC 180001420 - 18000144D (45 bytes) name=sub_180001420
180001420: sub     rsp, 28h
180001424: mov     r8d, 12h; Size
18000142A: lea     rdx, aScannerFiltedG; "SCANNER_FILTED_GS1"
180001431: lea     rcx, qword_1800150C0; void *
180001438: call    sub_180002610
18000143D: lea     rcx, sub_18000EA70; void (__cdecl *)()
180001444: add     rsp, 28h
180001448: jmp     atexit

### FUNC 180001450 - 18000147D (45 bytes) name=sub_180001450
180001450: sub     rsp, 28h
180001454: mov     r8d, 12h; Size
18000145A: lea     rdx, aScannerFiltedU; "SCANNER_FILTED_UPA"
180001461: lea     rcx, qword_180015140; void *
180001468: call    sub_180002610
18000146D: lea     rcx, sub_18000EAE0; void (__cdecl *)()
180001474: add     rsp, 28h
180001478: jmp     atexit

### FUNC 180001480 - 1800014AD (45 bytes) name=sub_180001480
180001480: sub     rsp, 28h
180001484: mov     r8d, 12h; Size
18000148A: lea     rdx, aScannerFiltedU_0; "SCANNER_FILTED_UPB"
180001491: lea     rcx, qword_180015100; void *
180001498: call    sub_180002610
18000149D: lea     rcx, sub_18000EB50; void (__cdecl *)()
1800014A4: add     rsp, 28h
1800014A8: jmp     atexit

### FUNC 1800014B0 - 1800014DD (45 bytes) name=sub_1800014B0
1800014B0: sub     rsp, 28h
1800014B4: mov     r8d, 12h; Size
1800014BA: lea     rdx, aScannerFiltedU_1; "SCANNER_FILTED_UPE"
1800014C1: lea     rcx, qword_1800151A0; void *
1800014C8: call    sub_180002610
1800014CD: lea     rcx, sub_18000EBC0; void (__cdecl *)()
1800014D4: add     rsp, 28h
1800014D8: jmp     atexit

### FUNC 1800014E0 - 18000150D (45 bytes) name=sub_1800014E0
1800014E0: sub     rsp, 28h
1800014E4: mov     r8d, 15h; Size
1800014EA: lea     rdx, aScannerFiltedC_1; "SCANNER_FILTED_COUPON"
1800014F1: lea     rcx, qword_180015040; void *
1800014F8: call    sub_180002610
1800014FD: lea     rcx, sub_18000EC30; void (__cdecl *)()
180001504: add     rsp, 28h
180001508: jmp     atexit

### FUNC 180001510 - 18000153D (45 bytes) name=sub_180001510
180001510: sub     rsp, 28h
180001514: mov     r8d, 12h; Size
18000151A: lea     rdx, aScannerFiltedW; "SCANNER_FILTED_WWW"
180001521: lea     rcx, qword_180015080; void *
180001528: call    sub_180002610
18000152D: lea     rcx, sub_18000ECA0; void (__cdecl *)()
180001534: add     rsp, 28h
180001538: jmp     atexit

### FUNC 180001540 - 180001546 (6 bytes) name=DllMain
180001540: mov     eax, 1
180001545: retn

### FUNC 180001550 - 1800015C4 (116 bytes) name=sub_180001550
180001550: push    rbx
180001552: sub     rsp, 20h
180001556: mov     rbx, rcx
180001559: mov     ecx, [rcx+10h]
18000155C: call    cs:MAG_IsProcessingImage
180001562: test    eax, eax
180001564: jz      short loc_18000156F
180001566: mov     ecx, [rbx+10h]
180001569: call    cs:MAG_StopProcessImage
18000156F: mov     ecx, [rbx+10h]
180001572: call    cs:MAG_IsLinked
180001578: test    eax, eax
18000157A: jz      short loc_180001585
18000157C: mov     ecx, [rbx+10h]
18000157F: call    cs:MAG_DisLinkCamera
180001585: mov     ecx, [rbx+10h]
180001588: call    cs:MAG_IsInitialized
18000158E: test    eax, eax
180001590: jz      short loc_1800015A1
180001592: mov     ecx, [rbx+10h]
180001595: call    cs:MAG_Free
18000159B: mov     dword ptr [rbx], 0
1800015A1: mov     ecx, [rbx+10h]
1800015A4: call    cs:MAG_IsChannelAvailable
1800015AA: test    eax, eax
1800015AC: jz      short loc_1800015BE
1800015AE: mov     ecx, [rbx+10h]
1800015B1: call    cs:MAG_DelChannel
1800015B7: mov     dword ptr [rbx+10h], 0FFFFFFFFh
1800015BE: add     rsp, 20h
1800015C2: pop     rbx
1800015C3: retn

### FUNC 1800015D0 - 180001649 (121 bytes) name=sub_1800015D0
1800015D0: push    rdi
1800015D2: sub     rsp, 20h
1800015D6: cmp     dword ptr [rcx], 0
1800015D9: mov     rdi, rcx
1800015DC: jz      short loc_1800015E9
1800015DE: mov     eax, 1
1800015E3: add     rsp, 20h
1800015E7: pop     rdi
1800015E8: retn
1800015E9: mov     [rsp+28h+arg_0], rbx
1800015EE: mov     ebx, [rcx+10h]
1800015F1: cmp     ebx, 80h
1800015F7: jbe     short loc_18000162E
1800015F9: xor     ebx, ebx
1800015FB: nop     dword ptr [rax+rax+00h]
180001600: mov     ecx, ebx
180001602: call    cs:MAG_IsChannelAvailable
180001608: test    eax, eax
18000160A: jz      short loc_18000161B
18000160C: inc     ebx
18000160E: cmp     ebx, 80h
180001614: jle     short loc_180001600
180001616: mov     ebx, [rdi+10h]
180001619: jmp     short loc_180001626
18000161B: mov     ecx, ebx
18000161D: call    cs:MAG_NewChannel
180001623: mov     [rdi+10h], ebx
180001626: cmp     ebx, 80h
18000162C: ja      short loc_18000163C
18000162E: mov     rdx, [rdi+8]
180001632: mov     ecx, ebx
180001634: call    cs:MAG_Initialize
18000163A: mov     [rdi], eax
18000163C: mov     eax, [rdi]
18000163E: mov     rbx, [rsp+28h+arg_0]
180001643: add     rsp, 20h
180001647: pop     rdi
180001648: retn

### FUNC 180001650 - 180001683 (51 bytes) name=sub_180001650
180001650: push    rbx
180001652: sub     rsp, 20h
180001656: mov     rbx, rcx
180001659: mov     rax, rdx
18000165C: lea     rcx, off_18000F6D8
180001663: xorps   xmm0, xmm0
180001666: lea     rdx, [rbx+8]
18000166A: mov     [rbx], rcx
18000166D: lea     rcx, [rax+8]
180001671: movups  xmmword ptr [rdx], xmm0
180001674: call    cs:__std_exception_copy
18000167A: mov     rax, rbx
18000167D: add     rsp, 20h
180001681: pop     rbx
180001682: retn

### FUNC 1800016B0 - 1800016C3 (19 bytes) name=sub_1800016B0
1800016B0: mov     rdx, [rcx+8]
1800016B4: lea     rax, aUnknownExcepti; "Unknown exception"
1800016BB: test    rdx, rdx
1800016BE: cmovnz  rax, rdx
1800016C2: retn

### FUNC 1800016D0 - 180001713 (67 bytes) name=sub_1800016D0
1800016D0: mov     [rsp+arg_0], rbx
1800016D5: push    rdi
1800016D6: sub     rsp, 20h
1800016DA: lea     rax, off_18000F6D8
1800016E1: mov     rdi, rcx
1800016E4: mov     [rcx], rax
1800016E7: mov     ebx, edx
1800016E9: add     rcx, 8
1800016ED: call    cs:__std_exception_destroy
1800016F3: test    bl, 1
1800016F6: jz      short loc_180001705
1800016F8: mov     edx, 18h
1800016FD: mov     rcx, rdi; Block
180001700: call    j_j_free
180001705: mov     rbx, [rsp+28h+arg_0]
18000170A: mov     rax, rdi
18000170D: add     rsp, 20h
180001711: pop     rdi
180001712: retn

### FUNC 180001720 - 180001741 (33 bytes) name=sub_180001720
180001720: lea     rax, aBadArrayNewLen; "bad array new length"
180001727: mov     qword ptr [rcx+10h], 0
18000172F: mov     [rcx+8], rax
180001733: lea     rax, off_18000F718
18000173A: mov     [rcx], rax
18000173D: mov     rax, rcx
180001740: retn

### FUNC 180001750 - 180001770 (32 bytes) name=?cancel_current_task@Concurrency@@YAXXZ
180001750: sub     rsp, 48h
180001754: lea     rcx, [rsp+48h+pExceptionObject]
180001759: call    sub_180001720
18000175E: lea     rdx, pThrowInfo; pThrowInfo
180001765: lea     rcx, [rsp+48h+pExceptionObject]; pExceptionObject
18000176A: call    _CxxThrowException
18000176F: align 10h

### FUNC 180001770 - 1800017AD (61 bytes) name=sub_180001770
180001770: push    rbx
180001772: sub     rsp, 20h
180001776: mov     rbx, rcx
180001779: mov     rax, rdx
18000177C: lea     rcx, off_18000F6D8
180001783: xorps   xmm0, xmm0
180001786: lea     rdx, [rbx+8]
18000178A: mov     [rbx], rcx
18000178D: lea     rcx, [rax+8]
180001791: movups  xmmword ptr [rdx], xmm0
180001794: call    cs:__std_exception_copy
18000179A: lea     rax, off_18000F718
1800017A1: mov     [rbx], rax
1800017A4: mov     rax, rbx
1800017A7: add     rsp, 20h
1800017AB: pop     rbx
1800017AC: retn

### FUNC 1800017B0 - 1800017ED (61 bytes) name=sub_1800017B0
1800017B0: push    rbx
1800017B2: sub     rsp, 20h
1800017B6: mov     rbx, rcx
1800017B9: mov     rax, rdx
1800017BC: lea     rcx, off_18000F6D8
1800017C3: xorps   xmm0, xmm0
1800017C6: lea     rdx, [rbx+8]
1800017CA: mov     [rbx], rcx
1800017CD: lea     rcx, [rax+8]
1800017D1: movups  xmmword ptr [rdx], xmm0
1800017D4: call    cs:__std_exception_copy
1800017DA: lea     rax, off_18000F6F0
1800017E1: mov     [rbx], rax
1800017E4: mov     rax, rbx
1800017E7: add     rsp, 20h
1800017EB: pop     rbx
1800017EC: retn

### FUNC 1800017F0 - 1800023ED (3069 bytes) name=sub_1800017F0
1800017F0: mov     [rsp-28h+arg_8], rbx
1800017F5: mov     [rsp-28h+arg_10], rsi
1800017FA: mov     [rsp-28h+arg_18], rdi
1800017FF: push    rbp
180001800: push    r12
180001802: push    r13
180001804: push    r14
180001806: push    r15
180001808: mov     rbp, rsp
18000180B: sub     rsp, 60h
18000180F: mov     rax, cs:__security_cookie
180001816: xor     rax, rsp
180001819: mov     [rbp+var_10], rax
18000181D: mov     rbx, rdx
180001820: mov     rsi, rcx
180001823: mov     eax, [rcx+4Ch]
180001826: cmp     eax, 1
180001829: jnz     short loc_180001867
18000182B: mov     rcx, [rdx]
18000182E: mov     rax, [rdx+8]
180001832: sub     rax, rcx
180001835: cmp     rax, 1
180001839: jnz     loc_1800020B6
18000183F: cmp     byte ptr [rcx], 6
180001842: jnz     loc_1800020B6
180001848: mov     [rsi+48h], al
18000184B: lea     rcx, [rsi+58h]; _Cnd_t
18000184F: call    cs:_Cnd_broadcast
180001855: test    eax, eax
180001857: jz      short loc_180001862
180001859: mov     ecx, eax
18000185B: call    cs:?_Throw_C_error@std@@YAXH@Z; std::_Throw_C_error(int)
180001861: nop
180001862: jmp     loc_1800020B6
180001867: cmp     eax, 2
18000186A: jnz     short loc_1800018A8
18000186C: mov     rcx, [rdx]
18000186F: mov     rax, [rdx+8]
180001873: sub     rax, rcx
180001876: cmp     rax, 1
18000187A: jnz     loc_1800020B6
180001880: cmp     byte ptr [rcx], 6
180001883: jnz     loc_1800020B6
180001889: mov     [rsi+48h], al
18000188C: lea     rcx, [rsi+58h]; _Cnd_t
180001890: call    cs:_Cnd_broadcast
180001896: test    eax, eax
180001898: jz      short loc_1800018A3
18000189A: mov     ecx, eax
18000189C: call    cs:?_Throw_C_error@std@@YAXH@Z; std::_Throw_C_error(int)
1800018A2: nop
1800018A3: jmp     loc_1800020B6
1800018A8: cmp     eax, 3
1800018AB: jnz     short loc_1800018E9
1800018AD: mov     rcx, [rdx]
1800018B0: mov     rax, [rdx+8]
1800018B4: sub     rax, rcx
1800018B7: cmp     rax, 1
1800018BB: jnz     loc_1800020B6
1800018C1: cmp     byte ptr [rcx], 6
1800018C4: jnz     loc_1800020B6
1800018CA: mov     [rsi+48h], al
1800018CD: lea     rcx, [rsi+58h]; _Cnd_t
1800018D1: call    cs:_Cnd_broadcast
1800018D7: test    eax, eax
1800018D9: jz      short loc_1800018E4
1800018DB: mov     ecx, eax
1800018DD: call    cs:?_Throw_C_error@std@@YAXH@Z; std::_Throw_C_error(int)
1800018E3: nop
1800018E4: jmp     loc_1800020B6
1800018E9: cmp     eax, 4
1800018EC: jnz     loc_180001B62
1800018F2: xor     edi, edi
1800018F4: mov     r10d, edi
1800018F7: mov     [rbp+var_3C], edi
1800018FA: mov     rdx, [rdx]
1800018FD: cmp     [rbx+8], rdx
180001901: jz      loc_1800019D4
180001907: mov     r13d, edi
18000190A: mov     r8, [rcx+40h]
18000190E: xchg    ax, ax
180001910: movzx   eax, byte ptr [rdx+r13]
180001915: mov     [rbp+var_40], al
180001918: mov     rdx, [rsi+38h]
18000191C: mov     r9, r8
18000191F: lea     eax, [r8+rdx]
180001923: test    al, 0Fh
180001925: jnz     short loc_18000194A
180001927: lea     rax, [r8+10h]
18000192B: shr     rax, 4
18000192F: cmp     [rsi+30h], rax
180001933: ja      short loc_18000194A
180001935: lea     rcx, [rsi+20h]
180001939: call    sub_1800028D0
18000193E: mov     rdx, [rsi+38h]
180001942: mov     r9, [rsi+40h]
180001946: mov     r10d, [rbp+var_3C]
18000194A: mov     rcx, [rsi+30h]
18000194E: mov     rax, rcx
180001951: shl     rax, 4
180001955: dec     rax
180001958: and     rax, rdx
18000195B: mov     [rsi+38h], rax
18000195F: lea     r15, [rax+r9]
180001963: dec     rcx
180001966: mov     rax, r15
180001969: shr     rax, 4
18000196D: and     rcx, rax
180001970: lea     r12, ds:0[rcx*8]
180001978: mov     rax, [rsi+28h]
18000197C: cmp     [rax+r12], rdi
180001980: jnz     short loc_18000199C
180001982: mov     ecx, 10h; Size
180001987: call    ??2@YAPEAX_K@Z; operator new(unsigned __int64)
18000198C: mov     rcx, [rsi+28h]
180001990: mov     [r12+rcx], rax
180001994: mov     rax, [rsi+28h]
180001998: mov     r10d, [rbp+var_3C]
18000199C: and     r15d, 0Fh
1800019A0: mov     rax, [r12+rax]
1800019A4: movzx   ecx, [rbp+var_40]
1800019A8: mov     [r15+rax], cl
1800019AC: inc     qword ptr [rsi+40h]
1800019B0: mov     r8, [rsi+40h]
1800019B4: inc     r10d
1800019B7: mov     [rbp+var_3C], r10d
1800019BB: inc     r13
1800019BE: mov     rdx, [rbx]
1800019C1: mov     rcx, [rbx+8]
1800019C5: sub     rcx, rdx
1800019C8: movsxd  rax, r10d
1800019CB: cmp     rax, rcx
1800019CE: jb      loc_180001910
1800019D4: mov     r8, rdi
1800019D7: mov     [rbp+var_20], rdi
1800019DB: mov     ebx, 0Fh
1800019E0: mov     [rbp+var_18], rbx
1800019E4: mov     byte ptr [rbp+Buf], dil
1800019E8: mov     r14, [rsi+38h]
1800019EC: mov     r15, [rsi+40h]
1800019F0: add     r15, r14
1800019F3: cmp     r14, r15
1800019F6: jz      short loc_180001A63
1800019F8: nop     dword ptr [rax+rax+00000000h]
180001A00: mov     rcx, [rsi+30h]
180001A04: dec     rcx
180001A07: mov     rax, r14
180001A0A: shr     rax, 4
180001A0E: and     rcx, rax
180001A11: mov     rdx, r14
180001A14: and     edx, 0Fh
180001A17: mov     rax, [rsi+28h]
180001A1B: mov     rcx, [rax+rcx*8]
180001A1F: movzx   r9d, byte ptr [rdx+rcx]
180001A24: cmp     r8, rbx
180001A27: jnb     short loc_180001A4A
180001A29: lea     rax, [r8+1]
180001A2D: mov     [rbp+var_20], rax
180001A31: lea     rax, [rbp+Buf]
180001A35: cmp     rbx, 10h
180001A39: cmovnb  rax, [rbp+Buf]
180001A3E: mov     [rax+r8], r9b
180001A42: mov     byte ptr [rax+r8+1], 0
180001A48: jmp     short loc_180001A53
180001A4A: lea     rcx, [rbp+Buf]; Src
180001A4E: call    sub_180002770
180001A53: inc     r14
180001A56: mov     rbx, [rbp+var_18]
180001A5A: mov     r8, [rbp+var_20]
180001A5E: cmp     r14, r15
180001A61: jnz     short loc_180001A00
180001A63: lea     r12, [rbp+Buf]
180001A67: mov     r15, [rbp+Buf]
180001A6B: cmp     rbx, 10h
180001A6F: cmovnb  r12, r15
180001A73: cmp     r8, 5
180001A77: jb      loc_180001B27
180001A7D: lea     r13, [r12+r8]
180001A81: lea     r8, [r13-4]
180001A85: sub     r8, r12; MaxCount
180001A88: mov     edx, 4Dh ; 'M'; Val
180001A8D: mov     rcx, r12; Buf
180001A90: call    memchr
180001A95: mov     r9, rax
180001A98: test    rax, rax
180001A9B: jz      loc_180001B27
180001AA1: lea     r14, aMtlg; "MTLG>"
180001AA8: nop     dword ptr [rax+rax+00000000h]
180001AB0: mov     rcx, rdi
180001AB3: nop     dword ptr [rax+00h]
180001AB7: nop     word ptr [rax+rax+00000000h]
180001AC0: movzx   eax, byte ptr [r9+rcx]
180001AC5: inc     rcx
180001AC8: cmp     al, [r14+rcx-1]
180001ACD: jnz     short loc_180001AD9
180001ACF: cmp     rcx, 5
180001AD3: jnz     short loc_180001AC0
180001AD5: mov     eax, edi
180001AD7: jmp     short loc_180001ADE
180001AD9: sbb     eax, eax
180001ADB: or      eax, 1
180001ADE: test    eax, eax
180001AE0: jz      short loc_180001B03
180001AE2: inc     r9
180001AE5: lea     r8, [r13-4]
180001AE9: sub     r8, r9; MaxCount
180001AEC: mov     edx, 4Dh ; 'M'; Val
180001AF1: mov     rcx, r9; Buf
180001AF4: call    memchr
180001AF9: mov     r9, rax
180001AFC: test    rax, rax
180001AFF: jnz     short loc_180001AB0
180001B01: jmp     short loc_180001B27
180001B03: sub     r9, r12
180001B06: cmp     r9, 0FFFFFFFFFFFFFFFFh
180001B0A: jz      short loc_180001B27
180001B0C: mov     byte ptr [rsi+48h], 1
180001B10: lea     rcx, [rsi+58h]; _Cnd_t
180001B14: call    cs:_Cnd_broadcast
180001B1A: test    eax, eax
180001B1C: jz      short loc_180001B27
180001B1E: mov     ecx, eax
180001B20: call    cs:?_Throw_C_error@std@@YAXH@Z; std::_Throw_C_error(int)
180001B26: nop
180001B27: cmp     rbx, 10h
180001B2B: jb      loc_1800020B6
180001B31: lea     rdx, [rbx+1]
180001B35: mov     rax, r15
180001B38: cmp     rdx, 1000h
180001B3F: jb      short loc_180001B5A
180001B41: add     rdx, 27h ; '''
180001B45: mov     r15, [r15-8]
180001B49: sub     rax, r15
180001B4C: add     rax, 0FFFFFFFFFFFFFFF8h
180001B50: cmp     rax, 1Fh
180001B54: ja      loc_1800023E6
180001B5A: mov     rcx, r15
180001B5D: jmp     loc_1800020B1
180001B62: cmp     eax, 6
180001B65: jnz     loc_180001E62
180001B6B: xor     edi, edi
180001B6D: mov     r10d, edi
180001B70: mov     [rbp+var_3C], edi
180001B73: mov     rdx, [rdx]
180001B76: cmp     [rbx+8], rdx
180001B7A: jz      loc_180001C54
180001B80: mov     r13d, edi
180001B83: mov     r8, [rcx+40h]
180001B87: nop     word ptr [rax+rax+00000000h]
180001B90: movzx   eax, byte ptr [rdx+r13]
180001B95: mov     [rbp+var_40], al
180001B98: mov     rdx, [rsi+38h]
180001B9C: mov     r9, r8
180001B9F: lea     eax, [r8+rdx]
180001BA3: test    al, 0Fh
180001BA5: jnz     short loc_180001BCA
180001BA7: lea     rax, [r8+10h]
180001BAB: shr     rax, 4
180001BAF: cmp     [rsi+30h], rax
180001BB3: ja      short loc_180001BCA
180001BB5: lea     rcx, [rsi+20h]
180001BB9: call    sub_1800028D0
180001BBE: mov     rdx, [rsi+38h]
180001BC2: mov     r9, [rsi+40h]
180001BC6: mov     r10d, [rbp+var_3C]
180001BCA: mov     rcx, [rsi+30h]
180001BCE: mov     rax, rcx
180001BD1: shl     rax, 4
180001BD5: dec     rax
180001BD8: and     rax, rdx
180001BDB: mov     [rsi+38h], rax
180001BDF: lea     r15, [r9+rax]
180001BE3: dec     rcx
180001BE6: mov     rax, r15
180001BE9: shr     rax, 4
180001BED: and     rcx, rax
180001BF0: lea     r12, ds:0[rcx*8]
180001BF8: mov     rax, [rsi+28h]
180001BFC: cmp     [rax+r12], rdi
180001C00: jnz     short loc_180001C1C
180001C02: mov     ecx, 10h; Size
180001C07: call    ??2@YAPEAX_K@Z; operator new(unsigned __int64)
180001C0C: mov     rcx, [rsi+28h]
180001C10: mov     [r12+rcx], rax
180001C14: mov     rax, [rsi+28h]
180001C18: mov     r10d, [rbp+var_3C]
180001C1C: and     r15d, 0Fh
180001C20: mov     rax, [r12+rax]
180001C24: movzx   ecx, [rbp+var_40]
180001C28: mov     [r15+rax], cl
180001C2C: inc     qword ptr [rsi+40h]
180001C30: mov     r8, [rsi+40h]
180001C34: inc     r10d
180001C37: mov     [rbp+var_3C], r10d
180001C3B: inc     r13
180001C3E: mov     rdx, [rbx]
180001C41: mov     rcx, [rbx+8]
180001C45: sub     rcx, rdx
180001C48: movsxd  rax, r10d
180001C4B: cmp     rax, rcx
180001C4E: jb      loc_180001B90
180001C54: mov     r15, rdi
180001C57: mov     [rbp+var_20], rdi
180001C5B: mov     ebx, 0Fh
180001C60: mov     [rbp+var_18], rbx
180001C64: mov     byte ptr [rbp+Buf], dil
180001C68: mov     r14, [rsi+38h]
180001C6C: mov     r12, [rsi+40h]
180001C70: add     r12, r14
180001C73: cmp     r14, r12
180001C76: jz      short loc_180001CE3
180001C78: nop     dword ptr [rax+rax+00000000h]
180001C80: mov     rcx, r14
180001C83: shr     rcx, 4
180001C87: mov     rax, [rsi+30h]
180001C8B: dec     rax
180001C8E: and     rcx, rax
180001C91: mov     rdx, r14
180001C94: and     edx, 0Fh
180001C97: mov     rax, [rsi+28h]
180001C9B: mov     rcx, [rax+rcx*8]
180001C9F: movzx   r9d, byte ptr [rdx+rcx]
180001CA4: cmp     r15, rbx
180001CA7: jnb     short loc_180001CCA
180001CA9: lea     rax, [r15+1]
180001CAD: mov     [rbp+var_20], rax
180001CB1: lea     rax, [rbp+Buf]
180001CB5: cmp     rbx, 10h
180001CB9: cmovnb  rax, [rbp+Buf]
180001CBE: mov     [rax+r15], r9b
180001CC2: mov     byte ptr [rax+r15+1], 0
180001CC8: jmp     short loc_180001CD3
180001CCA: lea     rcx, [rbp+Buf]; Src
180001CCE: call    sub_180002770
180001CD3: inc     r14
180001CD6: mov     rbx, [rbp+var_18]
180001CDA: mov     r15, [rbp+var_20]
180001CDE: cmp     r14, r12
180001CE1: jnz     short loc_180001C80
180001CE3: lea     r12, [rbp+Buf]
180001CE7: mov     r13, [rbp+Buf]
180001CEB: cmp     rbx, 10h
180001CEF: cmovnb  r12, r13
180001CF3: cmp     r15, 5
180001CF7: jb      loc_180001E27
180001CFD: lea     r8, [r15-4]
180001D01: add     r8, r12
180001D04: sub     r8, r12; MaxCount
180001D07: mov     edx, 4Dh ; 'M'; Val
180001D0C: mov     rcx, r12; Buf
180001D0F: call    memchr
180001D14: mov     r9, rax
180001D17: test    rax, rax
180001D1A: jz      loc_180001E27
180001D20: lea     r14, aMtlg; "MTLG>"
180001D27: nop     word ptr [rax+rax+00000000h]
180001D30: mov     rcx, rdi
180001D33: nop     dword ptr [rax+00h]
180001D37: nop     word ptr [rax+rax+00000000h]
180001D40: movzx   eax, byte ptr [r9+rcx]
180001D45: inc     rcx
180001D48: cmp     al, [r14+rcx-1]
180001D4D: jnz     short loc_180001D59
180001D4F: cmp     rcx, 5
180001D53: jnz     short loc_180001D40
180001D55: mov     eax, edi
180001D57: jmp     short loc_180001D5E
180001D59: sbb     eax, eax
180001D5B: or      eax, 1
180001D5E: test    eax, eax
180001D60: jz      short loc_180001D89
180001D62: inc     r9
180001D65: lea     r8, [r15-4]
180001D69: add     r8, r12
180001D6C: sub     r8, r9; MaxCount
180001D6F: mov     edx, 4Dh ; 'M'; Val
180001D74: mov     rcx, r9; Buf
180001D77: call    memchr
180001D7C: mov     r9, rax
180001D7F: test    rax, rax
180001D82: jnz     short loc_180001D30
180001D84: jmp     loc_180001E27
180001D89: sub     r9, r12
180001D8C: cmp     r9, 0FFFFFFFFFFFFFFFFh
180001D90: jz      loc_180001E27
180001D96: lea     r14, [rbp+Buf]
180001D9A: cmp     rbx, 10h
180001D9E: cmovnb  r14, r13
180001DA2: cmp     r15, 3
180001DA6: jb      short loc_180001E27
180001DA8: lea     r8, [r14-2]
180001DAC: add     r8, r15
180001DAF: sub     r8, r14; MaxCount
180001DB2: mov     edx, 76h ; 'v'; Val
180001DB7: mov     rcx, r14; Buf
180001DBA: call    memchr
180001DBF: test    rax, rax
180001DC2: jz      short loc_180001E27
180001DC4: cmp     byte ptr [rax], 76h ; 'v'
180001DC7: jnz     short loc_180001DD9
180001DC9: cmp     byte ptr [rax+1], 65h ; 'e'
180001DCD: jnz     short loc_180001DD9
180001DCF: cmp     byte ptr [rax+2], 72h ; 'r'
180001DD3: jnz     short loc_180001DD9
180001DD5: mov     ecx, edi
180001DD7: jmp     short loc_180001DDE
180001DD9: sbb     ecx, ecx
180001DDB: or      ecx, 1
180001DDE: test    ecx, ecx
180001DE0: jz      short loc_180001E03
180001DE2: inc     rax
180001DE5: lea     r8, [r14-2]
180001DE9: add     r8, r15
180001DEC: sub     r8, rax; MaxCount
180001DEF: mov     edx, 76h ; 'v'; Val
180001DF4: mov     rcx, rax; Buf
180001DF7: call    memchr
180001DFC: test    rax, rax
180001DFF: jnz     short loc_180001DC4
180001E01: jmp     short loc_180001E27
180001E03: sub     rax, r14
180001E06: cmp     rax, 0FFFFFFFFFFFFFFFFh
180001E0A: jz      short loc_180001E27
180001E0C: mov     byte ptr [rsi+48h], 1
180001E10: lea     rcx, [rsi+58h]; _Cnd_t
180001E14: call    cs:_Cnd_broadcast
180001E1A: test    eax, eax
180001E1C: jz      short loc_180001E27
180001E1E: mov     ecx, eax
180001E20: call    cs:?_Throw_C_error@std@@YAXH@Z; std::_Throw_C_error(int)
180001E26: nop
180001E27: cmp     rbx, 10h
180001E2B: jb      loc_1800020B6
180001E31: lea     rdx, [rbx+1]
180001E35: mov     rax, r13
180001E38: cmp     rdx, 1000h
180001E3F: jb      short loc_180001E5A
180001E41: add     rdx, 27h ; '''
180001E45: mov     r13, [r13-8]
180001E49: sub     rax, r13
180001E4C: add     rax, 0FFFFFFFFFFFFFFF8h
180001E50: cmp     rax, 1Fh
180001E54: ja      loc_1800023E6
180001E5A: mov     rcx, r13
180001E5D: jmp     loc_1800020B1
180001E62: cmp     eax, 5
180001E65: jnz     loc_1800020E0
180001E6B: xor     edi, edi
180001E6D: mov     r10d, edi
180001E70: mov     [rbp+var_3C], edi
180001E73: mov     rdx, [rdx]
180001E76: cmp     [rbx+8], rdx
180001E7A: jz      loc_180001F54
180001E80: mov     r13d, edi
180001E83: mov     r8, [rcx+40h]
180001E87: nop     word ptr [rax+rax+00000000h]
180001E90: movzx   eax, byte ptr [rdx+r13]
180001E95: mov     [rbp+var_40], al
180001E98: mov     rdx, [rsi+38h]
180001E9C: mov     r9, r8
180001E9F: lea     eax, [r8+rdx]
180001EA3: test    al, 0Fh
180001EA5: jnz     short loc_180001ECA
180001EA7: lea     rax, [r8+10h]
180001EAB: shr     rax, 4
180001EAF: cmp     [rsi+30h], rax
180001EB3: ja      short loc_180001ECA
180001EB5: lea     rcx, [rsi+20h]
180001EB9: call    sub_1800028D0
180001EBE: mov     rdx, [rsi+38h]
180001EC2: mov     r9, [rsi+40h]
180001EC6: mov     r10d, [rbp+var_3C]
180001ECA: mov     rcx, [rsi+30h]
180001ECE: mov     rax, rcx
180001ED1: shl     rax, 4
180001ED5: dec     rax
180001ED8: and     rax, rdx
180001EDB: mov     [rsi+38h], rax
180001EDF: lea     r15, [r9+rax]
180001EE3: dec     rcx
180001EE6: mov     rax, r15
180001EE9: shr     rax, 4
180001EED: and     rcx, rax
180001EF0: lea     r12, ds:0[rcx*8]
180001EF8: mov     rax, [rsi+28h]
180001EFC: cmp     [rax+r12], rdi
180001F00: jnz     short loc_180001F1C
180001F02: mov     ecx, 10h; Size
180001F07: call    ??2@YAPEAX_K@Z; operator new(unsigned __int64)
180001F0C: mov     rcx, [rsi+28h]
180001F10: mov     [r12+rcx], rax
180001F14: mov     rax, [rsi+28h]
180001F18: mov     r10d, [rbp+var_3C]
180001F1C: and     r15d, 0Fh
180001F20: mov     rax, [r12+rax]
180001F24: movzx   ecx, [rbp+var_40]
180001F28: mov     [r15+rax], cl
180001F2C: inc     qword ptr [rsi+40h]
180001F30: mov     r8, [rsi+40h]
180001F34: inc     r10d
180001F37: mov     [rbp+var_3C], r10d
180001F3B: inc     r13
180001F3E: mov     rdx, [rbx]
180001F41: mov     rcx, [rbx+8]
180001F45: sub     rcx, rdx
180001F48: movsxd  rax, r10d
180001F4B: cmp     rax, rcx
180001F4E: jb      loc_180001E90
180001F54: mov     [rbp+var_20], rdi
180001F58: mov     ebx, 0Fh
180001F5D: mov     [rbp+var_18], rbx
180001F61: mov     byte ptr [rbp+Buf], dil
180001F65: mov     r14, [rsi+38h]
180001F69: mov     r15, [rsi+40h]
180001F6D: add     r15, r14
180001F70: cmp     r14, r15
180001F73: jz      short loc_180001FE2
180001F75: nop     word ptr [rax+rax+00000000h]
180001F80: mov     rcx, r14
180001F83: shr     rcx, 4
180001F87: mov     rax, [rsi+30h]
180001F8B: dec     rax
180001F8E: and     rcx, rax
180001F91: mov     rdx, r14
180001F94: and     edx, 0Fh
180001F97: mov     rax, [rsi+28h]
180001F9B: mov     rcx, [rax+rcx*8]
180001F9F: movzx   r9d, byte ptr [rdx+rcx]
180001FA4: cmp     rdi, rbx
180001FA7: jnb     short loc_180001FC9
180001FA9: lea     rax, [rdi+1]
180001FAD: mov     [rbp+var_20], rax
180001FB1: lea     rax, [rbp+Buf]
180001FB5: cmp     rbx, 10h
180001FB9: cmovnb  rax, [rbp+Buf]
180001FBE: mov     [rax+rdi], r9b
180001FC2: mov     byte ptr [rax+rdi+1], 0
180001FC7: jmp     short loc_180001FD2
180001FC9: lea     rcx, [rbp+Buf]; Src
180001FCD: call    sub_180002770
180001FD2: inc     r14
180001FD5: mov     rbx, [rbp+var_18]
180001FD9: mov     rdi, [rbp+var_20]
180001FDD: cmp     r14, r15
180001FE0: jnz     short loc_180001F80
180001FE2: lea     r15, [rbp+Buf]
180001FE6: mov     r14, [rbp+Buf]
180001FEA: cmp     rbx, 10h
180001FEE: cmovnb  r15, r14
180001FF2: cmp     rdi, 17h
180001FF6: jb      loc_18000207F
180001FFC: lea     r12, [r15+rdi]
180002000: lea     r8, [r12-16h]
180002005: sub     r8, r15; MaxCount
180002008: mov     edx, 55h ; 'U'; Val
18000200D: mov     rcx, r15; Buf
180002010: call    memchr
180002015: mov     rdi, rax
180002018: test    rax, rax
18000201B: jz      short loc_18000207F
18000201D: nop     dword ptr [rax]
180002020: mov     r8d, 17h; Size
180002026: lea     rdx, aUseYmodemToSen; "Use Ymodem to send file"
18000202D: mov     rcx, rdi; Buf1
180002030: call    memcmp
180002035: test    eax, eax
180002037: jz      short loc_18000205B
180002039: inc     rdi
18000203C: lea     r8, [r12-16h]
180002041: sub     r8, rdi; MaxCount
180002044: mov     edx, 55h ; 'U'; Val
180002049: mov     rcx, rdi; Buf
18000204C: call    memchr
180002051: mov     rdi, rax
180002054: test    rax, rax
180002057: jnz     short loc_180002020
180002059: jmp     short loc_18000207F
18000205B: sub     rdi, r15
18000205E: cmp     rdi, 0FFFFFFFFFFFFFFFFh
180002062: jz      short loc_18000207F
180002064: mov     byte ptr [rsi+48h], 1
180002068: lea     rcx, [rsi+58h]; _Cnd_t
18000206C: call    cs:_Cnd_broadcast
180002072: test    eax, eax
180002074: jz      short loc_18000207F
180002076: mov     ecx, eax
180002078: call    cs:?_Throw_C_error@std@@YAXH@Z; std::_Throw_C_error(int)
18000207E: nop
18000207F: cmp     rbx, 10h
180002083: jb      short loc_1800020B6
180002085: lea     rdx, [rbx+1]
180002089: mov     rax, r14
18000208C: cmp     rdx, 1000h
180002093: jb      short loc_1800020AE
180002095: add     rdx, 27h ; '''
180002099: mov     r14, [r14-8]
18000209D: sub     rax, r14
1800020A0: add     rax, 0FFFFFFFFFFFFFFF8h
1800020A4: cmp     rax, 1Fh
1800020A8: ja      loc_1800023E6
1800020AE: mov     rcx, r14; Block
1800020B1: call    j_j_free
1800020B6: mov     rcx, [rbp+var_10]
1800020BA: xor     rcx, rsp; StackCookie
1800020BD: call    __security_check_cookie
1800020C2: lea     r11, [rsp+60h+var_s0]
1800020C7: mov     rbx, [r11+38h]
1800020CB: mov     rsi, [r11+40h]
1800020CF: mov     rdi, [r11+48h]
1800020D3: mov     rsp, r11
1800020D6: pop     r15
1800020D8: pop     r14
1800020DA: pop     r13
1800020DC: pop     r12
1800020DE: pop     rbp
1800020DF: retn
1800020E0: cmp     eax, 7
1800020E3: jnz     short loc_180002116
1800020E5: mov     rcx, [rdx]
1800020E8: mov     rax, [rdx+8]
1800020EC: sub     rax, rcx
1800020EF: cmp     rax, 1
1800020F3: jnz     short loc_1800020B6
1800020F5: cmp     byte ptr [rcx], 6
1800020F8: jnz     short loc_1800020B6
1800020FA: mov     [rsi+48h], al
1800020FD: lea     rcx, [rsi+58h]; _Cnd_t
180002101: call    cs:_Cnd_broadcast
180002107: test    eax, eax
180002109: jz      short loc_180002114
18000210B: mov     ecx, eax
18000210D: call    cs:?_Throw_C_error@std@@YAXH@Z; std::_Throw_C_error(int)
180002113: nop
180002114: jmp     short loc_1800020B6
180002116: cmp     eax, 8
180002119: jnz     short loc_18000214F
18000211B: mov     rcx, [rdx]
18000211E: mov     rax, [rdx+8]
180002122: sub     rax, rcx
180002125: cmp     rax, 1
180002129: jnz     short loc_1800020B6
18000212B: cmp     byte ptr [rcx], 6
18000212E: jnz     short loc_1800020B6
180002130: mov     [rsi+48h], al
180002133: lea     rcx, [rsi+58h]; _Cnd_t
180002137: call    cs:_Cnd_broadcast
18000213D: test    eax, eax
18000213F: jz      short loc_18000214A
180002141: mov     ecx, eax
180002143: call    cs:?_Throw_C_error@std@@YAXH@Z; std::_Throw_C_error(int)
180002149: nop
18000214A: jmp     loc_1800020B6
18000214F: cmp     eax, 9
180002152: jnz     short loc_180002190
180002154: mov     rcx, [rdx]
180002157: mov     rax, [rdx+8]
18000215B: sub     rax, rcx
18000215E: cmp     rax, 1
180002162: jnz     loc_1800020B6
180002168: cmp     byte ptr [rcx], 6
18000216B: jnz     loc_1800020B6
180002171: mov     [rsi+48h], al
180002174: lea     rcx, [rsi+58h]; _Cnd_t
180002178: call    cs:_Cnd_broadcast
18000217E: test    eax, eax
180002180: jz      short loc_18000218B
180002182: mov     ecx, eax
180002184: call    cs:?_Throw_C_error@std@@YAXH@Z; std::_Throw_C_error(int)
18000218A: nop
18000218B: jmp     loc_1800020B6
180002190: cmp     eax, 0Ah
180002193: jnz     loc_1800020B6
180002199: xor     edi, edi
18000219B: mov     r9d, edi
18000219E: mov     [rbp+var_3C], edi
1800021A1: mov     r8, [rdx]
1800021A4: cmp     [rdx+8], r8
1800021A8: jz      loc_180002284
1800021AE: mov     r13d, edi
1800021B1: mov     rdx, [rcx+40h]
1800021B5: nop     word ptr [rax+rax+00000000h]
1800021C0: movzx   eax, byte ptr [r8+r13]
1800021C5: mov     [rbp+var_40], al
1800021C8: mov     rcx, [rsi+38h]
1800021CC: mov     r8, rdx
1800021CF: lea     eax, [rcx+rdx]
1800021D2: test    al, 0Fh
1800021D4: jnz     short loc_1800021F9
1800021D6: lea     rax, [rdx+10h]
1800021DA: shr     rax, 4
1800021DE: cmp     [rsi+30h], rax
1800021E2: ja      short loc_1800021F9
1800021E4: lea     rcx, [rsi+20h]
1800021E8: call    sub_1800028D0
1800021ED: mov     rcx, [rsi+38h]
1800021F1: mov     r8, [rsi+40h]
1800021F5: mov     r9d, [rbp+var_3C]
1800021F9: mov     rdx, [rsi+30h]
1800021FD: mov     rax, rdx
180002200: shl     rax, 4
180002204: dec     rax
180002207: and     rax, rcx
18000220A: mov     [rsi+38h], rax
18000220E: lea     r15, [rax+r8]
180002212: mov     rcx, r15
180002215: shr     rcx, 4
180002219: lea     rax, [rdx-1]
18000221D: and     rcx, rax
180002220: lea     r12, ds:0[rcx*8]
180002228: mov     rax, [rsi+28h]
18000222C: cmp     [rax+r12], rdi
180002230: jnz     short loc_18000224C
180002232: mov     ecx, 10h; Size
180002237: call    ??2@YAPEAX_K@Z; operator new(unsigned __int64)
18000223C: mov     rcx, [rsi+28h]
180002240: mov     [r12+rcx], rax
180002244: mov     rax, [rsi+28h]
180002248: mov     r9d, [rbp+var_3C]
18000224C: and     r15d, 0Fh
180002250: mov     rax, [rax+r12]
180002254: movzx   ecx, [rbp+var_40]
180002258: mov     [r15+rax], cl
18000225C: inc     qword ptr [rsi+40h]
180002260: mov     rdx, [rsi+40h]
180002264: inc     r9d
180002267: mov     [rbp+var_3C], r9d
18000226B: inc     r13
18000226E: mov     r8, [rbx]
180002271: mov     rcx, [rbx+8]
180002275: sub     rcx, r8
180002278: movsxd  rax, r9d
18000227B: cmp     rax, rcx
18000227E: jb      loc_1800021C0
180002284: mov     [rbp+var_20], rdi
180002288: mov     ebx, 0Fh
18000228D: mov     [rbp+var_18], rbx
180002291: mov     byte ptr [rbp+Buf], dil
180002295: mov     r14, [rsi+38h]
180002299: mov     r15, [rsi+40h]
18000229D: add     r15, r14
1800022A0: cmp     r14, r15
1800022A3: jz      short loc_180002312
1800022A5: nop     word ptr [rax+rax+00000000h]
1800022B0: mov     rcx, r14
1800022B3: shr     rcx, 4
1800022B7: mov     rax, [rsi+30h]
1800022BB: dec     rax
1800022BE: and     rcx, rax
1800022C1: mov     rdx, r14
1800022C4: and     edx, 0Fh
1800022C7: mov     rax, [rsi+28h]
1800022CB: mov     rcx, [rax+rcx*8]
1800022CF: movzx   r9d, byte ptr [rdx+rcx]
1800022D4: cmp     rdi, rbx
1800022D7: jnb     short loc_1800022F9
1800022D9: lea     rax, [rdi+1]
1800022DD: mov     [rbp+var_20], rax
1800022E1: lea     rax, [rbp+Buf]
1800022E5: cmp     rbx, 10h
1800022E9: cmovnb  rax, [rbp+Buf]
1800022EE: mov     [rdi+rax], r9b
1800022F2: mov     byte ptr [rdi+rax+1], 0
1800022F7: jmp     short loc_180002302
1800022F9: lea     rcx, [rbp+Buf]; Src
1800022FD: call    sub_180002770
180002302: inc     r14
180002305: mov     rbx, [rbp+var_18]
180002309: mov     rdi, [rbp+var_20]
18000230D: cmp     r14, r15
180002310: jnz     short loc_1800022B0
180002312: lea     r15, [rbp+Buf]
180002316: mov     r14, [rbp+Buf]
18000231A: cmp     rbx, 10h
18000231E: cmovnb  r15, r14
180002322: cmp     rdi, 26h ; '&'
180002326: jb      loc_1800023AF
18000232C: lea     r12, [rdi+r15]
180002330: lea     r8, [r12-25h]
180002335: sub     r8, r15; MaxCount
180002338: mov     edx, 46h ; 'F'; Val
18000233D: mov     rcx, r15; Buf
180002340: call    memchr
180002345: mov     rdi, rax
180002348: test    rax, rax
18000234B: jz      short loc_1800023AF
18000234D: nop     dword ptr [rax]
180002350: mov     r8d, 26h ; '&'; Size
180002356: lea     rdx, aFirmwareUpgrad; "Firmware upgrade success, rebooting..."
18000235D: mov     rcx, rdi; Buf1
180002360: call    memcmp
180002365: test    eax, eax
180002367: jz      short loc_18000238B
180002369: inc     rdi
18000236C: lea     r8, [r12-25h]
180002371: sub     r8, rdi; MaxCount
180002374: mov     edx, 46h ; 'F'; Val
180002379: mov     rcx, rdi; Buf
18000237C: call    memchr
180002381: mov     rdi, rax
180002384: test    rax, rax
180002387: jnz     short loc_180002350
180002389: jmp     short loc_1800023AF
18000238B: sub     rdi, r15
18000238E: cmp     rdi, 0FFFFFFFFFFFFFFFFh
180002392: jz      short loc_1800023AF
180002394: mov     byte ptr [rsi+48h], 1
180002398: lea     rcx, [rsi+58h]; _Cnd_t
18000239C: call    cs:_Cnd_broadcast
1800023A2: test    eax, eax
1800023A4: jz      short loc_1800023AF
1800023A6: mov     ecx, eax
1800023A8: call    cs:?_Throw_C_error@std@@YAXH@Z; std::_Throw_C_error(int)
1800023AE: nop
1800023AF: cmp     rbx, 10h
1800023B3: jb      loc_1800020B6
1800023B9: lea     rdx, [rbx+1]
1800023BD: mov     rax, r14
1800023C0: cmp     rdx, 1000h
1800023C7: jb      loc_1800020AE
1800023CD: add     rdx, 27h ; '''
1800023D1: mov     r14, [r14-8]
1800023D5: sub     rax, r14
1800023D8: add     rax, 0FFFFFFFFFFFFFFF8h
1800023DC: cmp     rax, 1Fh
1800023E0: jbe     loc_1800020AE
1800023E6: call    cs:_invalid_parameter_noinfo_noreturn
1800023EC: db 0CCh

### FUNC 1800023F0 - 180002417 (39 bytes) name=sub_1800023F0
1800023F0: push    rbx
1800023F2: sub     rsp, 20h
1800023F6: mov     rbx, rcx
1800023F9: call    sub_180002550
1800023FE: mov     rcx, [rbx]; Block
180002401: mov     edx, 10h
180002406: mov     qword ptr [rbx], 0
18000240D: add     rsp, 20h
180002411: pop     rbx
180002412: jmp     j_j_free

### FUNC 180002420 - 180002478 (88 bytes) name=sub_180002420
180002420: push    rbx
180002422: sub     rsp, 20h
180002426: mov     rbx, rcx
180002429: mov     rcx, [rcx]
18000242C: test    rcx, rcx
18000242F: jz      short loc_18000246B
180002431: mov     rdx, [rbx+10h]
180002435: sub     rdx, rcx
180002438: cmp     rdx, 1000h
18000243F: jb      short loc_180002459
180002441: mov     r8, [rcx-8]
180002445: add     rdx, 27h ; '''
180002449: sub     rcx, r8
18000244C: lea     rax, [rcx-8]
180002450: cmp     rax, 1Fh
180002454: ja      short loc_180002471
180002456: mov     rcx, r8; Block
180002459: call    j_j_free
18000245E: xor     eax, eax
180002460: mov     [rbx], rax
180002463: mov     [rbx+8], rax
180002467: mov     [rbx+10h], rax
18000246B: add     rsp, 20h
18000246F: pop     rbx
180002470: retn
180002471: call    cs:_invalid_parameter_noinfo_noreturn
180002477: db 0CCh

### FUNC 180002480 - 1800024A6 (38 bytes) name=sub_180002480
180002480: sub     rsp, 28h
180002484: cmp     byte ptr [rcx+8], 0
180002488: jz      short loc_1800024A1
18000248A: mov     rcx, [rcx]; _Mtx_t
18000248D: call    cs:_Mtx_unlock
180002493: nop
180002494: test    eax, eax
180002496: jz      short loc_1800024A1
180002498: mov     ecx, eax
18000249A: call    cs:?_Throw_C_error@std@@YAXH@Z; std::_Throw_C_error(int)
1800024A0: nop
1800024A1: add     rsp, 28h
1800024A5: retn

### FUNC 1800024B0 - 18000250F (95 bytes) name=sub_1800024B0
1800024B0: push    rbx
1800024B2: sub     rsp, 20h
1800024B6: mov     rdx, [rcx+18h]
1800024BA: mov     rbx, rcx
1800024BD: cmp     rdx, 10h
1800024C1: jb      short loc_1800024EF
1800024C3: mov     rcx, [rcx]
1800024C6: inc     rdx
1800024C9: cmp     rdx, 1000h
1800024D0: jb      short loc_1800024EA
1800024D2: mov     r8, [rcx-8]
1800024D6: add     rdx, 27h ; '''
1800024DA: sub     rcx, r8
1800024DD: lea     rax, [rcx-8]
1800024E1: cmp     rax, 1Fh
1800024E5: ja      short loc_180002508
1800024E7: mov     rcx, r8; Block
1800024EA: call    j_j_free
1800024EF: mov     qword ptr [rbx+10h], 0
1800024F7: mov     qword ptr [rbx+18h], 0Fh
1800024FF: mov     byte ptr [rbx], 0
180002502: add     rsp, 20h
180002506: pop     rbx
180002507: retn
180002508: call    cs:_invalid_parameter_noinfo_noreturn
18000250E: db 0CCh

### FUNC 180002510 - 18000254B (59 bytes) name=sub_180002510
180002510: push    rbx
180002512: sub     rsp, 20h
180002516: mov     rbx, rcx
180002519: mov     qword ptr [rcx+10h], 0
180002521: mov     qword ptr [rcx+18h], 0Fh
180002529: mov     r8, 0FFFFFFFFFFFFFFFFh
180002530: mov     byte ptr [rcx], 0
180002533: inc     r8; Size
180002536: cmp     byte ptr [rdx+r8], 0
18000253B: jnz     short loc_180002533
18000253D: call    sub_180002610
180002542: mov     rax, rbx
180002545: add     rsp, 20h
180002549: pop     rbx
18000254A: retn

### FUNC 180002550 - 180002605 (181 bytes) name=sub_180002550
180002550: mov     [rsp+arg_8], rbx
180002555: mov     [rsp+arg_10], rsi
18000255A: push    rdi
18000255B: sub     rsp, 20h
18000255F: mov     rbx, rcx
180002562: xor     esi, esi
180002564: mov     rcx, [rcx+20h]
180002568: test    rcx, rcx
18000256B: jz      short loc_180002584
18000256D: nop     dword ptr [rax]
180002570: lea     rax, [rcx-1]
180002574: mov     [rbx+20h], rax
180002578: mov     rcx, rax
18000257B: test    rax, rax
18000257E: jnz     short loc_180002570
180002580: mov     [rbx+18h], rsi
180002584: mov     rdi, [rbx+10h]
180002588: test    rdi, rdi
18000258B: jz      short loc_1800025AF
18000258D: nop     dword ptr [rax]
180002590: mov     rax, [rbx+8]
180002594: dec     rdi
180002597: mov     rcx, [rax+rdi*8]; Block
18000259B: test    rcx, rcx
18000259E: jz      short loc_1800025AA
1800025A0: mov     edx, 10h
1800025A5: call    j_j_free
1800025AA: test    rdi, rdi
1800025AD: jnz     short loc_180002590
1800025AF: mov     rcx, [rbx+8]
1800025B3: test    rcx, rcx
1800025B6: jz      short loc_1800025E6
1800025B8: mov     rdx, [rbx+10h]
1800025BC: shl     rdx, 3
1800025C0: cmp     rdx, 1000h
1800025C7: jb      short loc_1800025E1
1800025C9: mov     r8, [rcx-8]
1800025CD: add     rdx, 27h ; '''
1800025D1: sub     rcx, r8
1800025D4: lea     rax, [rcx-8]
1800025D8: cmp     rax, 1Fh
1800025DC: ja      short loc_1800025FE
1800025DE: mov     rcx, r8; Block
1800025E1: call    j_j_free
1800025E6: mov     [rbx+10h], rsi
1800025EA: mov     [rbx+8], rsi
1800025EE: mov     rbx, [rsp+28h+arg_8]
1800025F3: mov     rsi, [rsp+28h+arg_10]
1800025F8: add     rsp, 20h
1800025FC: pop     rdi
1800025FD: retn
1800025FE: call    cs:_invalid_parameter_noinfo_noreturn
180002604: db 0CCh

### FUNC 180002610 - 18000276D (349 bytes) name=sub_180002610
180002610: push    rbx
180002612: push    rbp
180002613: push    rdi
180002614: push    r14
180002616: push    r15
180002618: sub     rsp, 20h
18000261C: mov     rbp, [rcx+18h]
180002620: mov     r14, r8
180002623: mov     r15, rdx
180002626: mov     rbx, rcx
180002629: cmp     r8, rbp
18000262C: ja      short loc_18000265A
18000262E: mov     rdi, rcx
180002631: cmp     rbp, 10h
180002635: jb      short loc_18000263A
180002637: mov     rdi, [rcx]
18000263A: mov     [rcx+10h], r14
18000263E: mov     rcx, rdi; void *
180002641: call    memmove
180002646: mov     rax, rbx
180002649: mov     byte ptr [r14+rdi], 0
18000264E: add     rsp, 20h
180002652: pop     r15
180002654: pop     r14
180002656: pop     rdi
180002657: pop     rbp
180002658: pop     rbx
180002659: retn
18000265A: mov     rdi, 7FFFFFFFFFFFFFFFh
180002664: cmp     r14, rdi
180002667: ja      loc_180002767
18000266D: mov     rcx, r14
180002670: or      rcx, 0Fh
180002674: cmp     rcx, rdi
180002677: ja      short loc_180002698
180002679: mov     rdx, rbp
18000267C: mov     rax, rdi
18000267F: shr     rdx, 1
180002682: sub     rax, rdx
180002685: cmp     rbp, rax
180002688: ja      short loc_180002698
18000268A: lea     rax, [rdx+rbp]
18000268E: mov     rdi, rcx
180002691: cmp     rcx, rax
180002694: cmovb   rdi, rax
180002698: mov     rcx, rdi
18000269B: mov     [rsp+48h+arg_18], rsi
1800026A0: add     rcx, 1
1800026A4: mov     rax, 0FFFFFFFFFFFFFFFFh
1800026AB: cmovb   rcx, rax; Size
1800026AF: cmp     rcx, 1000h
1800026B6: jb      short loc_1800026E4
1800026B8: lea     rax, [rcx+27h]
1800026BC: cmp     rax, rcx
1800026BF: jbe     loc_180002761
1800026C5: mov     rcx, rax; Size
1800026C8: call    ??2@YAPEAX_K@Z; operator new(unsigned __int64)
1800026CD: test    rax, rax
1800026D0: jz      loc_18000275A
1800026D6: lea     rsi, [rax+27h]
1800026DA: and     rsi, 0FFFFFFFFFFFFFFE0h
1800026DE: mov     [rsi-8], rax
1800026E2: jmp     short loc_1800026F5
1800026E4: test    rcx, rcx
1800026E7: jz      short loc_1800026F3
1800026E9: call    ??2@YAPEAX_K@Z; operator new(unsigned __int64)
1800026EE: mov     rsi, rax
1800026F1: jmp     short loc_1800026F5
1800026F3: xor     esi, esi
1800026F5: mov     r8, r14; Size
1800026F8: mov     [rbx+10h], r14
1800026FC: mov     rdx, r15; Src
1800026FF: mov     [rbx+18h], rdi
180002703: mov     rcx, rsi; void *
180002706: call    memcpy
18000270B: mov     byte ptr [r14+rsi], 0
180002710: cmp     rbp, 10h
180002714: jb      short loc_180002743
180002716: mov     rcx, [rbx]
180002719: lea     rdx, [rbp+1]
18000271D: cmp     rdx, 1000h
180002724: jb      short loc_18000273E
180002726: mov     r8, [rcx-8]
18000272A: add     rdx, 27h ; '''
18000272E: sub     rcx, r8
180002731: lea     rax, [rcx-8]
180002735: cmp     rax, 1Fh
180002739: ja      short loc_18000275A
18000273B: mov     rcx, r8; Block
18000273E: call    j_j_free
180002743: mov     [rbx], rsi
180002746: mov     rax, rbx
180002749: mov     rsi, [rsp+48h+arg_18]
18000274E: add     rsp, 20h
180002752: pop     r15
180002754: pop     r14
180002756: pop     rdi
180002757: pop     rbp
180002758: pop     rbx
180002759: retn
18000275A: call    cs:_invalid_parameter_noinfo_noreturn
180002760: int     3; Trap to Debugger
180002761: call    ?cancel_current_task@Concurrency@@YAXXZ; Concurrency::cancel_current_task(void)
180002766: db 0CCh
180002767: call    sub_180002B40
18000276C: db 0CCh

### FUNC 180002770 - 1800028CF (351 bytes) name=sub_180002770
180002770: push    rbx
180002772: push    rbp
180002773: push    rsi
180002774: push    r15
180002776: sub     rsp, 28h
18000277A: mov     rbp, [rcx+10h]
18000277E: mov     rbx, 7FFFFFFFFFFFFFFFh
180002788: mov     rax, rbx
18000278B: movzx   r15d, r9b
18000278F: sub     rax, rbp
180002792: mov     rsi, rcx
180002795: cmp     rax, 1
180002799: jb      loc_1800028C9
18000279F: mov     [rsp+48h+arg_10], r12
1800027A4: lea     r12, [rbp+1]
1800027A8: mov     [rsp+48h+var_28], r14
1800027AD: mov     r14, [rcx+18h]
1800027B1: mov     rcx, r12
1800027B4: or      rcx, 0Fh
1800027B8: cmp     rcx, rbx
1800027BB: ja      short loc_1800027DC
1800027BD: mov     rdx, r14
1800027C0: mov     rax, rbx
1800027C3: shr     rdx, 1
1800027C6: sub     rax, rdx
1800027C9: cmp     r14, rax
1800027CC: ja      short loc_1800027DC
1800027CE: lea     rax, [rdx+r14]
1800027D2: mov     rbx, rcx
1800027D5: cmp     rcx, rax
1800027D8: cmovb   rbx, rax
1800027DC: mov     rcx, rbx
1800027DF: mov     [rsp+48h+arg_8], rdi
1800027E4: add     rcx, 1
1800027E8: mov     rax, 0FFFFFFFFFFFFFFFFh
1800027EF: cmovb   rcx, rax; Size
1800027F3: cmp     rcx, 1000h
1800027FA: jb      short loc_180002824
1800027FC: lea     rax, [rcx+27h]
180002800: cmp     rax, rcx
180002803: jbe     loc_1800028C3
180002809: mov     rcx, rax; Size
18000280C: call    ??2@YAPEAX_K@Z; operator new(unsigned __int64)
180002811: test    rax, rax
180002814: jz      short loc_18000288C
180002816: lea     rdi, [rax+27h]
18000281A: and     rdi, 0FFFFFFFFFFFFFFE0h
18000281E: mov     [rdi-8], rax
180002822: jmp     short loc_180002835
180002824: test    rcx, rcx
180002827: jz      short loc_180002833
180002829: call    ??2@YAPEAX_K@Z; operator new(unsigned __int64)
18000282E: mov     rdi, rax
180002831: jmp     short loc_180002835
180002833: xor     edi, edi
180002835: mov     [rsi+10h], r12
180002839: mov     r8, rbp; Size
18000283C: mov     [rsi+18h], rbx
180002840: mov     rcx, rdi; void *
180002843: cmp     r14, 10h
180002847: jb      short loc_180002893
180002849: mov     rbx, [rsi]
18000284C: mov     rdx, rbx; Src
18000284F: call    memcpy
180002854: lea     rdx, [r14+1]
180002858: mov     [rdi+rbp], r15b
18000285C: mov     byte ptr [rdi+rbp+1], 0
180002861: cmp     rdx, 1000h
180002868: jb      short loc_180002882
18000286A: mov     rcx, [rbx-8]
18000286E: add     rdx, 27h ; '''
180002872: sub     rbx, rcx
180002875: lea     rax, [rbx-8]
180002879: cmp     rax, 1Fh
18000287D: ja      short loc_18000288C
18000287F: mov     rbx, rcx
180002882: mov     rcx, rbx; Block
180002885: call    j_j_free
18000288A: jmp     short loc_1800028A4
18000288C: call    cs:_invalid_parameter_noinfo_noreturn
180002892: int     3; Trap to Debugger
180002893: mov     rdx, rsi; Src
180002896: call    memcpy
18000289B: mov     [rdi+rbp], r15b
18000289F: mov     byte ptr [rdi+rbp+1], 0
1800028A4: mov     [rsi], rdi
1800028A7: mov     rax, rsi
1800028AA: mov     rdi, [rsp+48h+arg_8]
1800028AF: mov     r12, [rsp+48h+arg_10]
1800028B4: mov     r14, [rsp+48h+var_28]
1800028B9: add     rsp, 28h
1800028BD: pop     r15
1800028BF: pop     rsi
1800028C0: pop     rbp
1800028C1: pop     rbx
1800028C2: retn
1800028C3: call    ?cancel_current_task@Concurrency@@YAXXZ; Concurrency::cancel_current_task(void)
1800028C8: db 0CCh
1800028C9: call    sub_180002B40
1800028CE: db 0CCh

### FUNC 1800028D0 - 180002AA7 (471 bytes) name=sub_1800028D0
1800028D0: push    rbp
1800028D2: push    rsi
1800028D3: sub     rsp, 38h
1800028D7: mov     rdx, [rcx+10h]
1800028DB: mov     eax, 1
1800028E0: test    rdx, rdx
1800028E3: mov     rbp, rcx
1800028E6: mov     r8, 7FFFFFFFFFFFFFFh
1800028F0: cmovnz  rax, rdx
1800028F4: mov     rsi, rax
1800028F7: sub     rsi, rdx
1800028FA: cmp     rsi, 1
1800028FE: jb      short loc_180002906
180002900: cmp     rax, 8
180002904: jnb     short loc_18000291A
180002906: mov     rcx, r8
180002909: sub     rcx, rax
18000290C: cmp     rcx, rax
18000290F: jb      loc_180002AA1
180002915: add     rax, rax
180002918: jmp     short loc_1800028F4
18000291A: mov     [rsp+48h+var_20], r14
18000291F: mov     rcx, 1FFFFFFFFFFFFFFFh
180002929: mov     [rsp+48h+var_28], r15
18000292E: mov     r15, [rbp+18h]
180002932: shr     r15, 4
180002936: cmp     rax, rcx
180002939: ja      loc_180002A9B
18000293F: lea     rcx, ds:0[rax*8]; Size
180002947: cmp     rcx, 1000h
18000294E: jb      short loc_18000297C
180002950: lea     rax, [rcx+27h]
180002954: cmp     rax, rcx
180002957: jbe     loc_180002A9B
18000295D: mov     rcx, rax; Size
180002960: call    ??2@YAPEAX_K@Z; operator new(unsigned __int64)
180002965: test    rax, rax
180002968: jz      loc_180002A94
18000296E: lea     r14, [rax+27h]
180002972: and     r14, 0FFFFFFFFFFFFFFE0h
180002976: mov     [r14-8], rax
18000297A: jmp     short loc_18000298E
18000297C: test    rcx, rcx
18000297F: jz      short loc_18000298B
180002981: call    ??2@YAPEAX_K@Z; operator new(unsigned __int64)
180002986: mov     r14, rax
180002989: jmp     short loc_18000298E
18000298B: xor     r14d, r14d
18000298E: mov     rax, [rbp+8]
180002992: mov     [rsp+48h+arg_8], rbx
180002997: mov     rbx, [rbp+10h]
18000299B: mov     [rsp+48h+arg_10], rdi
1800029A0: shl     rbx, 3
1800029A4: mov     [rsp+48h+var_18], r12
1800029A9: lea     r12, ds:0[r15*8]
1800029B1: lea     rdx, [rax+r12]; Src
1800029B5: sub     rbx, rdx
1800029B8: lea     rdi, [r12+r14]
1800029BC: add     rbx, rax
1800029BF: mov     rcx, rdi; void *
1800029C2: mov     r8, rbx; Size
1800029C5: call    memmove
1800029CA: mov     rdx, [rbp+8]; Src
1800029CE: add     rbx, rdi
1800029D1: mov     rcx, rbx; void *
1800029D4: cmp     r15, rsi
1800029D7: ja      short loc_1800029FE
1800029D9: mov     r8, r12; Size
1800029DC: call    memmove
1800029E1: mov     r8, rsi
1800029E4: lea     rcx, [r12+rbx]; void *
1800029E8: sub     r8, r15
1800029EB: xor     edx, edx; Val
1800029ED: shl     r8, 3; Size
1800029F1: call    memset
1800029F6: mov     r8, r12
1800029F9: mov     rcx, r14
1800029FC: jmp     short loc_180002A2E
1800029FE: lea     rdi, ds:0[rsi*8]
180002A06: mov     r8, rdi; Size
180002A09: call    memmove
180002A0E: mov     rbx, [rbp+8]
180002A12: mov     rcx, r14; void *
180002A15: lea     rdx, [rdi+rbx]; Src
180002A19: sub     rbx, rdx
180002A1C: add     rbx, r12
180002A1F: mov     r8, rbx; Size
180002A22: call    memmove
180002A27: lea     rcx, [rbx+r14]; void *
180002A2B: mov     r8, rdi; Size
180002A2E: xor     edx, edx; Val
180002A30: call    memset
180002A35: mov     rcx, [rbp+8]
180002A39: mov     r12, [rsp+48h+var_18]
180002A3E: mov     rdi, [rsp+48h+arg_10]
180002A43: mov     rbx, [rsp+48h+arg_8]
180002A48: test    rcx, rcx
180002A4B: jz      short loc_180002A7B
180002A4D: mov     rdx, [rbp+10h]
180002A51: shl     rdx, 3
180002A55: cmp     rdx, 1000h
180002A5C: jb      short loc_180002A76
180002A5E: mov     r8, [rcx-8]
180002A62: add     rdx, 27h ; '''
180002A66: sub     rcx, r8
180002A69: lea     rax, [rcx-8]
180002A6D: cmp     rax, 1Fh
180002A71: ja      short loc_180002A94
180002A73: mov     rcx, r8; Block
180002A76: call    j_j_free
180002A7B: add     [rbp+10h], rsi
180002A7F: mov     r15, [rsp+48h+var_28]
180002A84: mov     [rbp+8], r14
180002A88: mov     r14, [rsp+48h+var_20]
180002A8D: add     rsp, 38h
180002A91: pop     rsi
180002A92: pop     rbp
180002A93: retn
180002A94: call    cs:_invalid_parameter_noinfo_noreturn
180002A9A: int     3; Trap to Debugger
180002A9B: call    ?cancel_current_task@Concurrency@@YAXXZ; Concurrency::cancel_current_task(void)
180002AA0: db 0CCh
180002AA1: call    sub_180002B60
180002AA6: db 0CCh

### FUNC 180002AB0 - 180002B39 (137 bytes) name=sub_180002AB0
180002AB0: mov     [rsp+arg_0], rbx
180002AB5: push    rdi
180002AB6: sub     rsp, 20h
180002ABA: mov     rax, 7FFFFFFFFFFFFFFFh
180002AC4: mov     rbx, rdx
180002AC7: mov     rdi, rcx
180002ACA: cmp     rdx, rax
180002ACD: ja      short loc_180002B2D
180002ACF: cmp     rdx, 1000h
180002AD6: jb      short loc_180002B03
180002AD8: lea     rcx, [rdx+27h]; Size
180002ADC: cmp     rcx, rdx
180002ADF: jbe     short loc_180002B33
180002AE1: call    ??2@YAPEAX_K@Z; operator new(unsigned __int64)
180002AE6: mov     rcx, rax
180002AE9: test    rax, rax
180002AEC: jz      short loc_180002AFC
180002AEE: add     rax, 27h ; '''
180002AF2: and     rax, 0FFFFFFFFFFFFFFE0h
180002AF6: mov     [rax-8], rcx
180002AFA: jmp     short loc_180002B14
180002AFC: call    cs:_invalid_parameter_noinfo_noreturn
180002B02: int     3; Trap to Debugger
180002B03: test    rbx, rbx
180002B06: jz      short loc_180002B12
180002B08: mov     rcx, rbx; Size
180002B0B: call    ??2@YAPEAX_K@Z; operator new(unsigned __int64)
180002B10: jmp     short loc_180002B14
180002B12: xor     eax, eax
180002B14: mov     [rdi], rax
180002B17: mov     [rdi+8], rax
180002B1B: add     rax, rbx
180002B1E: mov     rbx, [rsp+28h+arg_0]
180002B23: mov     [rdi+10h], rax
180002B27: add     rsp, 20h
180002B2B: pop     rdi
180002B2C: retn
180002B2D: call    sub_180002B80
180002B32: db 0CCh
180002B33: call    ?cancel_current_task@Concurrency@@YAXXZ; Concurrency::cancel_current_task(void)
180002B38: db 0CCh

### FUNC 180002B40 - 180002B52 (18 bytes) name=sub_180002B40
180002B40: sub     rsp, 28h
180002B44: lea     rcx, aStringTooLong; "string too long"
180002B4B: call    cs:?_Xlength_error@std@@YAXPEBD@Z; std::_Xlength_error(char const *)
180002B51: db 0CCh

### FUNC 180002B60 - 180002B72 (18 bytes) name=sub_180002B60
180002B60: sub     rsp, 28h
180002B64: lea     rcx, aDequeTTooLong; "deque<T> too long"
180002B6B: call    cs:?_Xlength_error@std@@YAXPEBD@Z; std::_Xlength_error(char const *)
180002B71: db 0CCh

### FUNC 180002B80 - 180002B92 (18 bytes) name=sub_180002B80
180002B80: sub     rsp, 28h
180002B84: lea     rcx, aVectorTooLong; "vector too long"
180002B8B: call    cs:?_Xlength_error@std@@YAXPEBD@Z; std::_Xlength_error(char const *)
180002B91: db 0CCh

### FUNC 180002BA0 - 180002C92 (242 bytes) name=sub_180002BA0
180002BA0: mov     [rsp+arg_18], rsi
180002BA5: push    rdi
180002BA6: sub     rsp, 20h
180002BAA: mov     rax, 7FFFFFFFFFFFFFFFh
180002BB4: mov     rdi, rdx
180002BB7: mov     rsi, rcx
180002BBA: cmp     rdx, rax
180002BBD: ja      loc_180002C8C
180002BC3: mov     rcx, [rcx]
180002BC6: mov     rdx, [rsi+10h]
180002BCA: sub     rdx, rcx
180002BCD: mov     [rsp+28h+arg_10], rbx
180002BD2: mov     r8, rdx
180002BD5: shr     r8, 1
180002BD8: sub     rax, r8
180002BDB: cmp     rdx, rax
180002BDE: ja      short loc_180002BEE
180002BE0: lea     rax, [r8+rdx]
180002BE4: cmp     rax, rdi
180002BE7: cmovb   rax, rdi
180002BEB: mov     rdi, rax
180002BEE: xor     ebx, ebx
180002BF0: test    rcx, rcx
180002BF3: jz      short loc_180002C26
180002BF5: cmp     rdx, 1000h
180002BFC: jb      short loc_180002C16
180002BFE: mov     r8, [rcx-8]
180002C02: add     rdx, 27h ; '''
180002C06: sub     rcx, r8
180002C09: lea     rax, [rcx-8]
180002C0D: cmp     rax, 1Fh
180002C11: ja      short loc_180002C50
180002C13: mov     rcx, r8; Block
180002C16: call    j_j_free
180002C1B: mov     [rsi], rbx
180002C1E: mov     [rsi+8], rbx
180002C22: mov     [rsi+10h], rbx
180002C26: cmp     rdi, 1000h
180002C2D: jb      short loc_180002C57
180002C2F: lea     rcx, [rdi+27h]; Size
180002C33: cmp     rcx, rdi
180002C36: jbe     short loc_180002C86
180002C38: call    ??2@YAPEAX_K@Z; operator new(unsigned __int64)
180002C3D: test    rax, rax
180002C40: jz      short loc_180002C50
180002C42: lea     rbx, [rax+27h]
180002C46: and     rbx, 0FFFFFFFFFFFFFFE0h
180002C4A: mov     [rbx-8], rax
180002C4E: jmp     short loc_180002C67
180002C50: call    cs:_invalid_parameter_noinfo_noreturn
180002C56: int     3; Trap to Debugger
180002C57: test    rdi, rdi
180002C5A: jz      short loc_180002C67
180002C5C: mov     rcx, rdi; Size
180002C5F: call    ??2@YAPEAX_K@Z; operator new(unsigned __int64)
180002C64: mov     rbx, rax
180002C67: mov     [rsi], rbx
180002C6A: lea     rax, [rbx+rdi]
180002C6E: mov     [rsi+8], rbx
180002C72: mov     rbx, [rsp+28h+arg_10]
180002C77: mov     [rsi+10h], rax
180002C7B: mov     rsi, [rsp+28h+arg_18]
180002C80: add     rsp, 20h
180002C84: pop     rdi
180002C85: retn
180002C86: call    ?cancel_current_task@Concurrency@@YAXXZ; Concurrency::cancel_current_task(void)
180002C8B: align 4
180002C8C: call    sub_180002B80
180002C91: db 0CCh

### FUNC 180002CA0 - 180002D99 (249 bytes) name=sub_180002CA0
180002CA0: push    rbx
180002CA2: sub     rsp, 20h
180002CA6: mov     rdx, [rcx+58h]
180002CAA: mov     rbx, rcx
180002CAD: cmp     rdx, 10h
180002CB1: jb      short loc_180002CE4
180002CB3: mov     rcx, [rcx+40h]
180002CB7: inc     rdx
180002CBA: cmp     rdx, 1000h
180002CC1: jb      short loc_180002CDF
180002CC3: mov     r8, [rcx-8]
180002CC7: add     rdx, 27h ; '''
180002CCB: sub     rcx, r8
180002CCE: lea     rax, [rcx-8]
180002CD2: cmp     rax, 1Fh
180002CD6: ja      loc_180002D92
180002CDC: mov     rcx, r8; Block
180002CDF: call    j_j_free
180002CE4: mov     qword ptr [rbx+50h], 0
180002CEC: mov     qword ptr [rbx+58h], 0Fh
180002CF4: mov     byte ptr [rbx+40h], 0
180002CF8: mov     rdx, [rbx+38h]
180002CFC: cmp     rdx, 10h
180002D00: jb      short loc_180002D2F
180002D02: mov     rcx, [rbx+20h]
180002D06: inc     rdx
180002D09: cmp     rdx, 1000h
180002D10: jb      short loc_180002D2A
180002D12: mov     r8, [rcx-8]
180002D16: add     rdx, 27h ; '''
180002D1A: sub     rcx, r8
180002D1D: lea     rax, [rcx-8]
180002D21: cmp     rax, 1Fh
180002D25: ja      short loc_180002D92
180002D27: mov     rcx, r8; Block
180002D2A: call    j_j_free
180002D2F: mov     qword ptr [rbx+30h], 0
180002D37: mov     qword ptr [rbx+38h], 0Fh
180002D3F: mov     byte ptr [rbx+20h], 0
180002D43: mov     rdx, [rbx+18h]
180002D47: cmp     rdx, 10h
180002D4B: jb      short loc_180002D79
180002D4D: mov     rcx, [rbx]
180002D50: inc     rdx
180002D53: cmp     rdx, 1000h
180002D5A: jb      short loc_180002D74
180002D5C: mov     r8, [rcx-8]
180002D60: add     rdx, 27h ; '''
180002D64: sub     rcx, r8
180002D67: lea     rax, [rcx-8]
180002D6B: cmp     rax, 1Fh
180002D6F: ja      short loc_180002D92
180002D71: mov     rcx, r8; Block
180002D74: call    j_j_free
180002D79: mov     qword ptr [rbx+10h], 0
180002D81: mov     qword ptr [rbx+18h], 0Fh
180002D89: mov     byte ptr [rbx], 0
180002D8C: add     rsp, 20h
180002D90: pop     rbx
180002D91: retn
180002D92: call    cs:_invalid_parameter_noinfo_noreturn
180002D98: db 0CCh

### FUNC 180002DA0 - 180002E52 (178 bytes) name=sub_180002DA0
180002DA0: mov     [rsp+arg_10], rbx
180002DA5: push    rdi
180002DA6: sub     rsp, 20h
180002DAA: mov     rbx, [rcx]
180002DAD: mov     rdi, rcx
180002DB0: test    rbx, rbx
180002DB3: jz      loc_180002E40
180002DB9: mov     [rsp+28h+arg_8], rsi
180002DBE: mov     rsi, [rcx+8]
180002DC2: cmp     rbx, rsi
180002DC5: jz      short loc_180002DDB
180002DC7: mov     rcx, rbx
180002DCA: call    sub_180002CA0
180002DCF: add     rbx, 60h ; '`'
180002DD3: cmp     rbx, rsi
180002DD6: jnz     short loc_180002DC7
180002DD8: mov     rbx, [rdi]
180002DDB: mov     rcx, [rdi+10h]
180002DDF: mov     rax, 2AAAAAAAAAAAAAABh
180002DE9: mov     rsi, [rsp+28h+arg_8]
180002DEE: sub     rcx, rbx
180002DF1: imul    rcx
180002DF4: sar     rdx, 4
180002DF8: mov     rax, rdx
180002DFB: shr     rax, 3Fh
180002DFF: add     rdx, rax
180002E02: lea     rdx, [rdx+rdx*2]
180002E06: shl     rdx, 5
180002E0A: cmp     rdx, 1000h
180002E11: jb      short loc_180002E2B
180002E13: mov     rax, [rbx-8]
180002E17: add     rdx, 27h ; '''
180002E1B: sub     rbx, rax
180002E1E: add     rbx, 0FFFFFFFFFFFFFFF8h
180002E22: cmp     rbx, 1Fh
180002E26: ja      short loc_180002E4B
180002E28: mov     rbx, rax
180002E2B: mov     rcx, rbx; Block
180002E2E: call    j_j_free
180002E33: xor     eax, eax
180002E35: mov     [rdi], rax
180002E38: mov     [rdi+8], rax
180002E3C: mov     [rdi+10h], rax
180002E40: mov     rbx, [rsp+28h+arg_10]
180002E45: add     rsp, 20h
180002E49: pop     rdi
180002E4A: retn
180002E4B: call    cs:_invalid_parameter_noinfo_noreturn
180002E51: db 0CCh

### FUNC 180002E60 - 180002F2B (203 bytes) name=sub_180002E60
180002E60: push    rbx
180002E62: push    rbp
180002E63: push    rdi
180002E64: sub     rsp, 20h
180002E68: xor     eax, eax
180002E6A: mov     rdi, rdx
180002E6D: mov     [rcx+10h], rax
180002E71: mov     rbx, rcx
180002E74: mov     [rcx+18h], rax
180002E78: cmp     qword ptr [rdx+18h], 10h
180002E7D: mov     rbp, [rdx+10h]
180002E81: jb      short loc_180002E86
180002E83: mov     rdi, [rdx]
180002E86: mov     [rsp+38h+arg_10], rsi
180002E8B: cmp     rbp, 10h
180002E8F: jnb     short loc_180002E9E
180002E91: movups  xmm0, xmmword ptr [rdi]
180002E94: mov     esi, 0Fh
180002E99: movups  xmmword ptr [rcx], xmm0
180002E9C: jmp     short loc_180002F0D
180002E9E: mov     rcx, 7FFFFFFFFFFFFFFFh
180002EA8: mov     rsi, rbp
180002EAB: or      rsi, 0Fh
180002EAF: cmp     rsi, rcx
180002EB2: cmova   rsi, rcx
180002EB6: lea     rcx, [rsi+1]; Size
180002EBA: cmp     rcx, 1000h
180002EC1: jb      short loc_180002EF1
180002EC3: lea     rax, [rcx+27h]
180002EC7: cmp     rax, rcx
180002ECA: jbe     short loc_180002F25
180002ECC: mov     rcx, rax; Size
180002ECF: call    ??2@YAPEAX_K@Z; operator new(unsigned __int64)
180002ED4: mov     rcx, rax
180002ED7: test    rax, rax
180002EDA: jz      short loc_180002EEA
180002EDC: add     rax, 27h ; '''
180002EE0: and     rax, 0FFFFFFFFFFFFFFE0h
180002EE4: mov     [rax-8], rcx
180002EE8: jmp     short loc_180002EFB
180002EEA: call    cs:_invalid_parameter_noinfo_noreturn
180002EF0: int     3; Trap to Debugger
180002EF1: test    rcx, rcx
180002EF4: jz      short loc_180002EFB
180002EF6: call    ??2@YAPEAX_K@Z; operator new(unsigned __int64)
180002EFB: lea     r8, [rbp+1]; Size
180002EFF: mov     [rbx], rax
180002F02: mov     rdx, rdi; Src
180002F05: mov     rcx, rax; void *
180002F08: call    memcpy
180002F0D: mov     [rbx+10h], rbp
180002F11: mov     rax, rbx
180002F14: mov     [rbx+18h], rsi
180002F18: mov     rsi, [rsp+38h+arg_10]
180002F1D: add     rsp, 20h
180002F21: pop     rdi
180002F22: pop     rbp
180002F23: pop     rbx
180002F24: retn
180002F25: call    ?cancel_current_task@Concurrency@@YAXXZ; Concurrency::cancel_current_task(void)
180002F2A: db 0CCh

### FUNC 180002F30 - 180002F61 (49 bytes) name=sub_180002F30
180002F30: cmp     rdx, r8
180002F33: jz      short locret_180002F60
180002F35: mov     [rsp+arg_0], rbx
180002F3A: push    rdi
180002F3B: sub     rsp, 20h
180002F3F: mov     rdi, r8
180002F42: mov     rbx, rdx
180002F45: mov     rcx, rbx
180002F48: call    sub_180002CA0
180002F4D: add     rbx, 60h ; '`'
180002F51: cmp     rbx, rdi
180002F54: jnz     short loc_180002F45
180002F56: mov     rbx, [rsp+28h+arg_0]
180002F5B: add     rsp, 20h
180002F5F: pop     rdi
180002F60: retn

### FUNC 180002F70 - 180002FB3 (67 bytes) name=sub_180002F70
180002F70: sub     rsp, 28h
180002F74: mov     rax, rdx
180002F77: lea     rdx, [r8+r8*2]
180002F7B: shl     rdx, 5
180002F7F: cmp     rdx, 1000h
180002F86: jb      short loc_180002FA0
180002F88: mov     rcx, [rax-8]
180002F8C: add     rdx, 27h ; '''
180002F90: sub     rax, rcx
180002F93: add     rax, 0FFFFFFFFFFFFFFF8h
180002F97: cmp     rax, 1Fh
180002F9B: ja      short loc_180002FAC
180002F9D: mov     rax, rcx
180002FA0: mov     rcx, rax; Block
180002FA3: add     rsp, 28h
180002FA7: jmp     j_j_free
180002FAC: call    cs:_invalid_parameter_noinfo_noreturn
180002FB2: db 0CCh

### FUNC 180002FC0 - 180002FC8 (8 bytes) name=sub_180002FC0
180002FC0: lea     rax, unk_180015FE0
180002FC7: retn

### FUNC 180002FD0 - 1800037B4 (2020 bytes) name=sub_180002FD0
180002FD0: mov     [rsp-8+arg_8], rbx
180002FD5: mov     [rsp-8+arg_10], rsi
180002FDA: mov     [rsp-8+arg_18], rdi
180002FDF: push    rbp
180002FE0: push    r12
180002FE2: push    r13
180002FE4: push    r14
180002FE6: push    r15
180002FE8: lea     rbp, [rsp-6A0h]
180002FF0: sub     rsp, 7A0h
180002FF7: mov     rax, cs:__security_cookie
180002FFE: xor     rax, rsp
180003001: mov     [rbp+6C0h+var_30], rax
180003008: mov     rsi, rcx
18000300B: mov     [rbp+6C0h+var_738], rcx
18000300F: xor     r13d, r13d
180003012: mov     [rsp+7C0h+var_780], r13d
180003017: xorps   xmm0, xmm0
18000301A: movups  xmmword ptr [rcx], xmm0
18000301D: mov     [rcx], r13
180003020: mov     [rcx+8], r13
180003024: mov     [rcx+10h], r13
180003028: mov     r12d, 1
18000302E: mov     [rsp+7C0h+var_780], r12d
180003033: lea     r9d, [r13+2]; Flags
180003037: xor     r8d, r8d; hwndParent
18000303A: xor     edx, edx; Enumerator
18000303C: lea     rcx, ClassGuid; ClassGuid
180003043: call    cs:SetupDiGetClassDevsW
180003049: mov     r14, rax
18000304C: mov     r15d, r13d
18000304F: mov     [rbp+6C0h+DeviceInfoData.cbSize], 20h ; ' '
180003056: xor     edx, edx; MemberIndex
180003058: mov     rcx, rax; DeviceInfoSet
18000305B: lea     r8, [rbp+6C0h+DeviceInfoData]; DeviceInfoData
18000305F: call    cs:SetupDiEnumDeviceInfo
180003065: mov     rcx, r14; DeviceInfoSet
180003068: test    eax, eax
18000306A: jz      loc_180003775
180003070: inc     r15d
180003073: mov     [rsp+7C0h+samDesired], 20019h; samDesired
18000307B: mov     [rsp+7C0h+KeyType], 1; KeyType
180003083: xor     r9d, r9d; HwProfile
180003086: lea     r8d, [r9+1]; Scope
18000308A: lea     rdx, [rbp+6C0h+DeviceInfoData]; DeviceInfoData
18000308E: call    cs:SetupDiOpenDevRegKey
180003094: mov     rdi, rax
180003097: mov     [rbp+6C0h+cbData], 100h
18000309E: lea     rax, [rbp+6C0h+cbData]
1800030A2: mov     qword ptr [rsp+7C0h+samDesired], rax; lpcbData
1800030A7: lea     rax, [rbp+6C0h+Data]
1800030AE: mov     qword ptr [rsp+7C0h+KeyType], rax; lpData
1800030B3: xor     r9d, r9d; lpType
1800030B6: xor     r8d, r8d; lpReserved
1800030B9: lea     rdx, ValueName; "PortName"
1800030C0: mov     rcx, rdi; hKey
1800030C3: call    cs:RegQueryValueExW
1800030C9: mov     ebx, eax
1800030CB: mov     rcx, rdi; hKey
1800030CE: call    cs:RegCloseKey
1800030D4: test    ebx, ebx
1800030D6: jnz     loc_180003740
1800030DC: mov     eax, [rbp+6C0h+cbData]
1800030DF: dec     eax
1800030E1: cmp     eax, 0FFh
1800030E6: ja      short loc_180003102
1800030E8: add     rax, rax
1800030EB: cmp     rax, 200h
1800030F1: jnb     loc_1800037AE
1800030F7: mov     word ptr [rbp+rax+6C0h+Data], r13w
180003100: jmp     short loc_18000310A
180003102: mov     word ptr [rbp+6C0h+Data], r13w
18000310A: lea     rdx, SubStr; "LPT"
180003111: lea     rcx, [rbp+6C0h+Data]; Str
180003118: call    cs:wcsstr
18000311E: test    rax, rax
180003121: jnz     loc_180003740
180003127: mov     [rbp+6C0h+var_724], r13d
18000312B: lea     rax, [rbp+6C0h+var_724]
18000312F: mov     [rsp+7C0h+RequiredSize], rax; RequiredSize
180003134: mov     [rsp+7C0h+samDesired], 100h; PropertyBufferSize
18000313C: lea     rax, [rbp+6C0h+PropertyBuffer]
180003143: mov     qword ptr [rsp+7C0h+KeyType], rax; PropertyBuffer
180003148: xor     r9d, r9d; PropertyRegDataType
18000314B: lea     r8d, [r9+0Ch]; Property
18000314F: lea     rdx, [rbp+6C0h+DeviceInfoData]; DeviceInfoData
180003153: mov     rcx, r14; DeviceInfoSet
180003156: call    cs:SetupDiGetDeviceRegistryPropertyW
18000315C: cmp     eax, 1
18000315F: jnz     short loc_180003186
180003161: mov     eax, [rbp+6C0h+var_724]
180003164: test    eax, eax
180003166: jz      short loc_180003186
180003168: lea     ecx, [rax-1]
18000316B: add     rcx, rcx
18000316E: cmp     rcx, 200h
180003175: jnb     loc_1800037AE
18000317B: mov     word ptr [rbp+rcx+6C0h+PropertyBuffer], r13w
180003184: jmp     short loc_18000318E
180003186: mov     word ptr [rbp+6C0h+PropertyBuffer], r13w
18000318E: mov     [rbp+6C0h+var_720], r13d
180003192: lea     rax, [rbp+6C0h+var_720]
180003196: mov     [rsp+7C0h+RequiredSize], rax; RequiredSize
18000319B: mov     [rsp+7C0h+samDesired], 100h; PropertyBufferSize
1800031A3: lea     rax, [rbp+6C0h+Src]
1800031AA: mov     qword ptr [rsp+7C0h+KeyType], rax; PropertyBuffer
1800031AF: xor     r9d, r9d; PropertyRegDataType
1800031B2: lea     r8d, [r9+1]; Property
1800031B6: lea     rdx, [rbp+6C0h+DeviceInfoData]; DeviceInfoData
1800031BA: mov     rcx, r14; DeviceInfoSet
1800031BD: call    cs:SetupDiGetDeviceRegistryPropertyW
1800031C3: cmp     eax, 1
1800031C6: jnz     short loc_1800031ED
1800031C8: mov     eax, [rbp+6C0h+var_720]
1800031CB: test    eax, eax
1800031CD: jz      short loc_1800031ED
1800031CF: lea     ecx, [rax-1]
1800031D2: add     rcx, rcx
1800031D5: cmp     rcx, 200h
1800031DC: jnb     loc_1800037AE
1800031E2: mov     word ptr [rbp+rcx+6C0h+Src], r13w
1800031EB: jmp     short loc_1800031F5
1800031ED: mov     word ptr [rbp+6C0h+Src], r13w
1800031F5: mov     qword ptr [rsp+7C0h+cchWideChar], r13
1800031FA: mov     [rsp+7C0h+var_760], 7
180003203: mov     word ptr [rsp+7C0h+lpWideCharStr], r13w
180003209: lea     rax, [rbp+6C0h+Data]
180003210: mov     r8, 0FFFFFFFFFFFFFFFFh
180003217: nop     word ptr [rax+rax+00000000h]
180003220: inc     r8
180003223: cmp     word ptr [rax+r8*2], 0
180003229: jnz     short loc_180003220
18000322B: lea     rdx, [rbp+6C0h+Data]; Src
180003232: lea     rcx, [rsp+7C0h+lpWideCharStr]; void *
180003237: call    sub_180003830
18000323C: nop
18000323D: lea     r8, [rsp+7C0h+lpWideCharStr]
180003242: cmp     [rsp+7C0h+var_760], 8
180003248: cmovnb  r8, [rsp+7C0h+lpWideCharStr]; lpWideCharStr
18000324E: mov     [rsp+7C0h+lpUsedDefaultChar], r13; lpUsedDefaultChar
180003253: mov     [rsp+7C0h+RequiredSize], r13; lpDefaultChar
180003258: mov     [rsp+7C0h+samDesired], r13d; cbMultiByte
18000325D: mov     qword ptr [rsp+7C0h+KeyType], r13; lpMultiByteStr
180003262: mov     r9d, [rsp+7C0h+cchWideChar]; cchWideChar
180003267: xor     edx, edx; dwFlags
180003269: mov     ecx, 0FDE9h; CodePage
18000326E: call    cs:WideCharToMultiByte
180003274: movsxd  rbx, eax
180003277: mov     [rbp+6C0h+Size], r13
18000327B: mov     [rbp+6C0h+var_6C0], 0Fh
180003283: mov     byte ptr [rbp+6C0h+lpMultiByteStr], 0
180003287: mov     rdx, rbx; Size
18000328A: lea     rcx, [rbp+6C0h+lpMultiByteStr]; void *
18000328E: call    sub_1800039A0
180003293: or      r12d, 2
180003297: mov     [rsp+7C0h+var_780], r12d
18000329C: lea     rax, [rbp+6C0h+lpMultiByteStr]
1800032A0: cmp     [rbp+6C0h+var_6C0], 10h
1800032A5: cmovnb  rax, [rbp+6C0h+lpMultiByteStr]
1800032AA: lea     r8, [rsp+7C0h+lpWideCharStr]
1800032AF: cmp     [rsp+7C0h+var_760], 8
1800032B5: cmovnb  r8, [rsp+7C0h+lpWideCharStr]; lpWideCharStr
1800032BB: mov     [rsp+7C0h+lpUsedDefaultChar], r13; lpUsedDefaultChar
1800032C0: mov     [rsp+7C0h+RequiredSize], r13; lpDefaultChar
1800032C5: mov     [rsp+7C0h+samDesired], ebx; cbMultiByte
1800032C9: mov     qword ptr [rsp+7C0h+KeyType], rax; lpMultiByteStr
1800032CE: mov     r9d, [rsp+7C0h+cchWideChar]; cchWideChar
1800032D3: xor     edx, edx; dwFlags
1800032D5: mov     ecx, 0FDE9h; CodePage
1800032DA: call    cs:WideCharToMultiByte
1800032E0: nop
1800032E1: mov     rdx, [rsp+7C0h+var_760]
1800032E6: cmp     rdx, 8
1800032EA: jb      short loc_180003323
1800032EC: lea     rdx, ds:2[rdx*2]
1800032F4: mov     rcx, [rsp+7C0h+lpWideCharStr]
1800032F9: mov     rax, rcx
1800032FC: cmp     rdx, 1000h
180003303: jb      short loc_18000331E
180003305: add     rdx, 27h ; '''
180003309: mov     rcx, [rcx-8]; Block
18000330D: sub     rax, rcx
180003310: add     rax, 0FFFFFFFFFFFFFFF8h
180003314: cmp     rax, 1Fh
180003318: ja      loc_18000374B
18000331E: call    j_j_free
180003323: mov     qword ptr [rsp+7C0h+cchWideChar], r13
180003328: mov     [rsp+7C0h+var_760], 7
180003331: mov     word ptr [rsp+7C0h+lpWideCharStr], r13w
180003337: mov     qword ptr [rsp+7C0h+var_748], r13
18000333C: mov     [rbp+6C0h+var_740], 7
180003344: mov     word ptr [rsp+7C0h+var_758], r13w
18000334A: lea     rax, [rbp+6C0h+PropertyBuffer]
180003351: mov     r8, 0FFFFFFFFFFFFFFFFh
180003358: nop     dword ptr [rax+rax+00000000h]
180003360: inc     r8
180003363: cmp     word ptr [rax+r8*2], 0
180003369: jnz     short loc_180003360
18000336B: lea     rdx, [rbp+6C0h+PropertyBuffer]; Src
180003372: lea     rcx, [rsp+7C0h+var_758]; void *
180003377: call    sub_180003830
18000337C: nop
18000337D: lea     r8, [rsp+7C0h+var_758]
180003382: cmp     [rbp+6C0h+var_740], 8
180003387: cmovnb  r8, [rsp+7C0h+var_758]; lpWideCharStr
18000338D: mov     [rsp+7C0h+lpUsedDefaultChar], r13; lpUsedDefaultChar
180003392: mov     [rsp+7C0h+RequiredSize], r13; lpDefaultChar
180003397: mov     [rsp+7C0h+samDesired], r13d; cbMultiByte
18000339C: mov     qword ptr [rsp+7C0h+KeyType], r13; lpMultiByteStr
1800033A1: mov     r9d, [rsp+7C0h+var_748]; cchWideChar
1800033A6: xor     edx, edx; dwFlags
1800033A8: mov     ecx, 0FDE9h; CodePage
1800033AD: call    cs:WideCharToMultiByte
1800033B3: movsxd  rbx, eax
1800033B6: mov     [rbp+6C0h+var_6E8], r13
1800033BA: mov     [rbp+6C0h+var_6E0], 0Fh
1800033C2: mov     byte ptr [rbp+6C0h+var_6F8], 0
1800033C6: mov     rdx, rbx; Size
1800033C9: lea     rcx, [rbp+6C0h+var_6F8]; void *
1800033CD: call    sub_1800039A0
1800033D2: or      r12d, 4
1800033D6: mov     [rsp+7C0h+var_780], r12d
1800033DB: lea     rax, [rbp+6C0h+var_6F8]
1800033DF: cmp     [rbp+6C0h+var_6E0], 10h
1800033E4: cmovnb  rax, [rbp+6C0h+var_6F8]
1800033E9: lea     r8, [rsp+7C0h+var_758]
1800033EE: cmp     [rbp+6C0h+var_740], 8
1800033F3: cmovnb  r8, [rsp+7C0h+var_758]; lpWideCharStr
1800033F9: mov     [rsp+7C0h+lpUsedDefaultChar], r13; lpUsedDefaultChar
1800033FE: mov     [rsp+7C0h+RequiredSize], r13; lpDefaultChar
180003403: mov     [rsp+7C0h+samDesired], ebx; cbMultiByte
180003407: mov     qword ptr [rsp+7C0h+KeyType], rax; lpMultiByteStr
18000340C: mov     r9d, [rsp+7C0h+var_748]; cchWideChar
180003411: xor     edx, edx; dwFlags
180003413: mov     ecx, 0FDE9h; CodePage
180003418: call    cs:WideCharToMultiByte
18000341E: nop
18000341F: mov     rdx, [rbp+6C0h+var_740]
180003423: cmp     rdx, 8
180003427: jb      short loc_180003460
180003429: lea     rdx, ds:2[rdx*2]
180003431: mov     rcx, [rsp+7C0h+var_758]
180003436: mov     rax, rcx
180003439: cmp     rdx, 1000h
180003440: jb      short loc_18000345B
180003442: add     rdx, 27h ; '''
180003446: mov     rcx, [rcx-8]; Block
18000344A: sub     rax, rcx
18000344D: add     rax, 0FFFFFFFFFFFFFFF8h
180003451: cmp     rax, 1Fh
180003455: ja      loc_180003752
18000345B: call    j_j_free
180003460: mov     qword ptr [rsp+7C0h+var_748], r13
180003465: mov     [rbp+6C0h+var_740], 7
18000346D: mov     word ptr [rsp+7C0h+var_758], r13w
180003473: mov     qword ptr [rsp+7C0h+cchWideChar], r13
180003478: mov     [rsp+7C0h+var_760], 7
180003481: mov     word ptr [rsp+7C0h+lpWideCharStr], r13w
180003487: lea     rax, [rbp+6C0h+Src]
18000348E: mov     r8, 0FFFFFFFFFFFFFFFFh
180003495: inc     r8
180003498: cmp     word ptr [rax+r8*2], 0
18000349E: jnz     short loc_180003495
1800034A0: lea     rdx, [rbp+6C0h+Src]; Src
1800034A7: lea     rcx, [rsp+7C0h+lpWideCharStr]; void *
1800034AC: call    sub_180003830
1800034B1: nop
1800034B2: lea     r8, [rsp+7C0h+lpWideCharStr]
1800034B7: cmp     [rsp+7C0h+var_760], 8
1800034BD: cmovnb  r8, [rsp+7C0h+lpWideCharStr]; lpWideCharStr
1800034C3: mov     [rsp+7C0h+lpUsedDefaultChar], r13; lpUsedDefaultChar
1800034C8: mov     [rsp+7C0h+RequiredSize], r13; lpDefaultChar
1800034CD: mov     [rsp+7C0h+samDesired], r13d; cbMultiByte
1800034D2: mov     qword ptr [rsp+7C0h+KeyType], r13; lpMultiByteStr
1800034D7: mov     r9d, [rsp+7C0h+cchWideChar]; cchWideChar
1800034DC: xor     edx, edx; dwFlags
1800034DE: mov     ecx, 0FDE9h; CodePage
1800034E3: call    cs:WideCharToMultiByte
1800034E9: movsxd  rbx, eax
1800034EC: mov     [rbp+6C0h+var_708], r13
1800034F0: mov     [rbp+6C0h+var_700], 0Fh
1800034F8: mov     byte ptr [rbp+6C0h+var_718], 0
1800034FC: mov     rdx, rbx; Size
1800034FF: lea     rcx, [rbp+6C0h+var_718]; void *
180003503: call    sub_1800039A0
180003508: or      r12d, 8
18000350C: mov     [rsp+7C0h+var_780], r12d
180003511: lea     rax, [rbp+6C0h+var_718]
180003515: cmp     [rbp+6C0h+var_700], 10h
18000351A: cmovnb  rax, [rbp+6C0h+var_718]
18000351F: lea     r8, [rsp+7C0h+lpWideCharStr]
180003524: cmp     [rsp+7C0h+var_760], 8
18000352A: cmovnb  r8, [rsp+7C0h+lpWideCharStr]; lpWideCharStr
180003530: mov     [rsp+7C0h+lpUsedDefaultChar], r13; lpUsedDefaultChar
180003535: mov     [rsp+7C0h+RequiredSize], r13; lpDefaultChar
18000353A: mov     [rsp+7C0h+samDesired], ebx; cbMultiByte
18000353E: mov     qword ptr [rsp+7C0h+KeyType], rax; lpMultiByteStr
180003543: mov     r9d, [rsp+7C0h+cchWideChar]; cchWideChar
180003548: xor     edx, edx; dwFlags
18000354A: mov     ecx, 0FDE9h; CodePage
18000354F: call    cs:WideCharToMultiByte
180003555: nop
180003556: mov     rdx, [rsp+7C0h+var_760]
18000355B: cmp     rdx, 8
18000355F: jb      short loc_180003598
180003561: lea     rdx, ds:2[rdx*2]
180003569: mov     rcx, [rsp+7C0h+lpWideCharStr]
18000356E: mov     rax, rcx
180003571: cmp     rdx, 1000h
180003578: jb      short loc_180003593
18000357A: add     rdx, 27h ; '''
18000357E: mov     rcx, [rcx-8]; Block
180003582: sub     rax, rcx
180003585: add     rax, 0FFFFFFFFFFFFFFF8h
180003589: cmp     rax, 1Fh
18000358D: ja      loc_180003759
180003593: call    j_j_free
180003598: mov     [rbp+6C0h+var_680], r13
18000359C: mov     [rbp+6C0h+var_678], 0Fh
1800035A4: mov     [rbp+6C0h+var_690], 0
1800035A8: mov     [rbp+6C0h+var_660], r13
1800035AC: mov     [rbp+6C0h+var_658], 0Fh
1800035B4: mov     [rbp+6C0h+var_670], 0
1800035B8: mov     [rbp+6C0h+var_640], r13
1800035BF: mov     [rbp+6C0h+var_638], 0Fh
1800035CA: mov     [rbp+6C0h+var_650], 0
1800035CE: lea     rdx, [rbp+6C0h+lpMultiByteStr]
1800035D2: cmp     [rbp+6C0h+var_6C0], 10h
1800035D7: cmovnb  rdx, [rbp+6C0h+lpMultiByteStr]; Src
1800035DC: mov     r8, [rbp+6C0h+Size]; Size
1800035E0: lea     rcx, [rbp+6C0h+var_690]; void *
1800035E4: call    sub_180002610
1800035E9: lea     rdx, [rbp+6C0h+var_6F8]
1800035ED: cmp     [rbp+6C0h+var_6E0], 10h
1800035F2: cmovnb  rdx, [rbp+6C0h+var_6F8]; Src
1800035F7: mov     r8, [rbp+6C0h+var_6E8]; Size
1800035FB: lea     rcx, [rbp+6C0h+var_670]; void *
1800035FF: call    sub_180002610
180003604: lea     rdx, [rbp+6C0h+var_718]
180003608: cmp     [rbp+6C0h+var_700], 10h
18000360D: cmovnb  rdx, [rbp+6C0h+var_718]; Src
180003612: mov     r8, [rbp+6C0h+var_708]; Size
180003616: lea     rcx, [rbp+6C0h+var_650]; void *
18000361A: call    sub_180002610
18000361F: mov     rbx, [rsi+8]
180003623: cmp     rbx, [rsi+10h]
180003627: jz      short loc_18000365D
180003629: mov     [rbp+6C0h+var_730], rbx
18000362D: lea     rdx, [rbp+6C0h+var_690]
180003631: mov     rcx, rbx
180003634: call    sub_180002E60
180003639: nop
18000363A: lea     rcx, [rbx+20h]
18000363E: lea     rdx, [rbp+6C0h+var_670]
180003642: call    sub_180002E60
180003647: nop
180003648: lea     rcx, [rbx+40h]
18000364C: lea     rdx, [rbp+6C0h+var_650]
180003650: call    sub_180002E60
180003655: nop
180003656: add     qword ptr [rsi+8], 60h ; '`'
18000365B: jmp     short loc_18000366D
18000365D: lea     r8, [rbp+6C0h+var_690]
180003661: mov     rdx, rbx
180003664: mov     rcx, rsi
180003667: call    sub_180003B00
18000366C: nop
18000366D: lea     rcx, [rbp+6C0h+var_690]
180003671: call    sub_180002CA0
180003676: nop
180003677: mov     rdx, [rbp+6C0h+var_700]
18000367B: cmp     rdx, 10h
18000367F: jb      short loc_1800036B2
180003681: inc     rdx
180003684: mov     rcx, [rbp+6C0h+var_718]
180003688: mov     rax, rcx
18000368B: cmp     rdx, 1000h
180003692: jb      short loc_1800036AD
180003694: add     rdx, 27h ; '''
180003698: mov     rcx, [rcx-8]; Block
18000369C: sub     rax, rcx
18000369F: add     rax, 0FFFFFFFFFFFFFFF8h
1800036A3: cmp     rax, 1Fh
1800036A7: ja      loc_180003760
1800036AD: call    j_j_free
1800036B2: mov     [rbp+6C0h+var_708], r13
1800036B6: mov     [rbp+6C0h+var_700], 0Fh
1800036BE: mov     byte ptr [rbp+6C0h+var_718], 0
1800036C2: mov     rdx, [rbp+6C0h+var_6E0]
1800036C6: cmp     rdx, 10h
1800036CA: jb      short loc_1800036F9
1800036CC: inc     rdx
1800036CF: mov     rcx, [rbp+6C0h+var_6F8]
1800036D3: mov     rax, rcx
1800036D6: cmp     rdx, 1000h
1800036DD: jb      short loc_1800036F4
1800036DF: add     rdx, 27h ; '''
1800036E3: mov     rcx, [rcx-8]; Block
1800036E7: sub     rax, rcx
1800036EA: add     rax, 0FFFFFFFFFFFFFFF8h
1800036EE: cmp     rax, 1Fh
1800036F2: ja      short loc_180003767
1800036F4: call    j_j_free
1800036F9: mov     [rbp+6C0h+var_6E8], r13
1800036FD: mov     [rbp+6C0h+var_6E0], 0Fh
180003705: mov     byte ptr [rbp+6C0h+var_6F8], 0
180003709: mov     rdx, [rbp+6C0h+var_6C0]
18000370D: cmp     rdx, 10h
180003711: jb      short loc_180003740
180003713: inc     rdx
180003716: mov     rcx, [rbp+6C0h+lpMultiByteStr]
18000371A: mov     rax, rcx
18000371D: cmp     rdx, 1000h
180003724: jb      short loc_18000373B
180003726: add     rdx, 27h ; '''
18000372A: mov     rcx, [rcx-8]; Block
18000372E: sub     rax, rcx
180003731: add     rax, 0FFFFFFFFFFFFFFF8h
180003735: cmp     rax, 1Fh
180003739: ja      short loc_18000376E
18000373B: call    j_j_free
180003740: mov     edx, r15d
180003743: mov     rcx, r14
180003746: jmp     loc_18000305B
18000374B: call    cs:_invalid_parameter_noinfo_noreturn
180003751: nop
180003752: call    cs:_invalid_parameter_noinfo_noreturn
180003758: nop
180003759: call    cs:_invalid_parameter_noinfo_noreturn
18000375F: nop
180003760: call    cs:_invalid_parameter_noinfo_noreturn
180003766: nop
180003767: call    cs:_invalid_parameter_noinfo_noreturn
18000376D: nop
18000376E: call    cs:_invalid_parameter_noinfo_noreturn
180003774: int     3; Trap to Debugger
180003775: call    cs:SetupDiDestroyDeviceInfoList
18000377B: mov     rax, rsi
18000377E: mov     rcx, [rbp+6C0h+var_30]
180003785: xor     rcx, rsp; StackCookie
180003788: call    __security_check_cookie
18000378D: lea     r11, [rsp+7C0h+var_20]
180003795: mov     rbx, [r11+38h]
180003799: mov     rsi, [r11+40h]
18000379D: mov     rdi, [r11+48h]
1800037A1: mov     rsp, r11
1800037A4: pop     r15
1800037A6: pop     r14
1800037A8: pop     r13
1800037AA: pop     r12
1800037AC: pop     rbp
1800037AD: retn
1800037AE: call    __report_rangecheckfailure
1800037B3: db 0CCh

### FUNC 1800037C0 - 180003822 (98 bytes) name=unknown_libname_18
1800037C0: push    rbx
1800037C2: sub     rsp, 20h
1800037C6: mov     rdx, [rcx+18h]
1800037CA: mov     rbx, rcx
1800037CD: cmp     rdx, 8
1800037D1: jb      short loc_180003804
1800037D3: mov     rcx, [rcx]
1800037D6: lea     rdx, ds:2[rdx*2]
1800037DE: cmp     rdx, 1000h
1800037E5: jb      short loc_1800037FF
1800037E7: mov     r8, [rcx-8]
1800037EB: add     rdx, 27h ; '''
1800037EF: sub     rcx, r8
1800037F2: lea     rax, [rcx-8]
1800037F6: cmp     rax, 1Fh
1800037FA: ja      short loc_18000381B
1800037FC: mov     rcx, r8; Block
1800037FF: call    j_j_free
180003804: xor     eax, eax
180003806: mov     qword ptr [rbx+18h], 7
18000380E: mov     [rbx+10h], rax
180003812: mov     [rbx], ax
180003815: add     rsp, 20h
180003819: pop     rbx
18000381A: retn
18000381B: call    cs:_invalid_parameter_noinfo_noreturn
180003821: db 0CCh

### FUNC 180003830 - 180003999 (361 bytes) name=sub_180003830
180003830: push    rbx
180003832: push    rbp
180003833: push    rsi
180003834: push    rdi
180003835: push    r12
180003837: push    r14
180003839: push    r15
18000383B: sub     rsp, 20h
18000383F: mov     rbp, [rcx+18h]
180003843: mov     r14, r8
180003846: mov     r12, rdx
180003849: mov     rdi, rcx
18000384C: cmp     r8, rbp
18000384F: ja      short loc_18000388A
180003851: mov     rsi, rcx
180003854: cmp     rbp, 8
180003858: jb      short loc_18000385D
18000385A: mov     rsi, [rcx]
18000385D: lea     rbx, [r8+r8]
180003861: mov     [rcx+10h], r14
180003865: mov     r8, rbx; Size
180003868: mov     rcx, rsi; void *
18000386B: call    memmove
180003870: xor     r15d, r15d
180003873: mov     [rbx+rsi], r15w
180003878: mov     rax, rdi
18000387B: add     rsp, 20h
18000387F: pop     r15
180003881: pop     r14
180003883: pop     r12
180003885: pop     rdi
180003886: pop     rsi
180003887: pop     rbp
180003888: pop     rbx
180003889: retn
18000388A: mov     rbx, 7FFFFFFFFFFFFFFEh
180003894: cmp     r14, rbx
180003897: ja      loc_18000398D
18000389D: mov     rcx, r14
1800038A0: or      rcx, 7
1800038A4: cmp     rcx, rbx
1800038A7: ja      short loc_1800038C8
1800038A9: mov     rdx, rbp
1800038AC: mov     rax, rbx
1800038AF: shr     rdx, 1
1800038B2: sub     rax, rdx
1800038B5: cmp     rbp, rax
1800038B8: ja      short loc_1800038C8
1800038BA: lea     rax, [rdx+rbp]
1800038BE: mov     rbx, rcx
1800038C1: cmp     rcx, rax
1800038C4: cmovb   rbx, rax
1800038C8: lea     rcx, [rbx+1]
1800038CC: mov     rax, 7FFFFFFFFFFFFFFFh
1800038D6: cmp     rcx, rax
1800038D9: ja      loc_180003993
1800038DF: add     rcx, rcx; Size
1800038E2: xor     r15d, r15d
1800038E5: cmp     rcx, 1000h
1800038EC: jb      short loc_180003916
1800038EE: lea     rax, [rcx+27h]
1800038F2: cmp     rax, rcx
1800038F5: jbe     loc_180003993
1800038FB: mov     rcx, rax; Size
1800038FE: call    ??2@YAPEAX_K@Z; operator new(unsigned __int64)
180003903: test    rax, rax
180003906: jz      short loc_180003986
180003908: lea     rsi, [rax+27h]
18000390C: and     rsi, 0FFFFFFFFFFFFFFE0h
180003910: mov     [rsi-8], rax
180003914: jmp     short loc_180003928
180003916: test    rcx, rcx
180003919: jz      short loc_180003925
18000391B: call    ??2@YAPEAX_K@Z; operator new(unsigned __int64)
180003920: mov     rsi, rax
180003923: jmp     short loc_180003928
180003925: mov     rsi, r15
180003928: mov     [rdi+18h], rbx
18000392C: mov     rdx, r12; Src
18000392F: lea     rbx, [r14+r14]
180003933: mov     [rdi+10h], r14
180003937: mov     r8, rbx; Size
18000393A: mov     rcx, rsi; void *
18000393D: call    memcpy
180003942: mov     [rbx+rsi], r15w
180003947: cmp     rbp, 8
18000394B: jb      short loc_18000397E
18000394D: mov     rcx, [rdi]
180003950: lea     rdx, ds:2[rbp*2]
180003958: cmp     rdx, 1000h
18000395F: jb      short loc_180003979
180003961: mov     r8, [rcx-8]
180003965: add     rdx, 27h ; '''
180003969: sub     rcx, r8
18000396C: lea     rax, [rcx-8]
180003970: cmp     rax, 1Fh
180003974: ja      short loc_180003986
180003976: mov     rcx, r8; Block
180003979: call    j_j_free
18000397E: mov     [rdi], rsi
180003981: jmp     loc_180003878
180003986: call    cs:_invalid_parameter_noinfo_noreturn
18000398C: int     3; Trap to Debugger
18000398D: call    sub_180002B40
180003992: db 0CCh
180003993: call    ?cancel_current_task@Concurrency@@YAXXZ; Concurrency::cancel_current_task(void)
180003998: db 0CCh

### FUNC 1800039A0 - 180003B00 (352 bytes) name=sub_1800039A0
1800039A0: mov     [rsp+arg_18], rbx
1800039A5: push    rbp
1800039A6: push    rsi
1800039A7: push    rdi
1800039A8: sub     rsp, 20h
1800039AC: mov     rbp, [rcx+18h]
1800039B0: mov     rsi, rdx
1800039B3: mov     rbx, rcx
1800039B6: cmp     rdx, rbp
1800039B9: ja      short loc_1800039EC
1800039BB: mov     rdi, rcx
1800039BE: cmp     rbp, 10h
1800039C2: jb      short loc_1800039C7
1800039C4: mov     rdi, [rcx]
1800039C7: mov     [rcx+10h], rsi
1800039CB: mov     r8, rsi; Size
1800039CE: mov     rcx, rdi; void *
1800039D1: xor     edx, edx; Val
1800039D3: call    memset
1800039D8: mov     rax, rbx
1800039DB: mov     byte ptr [rsi+rdi], 0
1800039DF: mov     rbx, [rsp+38h+arg_18]
1800039E4: add     rsp, 20h
1800039E8: pop     rdi
1800039E9: pop     rsi
1800039EA: pop     rbp
1800039EB: retn
1800039EC: mov     rdi, 7FFFFFFFFFFFFFFFh
1800039F6: cmp     rsi, rdi
1800039F9: ja      loc_180003AFA
1800039FF: mov     rcx, rsi
180003A02: or      rcx, 0Fh
180003A06: cmp     rcx, rdi
180003A09: ja      short loc_180003A2A
180003A0B: mov     rdx, rbp
180003A0E: mov     rax, rdi
180003A11: shr     rdx, 1
180003A14: sub     rax, rdx
180003A17: cmp     rbp, rax
180003A1A: ja      short loc_180003A2A
180003A1C: lea     rax, [rdx+rbp]
180003A20: mov     rdi, rcx
180003A23: cmp     rcx, rax
180003A26: cmovb   rdi, rax
180003A2A: mov     rcx, rdi
180003A2D: mov     [rsp+38h+arg_10], r14
180003A32: add     rcx, 1
180003A36: mov     rax, 0FFFFFFFFFFFFFFFFh
180003A3D: cmovb   rcx, rax; Size
180003A41: cmp     rcx, 1000h
180003A48: jb      short loc_180003A76
180003A4A: lea     rax, [rcx+27h]
180003A4E: cmp     rax, rcx
180003A51: jbe     loc_180003AF4
180003A57: mov     rcx, rax; Size
180003A5A: call    ??2@YAPEAX_K@Z; operator new(unsigned __int64)
180003A5F: test    rax, rax
180003A62: jz      loc_180003AED
180003A68: lea     r14, [rax+27h]
180003A6C: and     r14, 0FFFFFFFFFFFFFFE0h
180003A70: mov     [r14-8], rax
180003A74: jmp     short loc_180003A88
180003A76: test    rcx, rcx
180003A79: jz      short loc_180003A85
180003A7B: call    ??2@YAPEAX_K@Z; operator new(unsigned __int64)
180003A80: mov     r14, rax
180003A83: jmp     short loc_180003A88
180003A85: xor     r14d, r14d
180003A88: mov     r8, rsi; Size
180003A8B: mov     [rbx+10h], rsi
180003A8F: xor     edx, edx; Val
180003A91: mov     [rbx+18h], rdi
180003A95: mov     rcx, r14; void *
180003A98: call    memset
180003A9D: mov     byte ptr [r14+rsi], 0
180003AA2: cmp     rbp, 10h
180003AA6: jb      short loc_180003AD5
180003AA8: mov     rcx, [rbx]
180003AAB: lea     rdx, [rbp+1]
180003AAF: cmp     rdx, 1000h
180003AB6: jb      short loc_180003AD0
180003AB8: mov     r8, [rcx-8]
180003ABC: add     rdx, 27h ; '''
180003AC0: sub     rcx, r8
180003AC3: lea     rax, [rcx-8]
180003AC7: cmp     rax, 1Fh
180003ACB: ja      short loc_180003AED
180003ACD: mov     rcx, r8; Block
180003AD0: call    j_j_free
180003AD5: mov     [rbx], r14
180003AD8: mov     rax, rbx
180003ADB: mov     r14, [rsp+38h+arg_10]
180003AE0: mov     rbx, [rsp+38h+arg_18]
180003AE5: add     rsp, 20h
180003AE9: pop     rdi
180003AEA: pop     rsi
180003AEB: pop     rbp
180003AEC: retn
180003AED: call    cs:_invalid_parameter_noinfo_noreturn
180003AF3: int     3; Trap to Debugger
180003AF4: call    ?cancel_current_task@Concurrency@@YAXXZ; Concurrency::cancel_current_task(void)
180003AF9: align 2
180003AFA: call    sub_180002B40
180003AFF: align 20h

### FUNC 180003B00 - 180003D47 (583 bytes) name=sub_180003B00
180003B00: push    rbx
180003B02: push    rsi
180003B03: push    rdi
180003B04: push    r12
180003B06: push    r13
180003B08: push    r14
180003B0A: push    r15
180003B0C: sub     rsp, 50h
180003B10: mov     r15, r8
180003B13: mov     [rsp+88h+var_50], rdx
180003B18: mov     rsi, rcx
180003B1B: mov     r8, [rcx]
180003B1E: sub     rdx, r8
180003B21: mov     r10, 2AAAAAAAAAAAAAABh
180003B2B: mov     rax, r10
180003B2E: imul    rdx
180003B31: mov     rbx, rdx
180003B34: sar     rbx, 4
180003B38: mov     rax, rbx
180003B3B: shr     rax, 3Fh
180003B3F: add     rbx, rax
180003B42: mov     rcx, [rcx+8]
180003B46: sub     rcx, r8
180003B49: mov     rax, r10
180003B4C: imul    rcx
180003B4F: sar     rdx, 4
180003B53: mov     rax, rdx
180003B56: shr     rax, 3Fh
180003B5A: add     rdx, rax
180003B5D: mov     r9, 2AAAAAAAAAAAAAAh
180003B67: cmp     rdx, r9
180003B6A: jz      loc_180003D41
180003B70: lea     r12, [rdx+1]
180003B74: mov     rcx, [rsi+10h]
180003B78: sub     rcx, r8
180003B7B: mov     rax, r10
180003B7E: imul    rcx
180003B81: sar     rdx, 4
180003B85: mov     rax, rdx
180003B88: shr     rax, 3Fh
180003B8C: add     rdx, rax
180003B8F: mov     rcx, rdx
180003B92: shr     rcx, 1
180003B95: mov     rax, r9
180003B98: sub     rax, rcx
180003B9B: cmp     rdx, rax
180003B9E: jbe     short loc_180003BA5
180003BA0: mov     rax, r12
180003BA3: jmp     short loc_180003BB0
180003BA5: lea     rax, [rcx+rdx]
180003BA9: cmp     rax, r12
180003BAC: cmovb   rax, r12
180003BB0: mov     [rsp+88h+var_58], rax
180003BB5: cmp     rax, r9
180003BB8: ja      loc_180003D3B
180003BBE: lea     r14, [rax+rax*2]
180003BC2: shl     r14, 5
180003BC6: cmp     r14, 1000h
180003BCD: jb      short loc_180003BF8
180003BCF: lea     rcx, [r14+27h]; Size
180003BD3: cmp     rcx, r14
180003BD6: jbe     loc_180003D3B
180003BDC: call    ??2@YAPEAX_K@Z; operator new(unsigned __int64)
180003BE1: test    rax, rax
180003BE4: jz      loc_180003D34
180003BEA: lea     rdi, [rax+27h]
180003BEE: and     rdi, 0FFFFFFFFFFFFFFE0h
180003BF2: mov     [rdi-8], rax
180003BF6: jmp     short loc_180003C0C
180003BF8: test    r14, r14
180003BFB: jz      short loc_180003C0A
180003BFD: mov     rcx, r14; Size
180003C00: call    ??2@YAPEAX_K@Z; operator new(unsigned __int64)
180003C05: mov     rdi, rax
180003C08: jmp     short loc_180003C0C
180003C0A: xor     edi, edi
180003C0C: mov     [rsp+88h+var_60], rdi
180003C11: lea     r13, [rbx+rbx*2]
180003C15: shl     r13, 5
180003C19: add     r13, rdi
180003C1C: lea     rbx, [r13+60h]
180003C20: mov     [rsp+88h+var_48], rbx
180003C25: mov     [rsp+88h+var_68], rbx
180003C2A: mov     [rsp+88h+var_40], r13
180003C2F: mov     rdx, r15
180003C32: mov     rcx, r13
180003C35: call    sub_180002E60
180003C3A: nop
180003C3B: lea     rdx, [r15+20h]
180003C3F: lea     rcx, [r13+20h]
180003C43: call    sub_180002E60
180003C48: nop
180003C49: lea     rdx, [r15+40h]
180003C4D: lea     rcx, [r13+40h]
180003C51: call    sub_180002E60
180003C56: nop
180003C57: mov     [rsp+88h+var_68], r13
180003C5C: mov     rdx, [rsi+8]
180003C60: mov     rcx, [rsi]
180003C63: mov     r11, [rsp+88h+var_50]
180003C68: mov     r8, rdi
180003C6B: cmp     r11, rdx
180003C6E: jz      short loc_180003C87
180003C70: mov     rdx, r11
180003C73: call    sub_180003D50
180003C78: mov     [rsp+88h+var_68], rdi
180003C7D: mov     r8, rbx
180003C80: mov     rdx, [rsi+8]
180003C84: mov     rcx, r11
180003C87: call    sub_180003D50
180003C8C: nop
180003C8D: mov     rbx, [rsi]
180003C90: test    rbx, rbx
180003C93: jz      short loc_180003D07
180003C95: mov     r15, [rsi+8]
180003C99: cmp     rbx, r15
180003C9C: jz      short loc_180003CB4
180003C9E: xchg    ax, ax
180003CA0: mov     rcx, rbx
180003CA3: call    sub_180002CA0
180003CA8: add     rbx, 60h ; '`'
180003CAC: cmp     rbx, r15
180003CAF: jnz     short loc_180003CA0
180003CB1: mov     rbx, [rsi]
180003CB4: mov     rcx, [rsi+10h]
180003CB8: sub     rcx, rbx
180003CBB: mov     rax, 2AAAAAAAAAAAAAABh
180003CC5: imul    rcx
180003CC8: sar     rdx, 4
180003CCC: mov     rax, rdx
180003CCF: shr     rax, 3Fh
180003CD3: add     rdx, rax
180003CD6: lea     rdx, [rdx+rdx*2]
180003CDA: shl     rdx, 5
180003CDE: cmp     rdx, 1000h
180003CE5: jb      short loc_180003CFF
180003CE7: add     rdx, 27h ; '''
180003CEB: mov     rax, [rbx-8]
180003CEF: sub     rbx, rax
180003CF2: add     rbx, 0FFFFFFFFFFFFFFF8h
180003CF6: cmp     rbx, 1Fh
180003CFA: ja      short loc_180003D34
180003CFC: mov     rbx, rax
180003CFF: mov     rcx, rbx; Block
180003D02: call    j_j_free
180003D07: mov     [rsi], rdi
180003D0A: lea     rcx, [r12+r12*2]
180003D0E: shl     rcx, 5
180003D12: add     rcx, rdi
180003D15: mov     [rsi+8], rcx
180003D19: lea     rcx, [r14+rdi]
180003D1D: mov     [rsi+10h], rcx
180003D21: mov     rax, r13
180003D24: add     rsp, 50h
180003D28: pop     r15
180003D2A: pop     r14
180003D2C: pop     r13
180003D2E: pop     r12
180003D30: pop     rdi
180003D31: pop     rsi
180003D32: pop     rbx
180003D33: retn
180003D34: call    cs:_invalid_parameter_noinfo_noreturn
180003D3A: int     3; Trap to Debugger
180003D3B: call    ?cancel_current_task@Concurrency@@YAXXZ; Concurrency::cancel_current_task(void)
180003D40: db 0CCh
180003D41: call    sub_180002B80
180003D46: db 0CCh

### FUNC 180003D50 - 180003E1A (202 bytes) name=sub_180003D50
180003D50: mov     rax, r8
180003D53: cmp     rcx, rdx
180003D56: jz      locret_180003E19
180003D5C: mov     r9, rax
180003D5F: lea     r8, [rcx+38h]
180003D63: sub     r9, rcx
180003D66: xor     r10d, r10d
180003D69: nop     dword ptr [rax+00000000h]
180003D70: mov     [r9+r8-28h], r10
180003D75: mov     [r9+r8-20h], r10
180003D7A: movups  xmm0, xmmword ptr [r8-38h]
180003D7F: lea     r8, [r8+60h]
180003D83: lea     rcx, [r8-38h]
180003D87: movups  xmmword ptr [rax], xmm0
180003D8A: movups  xmm1, xmmword ptr [r8-88h]
180003D92: movups  xmmword ptr [rax+10h], xmm1
180003D96: mov     [r8-88h], r10
180003D9D: add     rax, 60h ; '`'
180003DA1: mov     qword ptr [r8-80h], 0Fh
180003DA9: mov     [r8-98h], r10b
180003DB0: mov     [r9+r8-68h], r10
180003DB5: mov     [r9+r8-60h], r10
180003DBA: movups  xmm0, xmmword ptr [r8-78h]
180003DBF: movups  xmmword ptr [r9+r8-78h], xmm0
180003DC5: movups  xmm1, xmmword ptr [r8-68h]
180003DCA: movups  xmmword ptr [r9+r8-68h], xmm1
180003DD0: mov     [r8-68h], r10
180003DD4: mov     qword ptr [r8-60h], 0Fh
180003DDC: mov     [r8-78h], r10b
180003DE0: mov     [r9+r8-48h], r10
180003DE5: mov     [r9+r8-40h], r10
180003DEA: movups  xmm0, xmmword ptr [r8-58h]
180003DEF: movups  xmmword ptr [r9+r8-58h], xmm0
180003DF5: movups  xmm1, xmmword ptr [r8-48h]
180003DFA: movups  xmmword ptr [r9+r8-48h], xmm1
180003E00: mov     [r8-48h], r10
180003E04: mov     qword ptr [r8-40h], 0Fh
180003E0C: mov     [r8-58h], r10b
180003E10: cmp     rcx, rdx
180003E13: jnz     loc_180003D70
180003E19: retn

### FUNC 180003E20 - 180003E84 (100 bytes) name=sub_180003E20
180003E20: push    rbx
180003E22: sub     rsp, 40h
180003E26: mov     rax, cs:__security_cookie
180003E2D: xor     rax, rsp
180003E30: mov     [rsp+48h+var_18], rax
180003E35: mov     r8, rdx
180003E38: mov     [rsp+48h+var_20], 1
180003E3D: lea     rdx, [rcx+8]
180003E41: mov     [rsp+48h+var_28], r8
180003E46: lea     rax, off_18000F6D8
180003E4D: mov     rbx, rcx
180003E50: mov     [rcx], rax
180003E53: xorps   xmm0, xmm0
180003E56: lea     rcx, [rsp+48h+var_28]
180003E5B: movups  xmmword ptr [rdx], xmm0
180003E5E: call    cs:__std_exception_copy
180003E64: lea     rax, off_18000FC50
180003E6B: mov     [rbx], rax
180003E6E: mov     rax, rbx
180003E71: mov     rcx, [rsp+48h+var_18]
180003E76: xor     rcx, rsp; StackCookie
180003E79: call    __security_check_cookie
180003E7E: add     rsp, 40h
180003E82: pop     rbx
180003E83: retn

### FUNC 180003E90 - 18000412D (669 bytes) name=sub_180003E90
180003E90: mov     [rsp-8+arg_8], rbx
180003E95: mov     [rsp-8+arg_10], rsi
180003E9A: push    rbp
180003E9B: push    rdi
180003E9C: push    r14
180003E9E: lea     rbp, [rsp-70h]
180003EA3: sub     rsp, 170h
180003EAA: mov     rax, cs:__security_cookie
180003EB1: xor     rax, rsp
180003EB4: mov     [rbp+80h+var_20], rax
180003EB8: mov     rdi, rcx
180003EBB: mov     [rsp+180h+var_138], rcx
180003EC0: xor     esi, esi
180003EC2: mov     [rsp+180h+var_160], esi
180003EC6: xorps   xmm0, xmm0
180003EC9: movups  xmmword ptr [rcx+8], xmm0
180003ECD: lea     rax, off_18000FC90
180003ED4: mov     [rcx], rax
180003ED7: lea     rbx, [rcx+18h]
180003EDB: mov     [rbx+10h], rsi
180003EDF: mov     qword ptr [rbx+18h], 0Fh
180003EE7: mov     [rbx], sil
180003EEA: xor     edx, edx; Val
180003EEC: mov     r8d, 0F8h; Size
180003EF2: lea     rcx, [rsp+180h+var_120]; void *
180003EF7: call    memset
180003EFC: lea     rax, unk_18000FCB8
180003F03: mov     [rsp+180h+var_120], rax
180003F08: lea     rax, unk_18000FBA8
180003F0F: mov     [rsp+180h+var_110], rax
180003F14: lea     rcx, [rbp+80h+var_88]
180003F18: call    cs:??0?$basic_ios@DU?$char_traits@D@std@@@std@@IEAA@XZ; std::basic_ios<char,std::char_traits<char>>::basic_ios<char,std::char_traits<char>>(void)
180003F1E: nop
180003F1F: mov     [rsp+180h+var_160], 1
180003F27: xor     r8d, r8d
180003F2A: lea     rdx, [rsp+180h+var_108]
180003F2F: lea     rcx, [rsp+180h+var_120]
180003F34: call    cs:??0?$basic_iostream@DU?$char_traits@D@std@@@std@@QEAA@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z; std::basic_iostream<char,std::char_traits<char>>::basic_iostream<char,std::char_traits<char>>(std::basic_streambuf<char,std::char_traits<char>> *)
180003F3A: nop
180003F3B: mov     rax, [rsp+180h+var_120]
180003F40: movsxd  rcx, dword ptr [rax+4]
180003F44: lea     r14, off_18000FC80
180003F4B: mov     [rsp+rcx+180h+var_120], r14
180003F50: mov     rax, [rsp+180h+var_120]
180003F55: movsxd  rcx, dword ptr [rax+4]
180003F59: lea     edx, [rcx-98h]
180003F5F: mov     [rsp+rcx+180h+var_124], edx
180003F63: lea     rcx, [rsp+180h+var_108]
180003F68: call    cs:??0?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAA@XZ; std::basic_streambuf<char,std::char_traits<char>>::basic_streambuf<char,std::char_traits<char>>(void)
180003F6E: lea     rax, off_18000FBD0
180003F75: mov     [rsp+180h+var_108], rax
180003F7A: mov     [rbp+80h+var_A0], rsi
180003F7E: mov     [rbp+80h+var_98], esi
180003F81: lea     rdx, aSerialexceptio; "SerialException "
180003F88: lea     rcx, [rsp+180h+var_110]
180003F8D: call    sub_180006310
180003F92: mov     rcx, rax
180003F95: lea     rdx, aSerialPortAlre; "Serial port already open."
180003F9C: call    sub_180006310
180003FA1: mov     rcx, rax
180003FA4: lea     rdx, aFailed; " failed."
180003FAB: call    sub_180006310
180003FB0: nop
180003FB1: mov     qword ptr [rsp+180h+var_148], rsi
180003FB6: mov     edx, 0Fh
180003FBB: mov     qword ptr [rsp+180h+var_148+8], rdx
180003FC0: mov     byte ptr [rsp+180h+Block], sil
180003FC5: mov     [rsp+180h+var_160], 5
180003FCD: mov     ecx, [rbp+80h+var_98]
180003FD0: test    cl, 2
180003FD3: jnz     short loc_180003FF6
180003FD5: mov     rax, [rbp+80h+var_C8]
180003FD9: mov     r8, [rax]
180003FDC: test    r8, r8
180003FDF: jz      short loc_180003FF6
180003FE1: mov     rax, [rbp+80h+var_E8]
180003FE5: mov     rdx, [rax]
180003FE8: cmp     r8, [rbp+80h+var_A0]
180003FEC: cmovb   r8, [rbp+80h+var_A0]
180003FF1: sub     r8, rdx
180003FF4: jmp     short loc_18000401B
180003FF6: test    cl, 4
180003FF9: jnz     short loc_18000402A
180003FFB: mov     rax, [rbp+80h+var_D0]
180003FFF: mov     rcx, [rax]
180004002: test    rcx, rcx
180004005: jz      short loc_18000402A
180004007: mov     rax, [rbp+80h+var_F0]
18000400B: mov     rdx, [rax]; Src
18000400E: mov     rax, [rbp+80h+var_B8]
180004012: movsxd  r8, dword ptr [rax]
180004015: sub     r8, rdx
180004018: add     r8, rcx; Size
18000401B: lea     rcx, [rsp+180h+Block]; void *
180004020: call    sub_180002610
180004025: mov     rdx, qword ptr [rsp+180h+var_148+8]
18000402A: lea     rax, [rsp+180h+Block]
18000402F: cmp     rbx, rax
180004032: jz      short loc_180004088
180004034: mov     rdx, [rbx+18h]
180004038: cmp     rdx, 10h
18000403C: jb      short loc_18000406A
18000403E: mov     rcx, [rbx]
180004041: inc     rdx
180004044: cmp     rdx, 1000h
18000404B: jb      short loc_180004065
18000404D: add     rdx, 27h ; '''
180004051: mov     r8, [rcx-8]
180004055: sub     rcx, r8
180004058: lea     rax, [rcx-8]
18000405C: cmp     rax, 1Fh
180004060: ja      short loc_1800040B7
180004062: mov     rcx, r8; Block
180004065: call    j_j_free
18000406A: mov     qword ptr [rbx+18h], 0Fh
180004072: mov     byte ptr [rbx], 0
180004075: movups  xmm0, xmmword ptr [rsp+180h+Block]
18000407A: movups  xmmword ptr [rbx], xmm0
18000407D: movups  xmm1, [rsp+180h+var_148]
180004082: movups  xmmword ptr [rbx+10h], xmm1
180004086: jmp     short loc_1800040C4
180004088: cmp     rdx, 10h
18000408C: jb      short loc_1800040C4
18000408E: inc     rdx
180004091: mov     rcx, [rsp+180h+Block]; Block
180004096: mov     rax, rcx
180004099: cmp     rdx, 1000h
1800040A0: jb      short loc_1800040BE
1800040A2: add     rdx, 27h ; '''
1800040A6: mov     rcx, [rcx-8]
1800040AA: sub     rax, rcx
1800040AD: add     rax, 0FFFFFFFFFFFFFFF8h
1800040B1: cmp     rax, 1Fh
1800040B5: jbe     short loc_1800040BE
1800040B7: call    cs:_invalid_parameter_noinfo_noreturn
1800040BD: int     3; Trap to Debugger
1800040BE: call    j_j_free
1800040C3: nop
1800040C4: mov     rax, [rsp+180h+var_120]
1800040C9: movsxd  rcx, dword ptr [rax+4]
1800040CD: mov     [rsp+rcx+180h+var_120], r14
1800040D2: mov     rcx, [rsp+180h+var_120]
1800040D7: movsxd  rdx, dword ptr [rcx+4]
1800040DB: lea     r8d, [rdx-98h]
1800040E2: mov     [rsp+rdx+180h+var_124], r8d
1800040E7: lea     rcx, [rsp+180h+var_108]
1800040EC: call    sub_180005F90
1800040F1: lea     rcx, [rbp+80h+var_100]
1800040F5: call    cs:??1?$basic_iostream@DU?$char_traits@D@std@@@std@@UEAA@XZ; std::basic_iostream<char,std::char_traits<char>>::~basic_iostream<char,std::char_traits<char>>(void)
1800040FB: lea     rcx, [rbp+80h+var_88]
1800040FF: call    cs:??1?$basic_ios@DU?$char_traits@D@std@@@std@@UEAA@XZ; std::basic_ios<char,std::char_traits<char>>::~basic_ios<char,std::char_traits<char>>(void)
180004105: nop
180004106: mov     rax, rdi
180004109: mov     rcx, [rbp+80h+var_20]
18000410D: xor     rcx, rsp; StackCookie
180004110: call    __security_check_cookie
180004115: lea     r11, [rsp+180h+var_10]
18000411D: mov     rbx, [r11+28h]
180004121: mov     rsi, [r11+30h]
180004125: mov     rsp, r11
180004128: pop     r14
18000412A: pop     rdi
18000412B: pop     rbp
18000412C: retn

### FUNC 180004130 - 180004165 (53 bytes) name=sub_180004130
180004130: mov     [rsp+arg_0], rcx
180004135: push    rbx
180004136: sub     rsp, 20h
18000413A: mov     rbx, rcx
18000413D: xorps   xmm0, xmm0
180004140: movups  xmmword ptr [rcx+8], xmm0
180004144: lea     rax, off_18000FC90
18000414B: mov     [rcx], rax
18000414E: add     rdx, 18h
180004152: add     rcx, 18h
180004156: call    sub_180002E60
18000415B: nop
18000415C: mov     rax, rbx
18000415F: add     rsp, 20h
180004163: pop     rbx
180004164: retn

### FUNC 180004170 - 1800041EF (127 bytes) name=sub_180004170
180004170: push    rbx
180004172: sub     rsp, 20h
180004176: lea     rax, off_18000FC90
18000417D: mov     rbx, rcx
180004180: mov     [rcx], rax
180004183: mov     rdx, [rcx+30h]
180004187: cmp     rdx, 10h
18000418B: jb      short loc_1800041BA
18000418D: mov     rcx, [rcx+18h]
180004191: inc     rdx
180004194: cmp     rdx, 1000h
18000419B: jb      short loc_1800041B5
18000419D: mov     r8, [rcx-8]
1800041A1: add     rdx, 27h ; '''
1800041A5: sub     rcx, r8
1800041A8: lea     rax, [rcx-8]
1800041AC: cmp     rax, 1Fh
1800041B0: ja      short loc_1800041E8
1800041B2: mov     rcx, r8; Block
1800041B5: call    j_j_free
1800041BA: lea     rax, off_18000F6D8
1800041C1: mov     qword ptr [rbx+28h], 0
1800041C9: mov     qword ptr [rbx+30h], 0Fh
1800041D1: lea     rcx, [rbx+8]
1800041D5: mov     byte ptr [rbx+18h], 0
1800041D9: mov     [rbx], rax
1800041DC: add     rsp, 20h
1800041E0: pop     rbx
1800041E1: jmp     cs:__std_exception_destroy
1800041E8: call    cs:_invalid_parameter_noinfo_noreturn
1800041EE: db 0CCh

### FUNC 1800041F0 - 1800041FF (15 bytes) name=sub_1800041F0
1800041F0: cmp     qword ptr [rcx+30h], 10h
1800041F5: lea     rax, [rcx+18h]
1800041F9: jb      short locret_1800041FE
1800041FB: mov     rax, [rax]
1800041FE: retn

### FUNC 180004200 - 1800042A0 (160 bytes) name=sub_180004200
180004200: mov     [rsp+arg_8], rbx
180004205: push    rdi
180004206: sub     rsp, 20h
18000420A: lea     rax, off_18000FC90
180004211: mov     edi, edx
180004213: mov     [rcx], rax
180004216: mov     rbx, rcx
180004219: mov     rdx, [rcx+30h]
18000421D: cmp     rdx, 10h
180004221: jb      short loc_180004250
180004223: mov     rcx, [rcx+18h]
180004227: inc     rdx
18000422A: cmp     rdx, 1000h
180004231: jb      short loc_18000424B
180004233: mov     r8, [rcx-8]
180004237: add     rdx, 27h ; '''
18000423B: sub     rcx, r8
18000423E: lea     rax, [rcx-8]
180004242: cmp     rax, 1Fh
180004246: ja      short loc_180004299
180004248: mov     rcx, r8; Block
18000424B: call    j_j_free
180004250: lea     rax, off_18000F6D8
180004257: mov     qword ptr [rbx+28h], 0
18000425F: mov     qword ptr [rbx+30h], 0Fh
180004267: lea     rcx, [rbx+8]
18000426B: mov     byte ptr [rbx+18h], 0
18000426F: mov     [rbx], rax
180004272: call    cs:__std_exception_destroy
180004278: test    dil, 1
18000427C: jz      short loc_18000428B
18000427E: mov     edx, 38h ; '8'
180004283: mov     rcx, rbx; Block
180004286: call    j_j_free
18000428B: mov     rax, rbx
18000428E: mov     rbx, [rsp+28h+arg_8]
180004293: add     rsp, 20h
180004297: pop     rdi
180004298: retn
180004299: call    cs:_invalid_parameter_noinfo_noreturn
18000429F: align 20h

### FUNC 1800042A0 - 1800042FF (95 bytes) name=sub_1800042A0
1800042A0: push    rbx
1800042A2: sub     rsp, 20h
1800042A6: mov     rax, [rcx]
1800042A9: lea     rbx, [rcx+98h]
1800042B0: lea     rcx, [rbx-80h]
1800042B4: movsxd  rdx, dword ptr [rax+4]
1800042B8: lea     rax, off_18000FC80
1800042BF: mov     [rdx+rbx-98h], rax
1800042C7: mov     rax, [rbx-98h]
1800042CE: movsxd  rdx, dword ptr [rax+4]
1800042D2: lea     r8d, [rdx-98h]
1800042D9: mov     [rdx+rbx-9Ch], r8d
1800042E1: call    sub_180005F90
1800042E6: lea     rcx, [rbx-78h]
1800042EA: call    cs:??1?$basic_iostream@DU?$char_traits@D@std@@@std@@UEAA@XZ; std::basic_iostream<char,std::char_traits<char>>::~basic_iostream<char,std::char_traits<char>>(void)
1800042F0: mov     rcx, rbx
1800042F3: add     rsp, 20h
1800042F7: pop     rbx
1800042F8: jmp     cs:??1?$basic_ios@DU?$char_traits@D@std@@@std@@UEAA@XZ; std::basic_ios<char,std::char_traits<char>>::~basic_ios<char,std::char_traits<char>>(void)

### FUNC 180004300 - 18000430D (13 bytes) name=sub_180004300
180004300: xor     edx, edx; Val
180004302: mov     r8d, 0F8h; Size
180004308: jmp     memset

### FUNC 180004310 - 18000465D (845 bytes) name=sub_180004310
180004310: mov     [rsp-8+arg_10], rbx
180004315: push    rbp
180004316: push    rsi
180004317: push    rdi
180004318: push    r12
18000431A: push    r13
18000431C: push    r14
18000431E: push    r15
180004320: lea     rbp, [rsp-80h]
180004325: sub     rsp, 180h
18000432C: mov     rax, cs:__security_cookie
180004333: xor     rax, rsp
180004336: mov     [rbp+0B0h+var_40], rax
18000433A: mov     rdi, r9
18000433D: mov     ebx, r8d
180004340: mov     rsi, rdx
180004343: mov     r15, rcx
180004346: mov     [rsp+1B0h+var_160], rcx
18000434B: mov     [rsp+1B0h+var_148], rdx
180004350: xor     r12d, r12d
180004353: mov     [rsp+1B0h+var_190], r12d
180004358: xorps   xmm0, xmm0
18000435B: movups  xmmword ptr [rcx+8], xmm0
18000435F: lea     rax, off_18000FC68
180004366: mov     [rcx], rax
180004369: add     rcx, 18h
18000436D: call    sub_180002E60
180004372: nop
180004373: mov     [r15+38h], ebx
180004377: lea     rbx, [r15+40h]
18000437B: mov     [rbx+10h], r12
18000437F: mov     qword ptr [rbx+18h], 0Fh
180004387: mov     [rbx], r12b
18000438A: mov     [r15+60h], r12d
18000438E: xor     edx, edx; Val
180004390: mov     r8d, 0F8h; Size
180004396: lea     rcx, [rsp+1B0h+var_140]; void *
18000439B: call    memset
1800043A0: lea     rax, unk_18000FCB8
1800043A7: mov     [rsp+1B0h+var_140], rax
1800043AC: lea     rax, unk_18000FBA8
1800043B3: mov     [rbp+0B0h+var_130], rax
1800043B7: lea     rcx, [rbp+0B0h+var_A8]
1800043BB: call    cs:??0?$basic_ios@DU?$char_traits@D@std@@@std@@IEAA@XZ; std::basic_ios<char,std::char_traits<char>>::basic_ios<char,std::char_traits<char>>(void)
1800043C1: nop
1800043C2: mov     [rsp+1B0h+var_190], 1
1800043CA: xor     r8d, r8d
1800043CD: lea     rdx, [rbp+0B0h+var_128]
1800043D1: lea     rcx, [rsp+1B0h+var_140]
1800043D6: call    cs:??0?$basic_iostream@DU?$char_traits@D@std@@@std@@QEAA@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z; std::basic_iostream<char,std::char_traits<char>>::basic_iostream<char,std::char_traits<char>>(std::basic_streambuf<char,std::char_traits<char>> *)
1800043DC: nop
1800043DD: mov     rax, [rsp+1B0h+var_140]
1800043E2: movsxd  rcx, dword ptr [rax+4]
1800043E6: lea     r13, off_18000FC80
1800043ED: mov     [rsp+rcx+1B0h+var_140], r13
1800043F2: mov     rax, [rsp+1B0h+var_140]
1800043F7: movsxd  rcx, dword ptr [rax+4]
1800043FB: lea     edx, [rcx-98h]
180004401: mov     dword ptr [rsp+rcx+1B0h+var_148+4], edx
180004405: lea     rcx, [rbp+0B0h+var_128]
180004409: call    cs:??0?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAA@XZ; std::basic_streambuf<char,std::char_traits<char>>::basic_streambuf<char,std::char_traits<char>>(void)
18000440F: lea     rax, off_18000FBD0
180004416: mov     [rbp+0B0h+var_128], rax
18000441A: mov     [rbp+0B0h+var_C0], r12
18000441E: mov     [rbp+0B0h+var_B8], r12d
180004422: lea     rdx, aIoException; "IO Exception: "
180004429: lea     rcx, [rbp+0B0h+var_130]
18000442D: call    sub_180006310
180004432: mov     rcx, rax
180004435: mov     rdx, rdi
180004438: call    sub_180006310
18000443D: lea     rdx, aFile; ", file "
180004444: lea     rcx, [rbp+0B0h+var_130]
180004448: call    sub_180006310
18000444D: lea     rdx, [r15+18h]
180004451: cmp     qword ptr [r15+30h], 10h
180004456: jb      short loc_18000445C
180004458: mov     rdx, [r15+18h]
18000445C: mov     r8, [r15+28h]
180004460: mov     rcx, rax
180004463: call    sub_180006920
180004468: lea     rdx, aLine; ", line "
18000446F: mov     rcx, rax
180004472: call    sub_180006310
180004477: mov     rcx, rax
18000447A: mov     edx, [r15+38h]
18000447E: call    cs:??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@H@Z; std::basic_ostream<char,std::char_traits<char>>::operator<<(int)
180004484: mov     rcx, rax
180004487: lea     rdx, asc_18000F83C; "."
18000448E: call    sub_180006310
180004493: nop
180004494: mov     qword ptr [rsp+1B0h+var_178], r12
180004499: mov     ecx, 0Fh
18000449E: mov     qword ptr [rsp+1B0h+var_178+8], rcx
1800044A3: mov     byte ptr [rsp+1B0h+Block], 0
1800044A8: mov     [rsp+1B0h+var_190], 5
1800044B0: mov     edx, [rbp+0B0h+var_B8]
1800044B3: test    dl, 2
1800044B6: jnz     short loc_1800044D9
1800044B8: mov     rax, [rbp+0B0h+var_E8]
1800044BC: mov     r8, [rax]
1800044BF: test    r8, r8
1800044C2: jz      short loc_1800044D9
1800044C4: mov     rax, [rbp+0B0h+var_108]
1800044C8: mov     rdx, [rax]
1800044CB: cmp     r8, [rbp+0B0h+var_C0]
1800044CF: cmovb   r8, [rbp+0B0h+var_C0]
1800044D4: sub     r8, rdx
1800044D7: jmp     short loc_1800044FE
1800044D9: test    dl, 4
1800044DC: jnz     short loc_18000450D
1800044DE: mov     rax, [rbp+0B0h+var_F0]
1800044E2: mov     r9, [rax]
1800044E5: test    r9, r9
1800044E8: jz      short loc_18000450D
1800044EA: mov     rax, [rbp+0B0h+var_110]
1800044EE: mov     rdx, [rax]; Src
1800044F1: mov     rax, [rbp+0B0h+var_D8]
1800044F5: movsxd  r8, dword ptr [rax]
1800044F8: sub     r8, rdx
1800044FB: add     r8, r9; Size
1800044FE: lea     rcx, [rsp+1B0h+Block]; void *
180004503: call    sub_180002610
180004508: mov     rcx, qword ptr [rsp+1B0h+var_178+8]
18000450D: lea     rax, [rsp+1B0h+Block]
180004512: cmp     rbx, rax
180004515: jz      short loc_18000456B
180004517: mov     rdx, [rbx+18h]
18000451B: cmp     rdx, 10h
18000451F: jb      short loc_18000454D
180004521: mov     rcx, [rbx]
180004524: inc     rdx
180004527: cmp     rdx, 1000h
18000452E: jb      short loc_180004548
180004530: add     rdx, 27h ; '''
180004534: mov     r8, [rcx-8]
180004538: sub     rcx, r8
18000453B: lea     rax, [rcx-8]
18000453F: cmp     rax, 1Fh
180004543: ja      short loc_18000459B
180004545: mov     rcx, r8; Block
180004548: call    j_j_free
18000454D: mov     qword ptr [rbx+18h], 0Fh
180004555: mov     byte ptr [rbx], 0
180004558: movups  xmm0, xmmword ptr [rsp+1B0h+Block]
18000455D: movups  xmmword ptr [rbx], xmm0
180004560: movups  xmm1, [rsp+1B0h+var_178]
180004565: movups  xmmword ptr [rbx+10h], xmm1
180004569: jmp     short loc_1800045A8
18000456B: cmp     rcx, 10h
18000456F: jb      short loc_1800045A8
180004571: lea     rdx, [rcx+1]
180004575: mov     rcx, [rsp+1B0h+Block]; Block
18000457A: mov     rax, rcx
18000457D: cmp     rdx, 1000h
180004584: jb      short loc_1800045A2
180004586: add     rdx, 27h ; '''
18000458A: mov     rcx, [rcx-8]
18000458E: sub     rax, rcx
180004591: add     rax, 0FFFFFFFFFFFFFFF8h
180004595: cmp     rax, 1Fh
180004599: jbe     short loc_1800045A2
18000459B: call    cs:_invalid_parameter_noinfo_noreturn
1800045A1: int     3; Trap to Debugger
1800045A2: call    j_j_free
1800045A7: nop
1800045A8: mov     rax, [rsp+1B0h+var_140]
1800045AD: movsxd  rcx, dword ptr [rax+4]
1800045B1: mov     [rsp+rcx+1B0h+var_140], r13
1800045B6: mov     rax, [rsp+1B0h+var_140]
1800045BB: movsxd  rcx, dword ptr [rax+4]
1800045BF: lea     edx, [rcx-98h]
1800045C5: mov     dword ptr [rsp+rcx+1B0h+var_148+4], edx
1800045C9: lea     rcx, [rbp+0B0h+var_128]
1800045CD: call    sub_180005F90
1800045D2: lea     rcx, [rbp+0B0h+var_120]
1800045D6: call    cs:??1?$basic_iostream@DU?$char_traits@D@std@@@std@@UEAA@XZ; std::basic_iostream<char,std::char_traits<char>>::~basic_iostream<char,std::char_traits<char>>(void)
1800045DC: lea     rcx, [rbp+0B0h+var_A8]
1800045E0: call    cs:??1?$basic_ios@DU?$char_traits@D@std@@@std@@UEAA@XZ; std::basic_ios<char,std::char_traits<char>>::~basic_ios<char,std::char_traits<char>>(void)
1800045E6: nop
1800045E7: mov     rdx, [rsi+18h]
1800045EB: cmp     rdx, 10h
1800045EF: jb      short loc_18000461D
1800045F1: inc     rdx
1800045F4: mov     rcx, [rsi]
1800045F7: cmp     rdx, 1000h
1800045FE: jb      short loc_180004618
180004600: add     rdx, 27h ; '''
180004604: mov     r8, [rcx-8]
180004608: sub     rcx, r8
18000460B: lea     rax, [rcx-8]
18000460F: cmp     rax, 1Fh
180004613: ja      short loc_180004656
180004615: mov     rcx, r8; Block
180004618: call    j_j_free
18000461D: mov     [rsi+10h], r12
180004621: mov     qword ptr [rsi+18h], 0Fh
180004629: mov     byte ptr [rsi], 0
18000462C: mov     rax, r15
18000462F: mov     rcx, [rbp+0B0h+var_40]
180004633: xor     rcx, rsp; StackCookie
180004636: call    __security_check_cookie
18000463B: mov     rbx, [rsp+1B0h+arg_10]
180004643: add     rsp, 180h
18000464A: pop     r15
18000464C: pop     r14
18000464E: pop     r13
180004650: pop     r12
180004652: pop     rdi
180004653: pop     rsi
180004654: pop     rbp
180004655: retn
180004656: call    cs:_invalid_parameter_noinfo_noreturn
18000465C: db 0CCh

### FUNC 180004660 - 18000472E (206 bytes) name=sub_180004660
180004660: push    rbx
180004662: sub     rsp, 20h
180004666: lea     rax, off_18000FC68
18000466D: mov     rbx, rcx
180004670: mov     [rcx], rax
180004673: mov     rdx, [rcx+58h]
180004677: cmp     rdx, 10h
18000467B: jb      short loc_1800046AE
18000467D: mov     rcx, [rcx+40h]
180004681: inc     rdx
180004684: cmp     rdx, 1000h
18000468B: jb      short loc_1800046A9
18000468D: mov     r8, [rcx-8]
180004691: add     rdx, 27h ; '''
180004695: sub     rcx, r8
180004698: lea     rax, [rcx-8]
18000469C: cmp     rax, 1Fh
1800046A0: ja      loc_180004727
1800046A6: mov     rcx, r8; Block
1800046A9: call    j_j_free
1800046AE: mov     qword ptr [rbx+50h], 0
1800046B6: mov     qword ptr [rbx+58h], 0Fh
1800046BE: mov     byte ptr [rbx+40h], 0
1800046C2: mov     rdx, [rbx+30h]
1800046C6: cmp     rdx, 10h
1800046CA: jb      short loc_1800046F9
1800046CC: mov     rcx, [rbx+18h]
1800046D0: inc     rdx
1800046D3: cmp     rdx, 1000h
1800046DA: jb      short loc_1800046F4
1800046DC: mov     r8, [rcx-8]
1800046E0: add     rdx, 27h ; '''
1800046E4: sub     rcx, r8
1800046E7: lea     rax, [rcx-8]
1800046EB: cmp     rax, 1Fh
1800046EF: ja      short loc_180004727
1800046F1: mov     rcx, r8; Block
1800046F4: call    j_j_free
1800046F9: lea     rax, off_18000F6D8
180004700: mov     qword ptr [rbx+28h], 0
180004708: mov     qword ptr [rbx+30h], 0Fh
180004710: lea     rcx, [rbx+8]
180004714: mov     byte ptr [rbx+18h], 0
180004718: mov     [rbx], rax
18000471B: add     rsp, 20h
18000471F: pop     rbx
180004720: jmp     cs:__std_exception_destroy
180004727: call    cs:_invalid_parameter_noinfo_noreturn
18000472D: db 0CCh

### FUNC 180004730 - 180004791 (97 bytes) name=sub_180004730
180004730: mov     [rsp+arg_8], rbx
180004735: mov     [rsp+arg_0], rcx
18000473A: push    rdi
18000473B: sub     rsp, 20h
18000473F: mov     rbx, rdx
180004742: mov     rdi, rcx
180004745: xorps   xmm0, xmm0
180004748: movups  xmmword ptr [rcx+8], xmm0
18000474C: lea     rax, off_18000FC68
180004753: mov     [rcx], rax
180004756: mov     qword ptr [rcx+28h], 0
18000475E: mov     qword ptr [rcx+30h], 0Fh
180004766: mov     byte ptr [rcx+18h], 0
18000476A: mov     eax, [rdx+38h]
18000476D: mov     [rcx+38h], eax
180004770: add     rdx, 40h ; '@'
180004774: add     rcx, 40h ; '@'
180004778: call    sub_180002E60
18000477D: mov     eax, [rbx+60h]
180004780: mov     [rdi+60h], eax
180004783: mov     rax, rdi
180004786: mov     rbx, [rsp+28h+arg_8]
18000478B: add     rsp, 20h
18000478F: pop     rdi
180004790: retn

### FUNC 1800047A0 - 1800047AF (15 bytes) name=sub_1800047A0
1800047A0: cmp     qword ptr [rcx+58h], 10h
1800047A5: lea     rax, [rcx+40h]
1800047A9: jb      short locret_1800047AE
1800047AB: mov     rax, [rax]
1800047AE: retn

### FUNC 1800047B0 - 18000489F (239 bytes) name=sub_1800047B0
1800047B0: mov     [rsp+arg_8], rbx
1800047B5: push    rdi
1800047B6: sub     rsp, 20h
1800047BA: lea     rax, off_18000FC68
1800047C1: mov     edi, edx
1800047C3: mov     [rcx], rax
1800047C6: mov     rbx, rcx
1800047C9: mov     rdx, [rcx+58h]
1800047CD: cmp     rdx, 10h
1800047D1: jb      short loc_180004804
1800047D3: mov     rcx, [rcx+40h]
1800047D7: inc     rdx
1800047DA: cmp     rdx, 1000h
1800047E1: jb      short loc_1800047FF
1800047E3: mov     r8, [rcx-8]
1800047E7: add     rdx, 27h ; '''
1800047EB: sub     rcx, r8
1800047EE: lea     rax, [rcx-8]
1800047F2: cmp     rax, 1Fh
1800047F6: ja      loc_180004898
1800047FC: mov     rcx, r8; Block
1800047FF: call    j_j_free
180004804: mov     qword ptr [rbx+50h], 0
18000480C: mov     qword ptr [rbx+58h], 0Fh
180004814: mov     byte ptr [rbx+40h], 0
180004818: mov     rdx, [rbx+30h]
18000481C: cmp     rdx, 10h
180004820: jb      short loc_18000484F
180004822: mov     rcx, [rbx+18h]
180004826: inc     rdx
180004829: cmp     rdx, 1000h
180004830: jb      short loc_18000484A
180004832: mov     r8, [rcx-8]
180004836: add     rdx, 27h ; '''
18000483A: sub     rcx, r8
18000483D: lea     rax, [rcx-8]
180004841: cmp     rax, 1Fh
180004845: ja      short loc_180004898
180004847: mov     rcx, r8; Block
18000484A: call    j_j_free
18000484F: lea     rax, off_18000F6D8
180004856: mov     qword ptr [rbx+28h], 0
18000485E: mov     qword ptr [rbx+30h], 0Fh
180004866: lea     rcx, [rbx+8]
18000486A: mov     byte ptr [rbx+18h], 0
18000486E: mov     [rbx], rax
180004871: call    cs:__std_exception_destroy
180004877: test    dil, 1
18000487B: jz      short loc_18000488A
18000487D: mov     edx, 68h ; 'h'
180004882: mov     rcx, rbx; Block
180004885: call    j_j_free
18000488A: mov     rax, rbx
18000488D: mov     rbx, [rsp+28h+arg_8]
180004892: add     rsp, 20h
180004896: pop     rdi
180004897: retn
180004898: call    cs:_invalid_parameter_noinfo_noreturn
18000489E: db 0CCh

### FUNC 1800048A0 - 180004B3C (668 bytes) name=sub_1800048A0
1800048A0: mov     [rsp-8+arg_10], rbx
1800048A5: push    rbp
1800048A6: push    rsi
1800048A7: push    rdi
1800048A8: push    r14
1800048AA: push    r15
1800048AC: lea     rbp, [rsp-70h]
1800048B1: sub     rsp, 170h
1800048B8: mov     rax, cs:__security_cookie
1800048BF: xor     rax, rsp
1800048C2: mov     [rbp+90h+var_30], rax
1800048C6: mov     rbx, rdx
1800048C9: mov     rsi, rcx
1800048CC: mov     [rsp+190h+var_148], rcx
1800048D1: xor     r14d, r14d
1800048D4: mov     [rsp+190h+var_170], r14d
1800048D9: xorps   xmm0, xmm0
1800048DC: movups  xmmword ptr [rcx+8], xmm0
1800048E0: lea     rax, off_18000FCA8
1800048E7: mov     [rcx], rax
1800048EA: lea     rdi, [rcx+18h]
1800048EE: mov     [rdi+10h], r14
1800048F2: mov     qword ptr [rdi+18h], 0Fh
1800048FA: mov     [rdi], r14b
1800048FD: xor     edx, edx; Val
1800048FF: mov     r8d, 0F8h; Size
180004905: lea     rcx, [rsp+190h+var_130]; void *
18000490A: call    memset
18000490F: lea     rax, unk_18000FCB8
180004916: mov     [rsp+190h+var_130], rax
18000491B: lea     rax, unk_18000FBA8
180004922: mov     [rsp+190h+var_120], rax
180004927: lea     rcx, [rbp+90h+var_98]
18000492B: call    cs:??0?$basic_ios@DU?$char_traits@D@std@@@std@@IEAA@XZ; std::basic_ios<char,std::char_traits<char>>::basic_ios<char,std::char_traits<char>>(void)
180004931: nop
180004932: mov     [rsp+190h+var_170], 1
18000493A: xor     r8d, r8d
18000493D: lea     rdx, [rsp+190h+var_118]
180004942: lea     rcx, [rsp+190h+var_130]
180004947: call    cs:??0?$basic_iostream@DU?$char_traits@D@std@@@std@@QEAA@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z; std::basic_iostream<char,std::char_traits<char>>::basic_iostream<char,std::char_traits<char>>(std::basic_streambuf<char,std::char_traits<char>> *)
18000494D: nop
18000494E: mov     rax, [rsp+190h+var_130]
180004953: movsxd  rcx, dword ptr [rax+4]
180004957: lea     r15, off_18000FC80
18000495E: mov     [rsp+rcx+190h+var_130], r15
180004963: mov     rax, [rsp+190h+var_130]
180004968: movsxd  rcx, dword ptr [rax+4]
18000496C: lea     edx, [rcx-98h]
180004972: mov     [rsp+rcx+190h+var_134], edx
180004976: lea     rcx, [rsp+190h+var_118]
18000497B: call    cs:??0?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAA@XZ; std::basic_streambuf<char,std::char_traits<char>>::basic_streambuf<char,std::char_traits<char>>(void)
180004981: lea     rax, off_18000FBD0
180004988: mov     [rsp+190h+var_118], rax
18000498D: mov     [rbp+90h+var_B0], r14
180004991: mov     [rbp+90h+var_A8], r14d
180004995: lea     rdx, aPortnotopenede; "PortNotOpenedException "
18000499C: lea     rcx, [rsp+190h+var_120]
1800049A1: call    sub_180006310
1800049A6: mov     rcx, rax
1800049A9: mov     rdx, rbx
1800049AC: call    sub_180006310
1800049B1: mov     rcx, rax
1800049B4: lea     rdx, aFailed; " failed."
1800049BB: call    sub_180006310
1800049C0: nop
1800049C1: mov     qword ptr [rsp+190h+var_158], r14
1800049C6: mov     edx, 0Fh
1800049CB: mov     qword ptr [rsp+190h+var_158+8], rdx
1800049D0: mov     byte ptr [rsp+190h+Block], r14b
1800049D5: mov     [rsp+190h+var_170], 5
1800049DD: mov     ecx, [rbp+90h+var_A8]
1800049E0: test    cl, 2
1800049E3: jnz     short loc_180004A06
1800049E5: mov     rax, [rbp+90h+var_D8]
1800049E9: mov     r8, [rax]
1800049EC: test    r8, r8
1800049EF: jz      short loc_180004A06
1800049F1: mov     rax, [rbp+90h+var_F8]
1800049F5: mov     rdx, [rax]
1800049F8: cmp     r8, [rbp+90h+var_B0]
1800049FC: cmovb   r8, [rbp+90h+var_B0]
180004A01: sub     r8, rdx
180004A04: jmp     short loc_180004A2B
180004A06: test    cl, 4
180004A09: jnz     short loc_180004A3A
180004A0B: mov     rax, [rbp+90h+var_E0]
180004A0F: mov     rcx, [rax]
180004A12: test    rcx, rcx
180004A15: jz      short loc_180004A3A
180004A17: mov     rax, [rbp+90h+var_100]
180004A1B: mov     rdx, [rax]; Src
180004A1E: mov     rax, [rbp+90h+var_C8]
180004A22: movsxd  r8, dword ptr [rax]
180004A25: sub     r8, rdx
180004A28: add     r8, rcx; Size
180004A2B: lea     rcx, [rsp+190h+Block]; void *
180004A30: call    sub_180002610
180004A35: mov     rdx, qword ptr [rsp+190h+var_158+8]
180004A3A: lea     rax, [rsp+190h+Block]
180004A3F: cmp     rdi, rax
180004A42: jz      short loc_180004A98
180004A44: mov     rdx, [rdi+18h]
180004A48: cmp     rdx, 10h
180004A4C: jb      short loc_180004A7A
180004A4E: mov     rcx, [rdi]
180004A51: inc     rdx
180004A54: cmp     rdx, 1000h
180004A5B: jb      short loc_180004A75
180004A5D: add     rdx, 27h ; '''
180004A61: mov     r8, [rcx-8]
180004A65: sub     rcx, r8
180004A68: lea     rax, [rcx-8]
180004A6C: cmp     rax, 1Fh
180004A70: ja      short loc_180004AC7
180004A72: mov     rcx, r8; Block
180004A75: call    j_j_free
180004A7A: mov     qword ptr [rdi+18h], 0Fh
180004A82: mov     byte ptr [rdi], 0
180004A85: movups  xmm0, xmmword ptr [rsp+190h+Block]
180004A8A: movups  xmmword ptr [rdi], xmm0
180004A8D: movups  xmm1, [rsp+190h+var_158]
180004A92: movups  xmmword ptr [rdi+10h], xmm1
180004A96: jmp     short loc_180004AD4
180004A98: cmp     rdx, 10h
180004A9C: jb      short loc_180004AD4
180004A9E: inc     rdx
180004AA1: mov     rcx, [rsp+190h+Block]; Block
180004AA6: mov     rax, rcx
180004AA9: cmp     rdx, 1000h
180004AB0: jb      short loc_180004ACE
180004AB2: add     rdx, 27h ; '''
180004AB6: mov     rcx, [rcx-8]
180004ABA: sub     rax, rcx
180004ABD: add     rax, 0FFFFFFFFFFFFFFF8h
180004AC1: cmp     rax, 1Fh
180004AC5: jbe     short loc_180004ACE
180004AC7: call    cs:_invalid_parameter_noinfo_noreturn
180004ACD: int     3; Trap to Debugger
180004ACE: call    j_j_free
180004AD3: nop
180004AD4: mov     rax, [rsp+190h+var_130]
180004AD9: movsxd  rcx, dword ptr [rax+4]
180004ADD: mov     [rsp+rcx+190h+var_130], r15
180004AE2: mov     rcx, [rsp+190h+var_130]
180004AE7: movsxd  rdx, dword ptr [rcx+4]
180004AEB: lea     r8d, [rdx-98h]
180004AF2: mov     [rsp+rdx+190h+var_134], r8d
180004AF7: lea     rcx, [rsp+190h+var_118]
180004AFC: call    sub_180005F90
180004B01: lea     rcx, [rbp+90h+var_110]
180004B05: call    cs:??1?$basic_iostream@DU?$char_traits@D@std@@@std@@UEAA@XZ; std::basic_iostream<char,std::char_traits<char>>::~basic_iostream<char,std::char_traits<char>>(void)
180004B0B: lea     rcx, [rbp+90h+var_98]
180004B0F: call    cs:??1?$basic_ios@DU?$char_traits@D@std@@@std@@UEAA@XZ; std::basic_ios<char,std::char_traits<char>>::~basic_ios<char,std::char_traits<char>>(void)
180004B15: nop
180004B16: mov     rax, rsi
180004B19: mov     rcx, [rbp+90h+var_30]
180004B1D: xor     rcx, rsp; StackCookie
180004B20: call    __security_check_cookie
180004B25: mov     rbx, [rsp+190h+arg_10]
180004B2D: add     rsp, 170h
180004B34: pop     r15
180004B36: pop     r14
180004B38: pop     rdi
180004B39: pop     rsi
180004B3A: pop     rbp
180004B3B: retn

### FUNC 180004B40 - 180004B75 (53 bytes) name=sub_180004B40
180004B40: mov     [rsp+arg_0], rcx
180004B45: push    rbx
180004B46: sub     rsp, 20h
180004B4A: mov     rbx, rcx
180004B4D: xorps   xmm0, xmm0
180004B50: movups  xmmword ptr [rcx+8], xmm0
180004B54: lea     rax, off_18000FCA8
180004B5B: mov     [rcx], rax
180004B5E: add     rdx, 18h
180004B62: add     rcx, 18h
180004B66: call    sub_180002E60
180004B6B: nop
180004B6C: mov     rax, rbx
180004B6F: add     rsp, 20h
180004B73: pop     rbx
180004B74: retn

### FUNC 180004B80 - 180004BFF (127 bytes) name=sub_180004B80
180004B80: push    rbx
180004B82: sub     rsp, 20h
180004B86: lea     rax, off_18000FCA8
180004B8D: mov     rbx, rcx
180004B90: mov     [rcx], rax
180004B93: mov     rdx, [rcx+30h]
180004B97: cmp     rdx, 10h
180004B9B: jb      short loc_180004BCA
180004B9D: mov     rcx, [rcx+18h]
180004BA1: inc     rdx
180004BA4: cmp     rdx, 1000h
180004BAB: jb      short loc_180004BC5
180004BAD: mov     r8, [rcx-8]
180004BB1: add     rdx, 27h ; '''
180004BB5: sub     rcx, r8
180004BB8: lea     rax, [rcx-8]
180004BBC: cmp     rax, 1Fh
180004BC0: ja      short loc_180004BF8
180004BC2: mov     rcx, r8; Block
180004BC5: call    j_j_free
180004BCA: lea     rax, off_18000F6D8
180004BD1: mov     qword ptr [rbx+28h], 0
180004BD9: mov     qword ptr [rbx+30h], 0Fh
180004BE1: lea     rcx, [rbx+8]
180004BE5: mov     byte ptr [rbx+18h], 0
180004BE9: mov     [rbx], rax
180004BEC: add     rsp, 20h
180004BF0: pop     rbx
180004BF1: jmp     cs:__std_exception_destroy
180004BF8: call    cs:_invalid_parameter_noinfo_noreturn
180004BFE: db 0CCh

### FUNC 180004C00 - 180004CA0 (160 bytes) name=sub_180004C00
180004C00: mov     [rsp+arg_8], rbx
180004C05: push    rdi
180004C06: sub     rsp, 20h
180004C0A: lea     rax, off_18000FCA8
180004C11: mov     edi, edx
180004C13: mov     [rcx], rax
180004C16: mov     rbx, rcx
180004C19: mov     rdx, [rcx+30h]
180004C1D: cmp     rdx, 10h
180004C21: jb      short loc_180004C50
180004C23: mov     rcx, [rcx+18h]
180004C27: inc     rdx
180004C2A: cmp     rdx, 1000h
180004C31: jb      short loc_180004C4B
180004C33: mov     r8, [rcx-8]
180004C37: add     rdx, 27h ; '''
180004C3B: sub     rcx, r8
180004C3E: lea     rax, [rcx-8]
180004C42: cmp     rax, 1Fh
180004C46: ja      short loc_180004C99
180004C48: mov     rcx, r8; Block
180004C4B: call    j_j_free
180004C50: lea     rax, off_18000F6D8
180004C57: mov     qword ptr [rbx+28h], 0
180004C5F: mov     qword ptr [rbx+30h], 0Fh
180004C67: lea     rcx, [rbx+8]
180004C6B: mov     byte ptr [rbx+18h], 0
180004C6F: mov     [rbx], rax
180004C72: call    cs:__std_exception_destroy
180004C78: test    dil, 1
180004C7C: jz      short loc_180004C8B
180004C7E: mov     edx, 38h ; '8'
180004C83: mov     rcx, rbx; Block
180004C86: call    j_j_free
180004C8B: mov     rax, rbx
180004C8E: mov     rbx, [rsp+28h+arg_8]
180004C93: add     rsp, 20h
180004C97: pop     rdi
180004C98: retn
180004C99: call    cs:_invalid_parameter_noinfo_noreturn
180004C9F: align 20h

### FUNC 180004CA0 - 180004F8A (746 bytes) name=sub_180004CA0
180004CA0: mov     [rsp+arg_10], rbx
180004CA5: mov     [rsp+arg_18], rbp
180004CAA: push    rsi
180004CAB: push    rdi
180004CAC: push    r12
180004CAE: push    r14
180004CB0: push    r15
180004CB2: sub     rsp, 40h
180004CB6: mov     rdi, rdx
180004CB9: mov     rbx, rcx
180004CBC: mov     [rsp+68h+var_30], rcx
180004CC1: xor     esi, esi
180004CC3: mov     [rsp+68h+var_38], esi
180004CC7: mov     ecx, cs:TlsIndex
180004CCD: mov     rax, gs:58h
180004CD6: mov     r8d, 4
180004CDC: mov     rdx, [rax+rcx*8]
180004CE0: lea     ebp, [rsi+7]
180004CE3: lea     r15, Src
180004CEA: mov     eax, [r8+rdx]
180004CEE: cmp     cs:dword_1800160E0, eax
180004CF4: jle     short loc_180004D4C
180004CF6: lea     rcx, dword_1800160E0
180004CFD: call    _Init_thread_header
180004D02: cmp     cs:dword_1800160E0, 0FFFFFFFFh
180004D09: jnz     short loc_180004D4C
180004D0B: mov     cs:qword_1800160D0, rsi
180004D12: mov     cs:qword_1800160D8, rbp
180004D19: mov     word ptr cs:Src, si
180004D20: lea     r8d, [rsi+4]
180004D24: lea     rdx, asc_18000F878; "\\\\.\\"
180004D2B: mov     rcx, r15; void *
180004D2E: call    sub_180003830
180004D33: lea     rcx, sub_18000E680; void (__cdecl *)()
180004D3A: call    atexit
180004D3F: nop
180004D40: lea     rcx, dword_1800160E0
180004D47: call    _Init_thread_footer
180004D4C: mov     rcx, r15
180004D4F: cmp     cs:qword_1800160D8, 8
180004D57: cmovnb  rcx, cs:Src
180004D5F: mov     r8, rdi
180004D62: cmp     qword ptr [rdi+18h], 8
180004D67: jb      short loc_180004D6C
180004D69: mov     r8, [rdi]
180004D6C: mov     r9, cs:qword_1800160D0
180004D73: lea     r12, [rdi+10h]
180004D77: mov     r10, [r12]
180004D7B: mov     rdx, r10
180004D7E: cmp     r9, r10
180004D81: cmovb   rdx, r9
180004D85: test    rdx, rdx
180004D88: jz      short loc_180004DA8
180004D8A: sub     r8, rcx
180004D8D: nop     dword ptr [rax]
180004D90: movzx   eax, word ptr [rcx]
180004D93: cmp     [r8+rcx], ax
180004D98: jnz     loc_180004E80
180004D9E: add     rcx, 2
180004DA2: sub     rdx, 1
180004DA6: jnz     short loc_180004D90
180004DA8: cmp     r10, r9
180004DAB: jb      loc_180004E80
180004DB1: ja      loc_180004E80
180004DB7: mov     [rbx+10h], rsi
180004DBB: mov     [rbx+18h], rsi
180004DBF: mov     r14, [r12]
180004DC3: cmp     qword ptr [rdi+18h], 8
180004DC8: jb      short loc_180004DCD
180004DCA: mov     rdi, [rdi]
180004DCD: cmp     r14, 8
180004DD1: jnb     short loc_180004DE6
180004DD3: movups  xmm0, xmmword ptr [rdi]
180004DD6: movups  xmmword ptr [rbx], xmm0
180004DD9: mov     [rbx+10h], r14
180004DDD: mov     [rbx+18h], rbp
180004DE1: jmp     loc_180004F68
180004DE6: mov     rbp, r14
180004DE9: or      rbp, 7
180004DED: mov     rax, 7FFFFFFFFFFFFFFEh
180004DF7: cmp     rbp, rax
180004DFA: cmova   rbp, rax
180004DFE: lea     rcx, [rbp+1]
180004E02: mov     rax, 7FFFFFFFFFFFFFFFh
180004E0C: cmp     rcx, rax
180004E0F: ja      loc_180004F84
180004E15: add     rcx, rcx; Size
180004E18: cmp     rcx, 1000h
180004E1F: jb      short loc_180004E50
180004E21: lea     rax, [rcx+27h]
180004E25: cmp     rax, rcx
180004E28: jbe     loc_180004F84
180004E2E: mov     rcx, rax; Size
180004E31: call    ??2@YAPEAX_K@Z; operator new(unsigned __int64)
180004E36: test    rax, rax
180004E39: jz      short loc_180004E49
180004E3B: lea     rsi, [rax+27h]
180004E3F: and     rsi, 0FFFFFFFFFFFFFFE0h
180004E43: mov     [rsi-8], rax
180004E47: jmp     short loc_180004E5D
180004E49: call    cs:_invalid_parameter_noinfo_noreturn
180004E4F: int     3; Trap to Debugger
180004E50: test    rcx, rcx
180004E53: jz      short loc_180004E5D
180004E55: call    ??2@YAPEAX_K@Z; operator new(unsigned __int64)
180004E5A: mov     rsi, rax
180004E5D: mov     [rbx], rsi
180004E60: lea     r8, ds:2[r14*2]; Size
180004E68: mov     rdx, rdi; Src
180004E6B: mov     rcx, rsi; void *
180004E6E: call    memcpy
180004E73: mov     [rbx+10h], r14
180004E77: mov     [rbx+18h], rbp
180004E7B: jmp     loc_180004F68
180004E80: mov     [rbx+10h], rsi
180004E84: mov     [rbx+18h], rbp
180004E88: mov     [rbx], si
180004E8B: mov     [rsp+68h+var_38], 2
180004E93: mov     rdx, cs:qword_1800160D0
180004E9A: add     rdx, [r12]
180004E9E: mov     rcx, rbx
180004EA1: call    sub_180006860
180004EA6: cmp     cs:qword_1800160D8, 8
180004EAE: cmovnb  r15, cs:Src
180004EB6: mov     rdx, cs:qword_1800160D0
180004EBD: mov     rcx, [rbx+10h]
180004EC1: mov     r8, [rbx+18h]
180004EC5: mov     rax, r8
180004EC8: sub     rax, rcx
180004ECB: cmp     rdx, rax
180004ECE: ja      short loc_180004EFB
180004ED0: lea     rbp, [rcx+rdx]
180004ED4: mov     [rbx+10h], rbp
180004ED8: mov     r14, rbx
180004EDB: cmp     r8, 8
180004EDF: jb      short loc_180004EE4
180004EE1: mov     r14, [rbx]
180004EE4: lea     r8, [rdx+rdx]; Size
180004EE8: lea     rcx, [r14+rcx*2]; void *
180004EEC: mov     rdx, r15; Src
180004EEF: call    memmove
180004EF4: mov     [r14+rbp*2], si
180004EF9: jmp     short loc_180004F0B
180004EFB: mov     [rsp+68h+var_48], rdx; __int64
180004F00: mov     r9, r15
180004F03: mov     rcx, rbx; Src
180004F06: call    sub_1800066A0
180004F0B: cmp     qword ptr [rdi+18h], 8
180004F10: jb      short loc_180004F15
180004F12: mov     rdi, [rdi]
180004F15: mov     rdx, [r12]
180004F19: mov     rcx, [rbx+10h]
180004F1D: mov     r8, [rbx+18h]
180004F21: mov     rax, r8
180004F24: sub     rax, rcx
180004F27: cmp     rdx, rax
180004F2A: ja      short loc_180004F57
180004F2C: lea     rbp, [rcx+rdx]
180004F30: mov     [rbx+10h], rbp
180004F34: mov     r14, rbx
180004F37: cmp     r8, 8
180004F3B: jb      short loc_180004F40
180004F3D: mov     r14, [rbx]
180004F40: lea     r8, [rdx+rdx]; Size
180004F44: lea     rcx, [r14+rcx*2]; void *
180004F48: mov     rdx, rdi; Src
180004F4B: call    memmove
180004F50: mov     [r14+rbp*2], si
180004F55: jmp     short loc_180004F68
180004F57: mov     [rsp+68h+var_48], rdx; __int64
180004F5C: mov     r9, rdi
180004F5F: mov     rcx, rbx; Src
180004F62: call    sub_1800066A0
180004F67: nop
180004F68: mov     rax, rbx
180004F6B: lea     r11, [rsp+68h+var_28]
180004F70: mov     rbx, [r11+40h]
180004F74: mov     rbp, [r11+48h]
180004F78: mov     rsp, r11
180004F7B: pop     r15
180004F7D: pop     r14
180004F7F: pop     r12
180004F81: pop     rdi
180004F82: pop     rsi
180004F83: retn
180004F84: call    ?cancel_current_task@Concurrency@@YAXXZ; Concurrency::cancel_current_task(void)
180004F89: db 0CCh

### FUNC 180004F90 - 18000503B (171 bytes) name=sub_180004F90
180004F90: mov     [rsp+arg_8], rbx
180004F95: push    rdi
180004F96: sub     rsp, 20h
180004F9A: mov     edi, edx
180004F9C: mov     rbx, rcx
180004F9F: lea     rax, off_18000FCC8
180004FA6: mov     [rcx], rax
180004FA9: call    sub_180005790
180004FAE: nop
180004FAF: mov     rcx, [rbx+60h]; hObject
180004FB3: call    cs:CloseHandle
180004FB9: nop
180004FBA: mov     rcx, [rbx+68h]; hObject
180004FBE: call    cs:CloseHandle
180004FC4: nop
180004FC5: mov     rdx, [rbx+20h]
180004FC9: cmp     rdx, 8
180004FCD: jb      short loc_180005002
180004FCF: mov     rcx, [rbx+8]
180004FD3: lea     rdx, ds:2[rdx*2]
180004FDB: cmp     rdx, 1000h
180004FE2: jb      short loc_180004FFC
180004FE4: add     rdx, 27h ; '''
180004FE8: mov     r8, [rcx-8]
180004FEC: sub     rcx, r8
180004FEF: lea     rax, [rcx-8]
180004FF3: cmp     rax, 1Fh
180004FF7: ja      short loc_180005034
180004FF9: mov     rcx, r8; Block
180004FFC: call    j_j_free
180005001: nop
180005002: xor     eax, eax
180005004: mov     [rbx+18h], rax
180005008: mov     qword ptr [rbx+20h], 7
180005010: mov     [rbx+8], ax
180005014: test    dil, 1
180005018: jz      short loc_180005026
18000501A: lea     edx, [rax+70h]
18000501D: mov     rcx, rbx; Block
180005020: call    j_j_free
180005025: nop
180005026: mov     rax, rbx
180005029: mov     rbx, [rsp+28h+arg_8]
18000502E: add     rsp, 20h
180005032: pop     rdi
180005033: retn
180005034: call    cs:_invalid_parameter_noinfo_noreturn
18000503A: nop

### FUNC 180005040 - 18000533D (765 bytes) name=sub_180005040
180005040: mov     [rsp-8+arg_8], rbx
180005045: mov     [rsp-8+arg_10], rsi
18000504A: mov     [rsp-8+arg_18], rdi
18000504F: push    rbp
180005050: lea     rbp, [rsp-150h]
180005058: sub     rsp, 250h
18000505F: mov     rax, cs:__security_cookie
180005066: xor     rax, rsp
180005069: mov     [rbp+150h+var_10], rax
180005070: mov     rbx, rcx
180005073: xor     esi, esi
180005075: mov     [rsp+250h+var_210], esi
180005079: cmp     [rcx+18h], rsi
18000507D: jz      loc_1800052FE
180005083: cmp     byte ptr [rcx+30h], 1
180005087: jz      loc_180005321
18000508D: lea     rdx, [rcx+8]; void *
180005091: lea     rcx, [rbp+150h+lpFileName]; Src
180005095: call    sub_180004CA0
18000509A: nop
18000509B: lea     rcx, [rbp+150h+lpFileName]
18000509F: cmp     [rbp+150h+var_118], 8
1800050A4: cmovnb  rcx, [rbp+150h+lpFileName]; lpFileName
1800050A9: mov     [rsp+250h+hTemplateFile], rsi; hTemplateFile
1800050AE: mov     [rsp+250h+dwFlagsAndAttributes], 80h; dwFlagsAndAttributes
1800050B6: mov     [rsp+250h+dwCreationDisposition], 3; dwCreationDisposition
1800050BE: xor     r9d, r9d; lpSecurityAttributes
1800050C1: xor     r8d, r8d; dwShareMode
1800050C4: mov     edx, 0C0000000h; dwDesiredAccess
1800050C9: call    cs:CreateFileW
1800050CF: mov     [rbx+28h], rax
1800050D3: cmp     rax, 0FFFFFFFFFFFFFFFFh
1800050D7: jnz     loc_180005187
1800050DD: call    cs:GetLastError
1800050E3: mov     edi, eax
1800050E5: xor     edx, edx; Val
1800050E7: mov     r8d, 0F8h; Size
1800050ED: lea     rcx, [rbp+150h+var_110]; void *
1800050F1: call    memset
1800050F6: lea     rax, unk_18000FCB8
1800050FD: mov     [rbp+150h+var_110], rax
180005101: lea     rax, unk_18000FBA8
180005108: mov     [rbp+150h+var_100], rax
18000510C: lea     rcx, [rbp+150h+var_78]
180005113: call    cs:??0?$basic_ios@DU?$char_traits@D@std@@@std@@IEAA@XZ; std::basic_ios<char,std::char_traits<char>>::basic_ios<char,std::char_traits<char>>(void)
180005119: nop
18000511A: mov     [rsp+250h+var_210], 1
180005122: xor     r8d, r8d
180005125: lea     rdx, [rbp+150h+var_F8]
180005129: lea     rcx, [rbp+150h+var_110]
18000512D: call    cs:??0?$basic_iostream@DU?$char_traits@D@std@@@std@@QEAA@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z; std::basic_iostream<char,std::char_traits<char>>::basic_iostream<char,std::char_traits<char>>(std::basic_streambuf<char,std::char_traits<char>> *)
180005133: nop
180005134: mov     rax, [rbp+150h+var_110]
180005138: movsxd  rcx, dword ptr [rax+4]
18000513C: lea     rax, off_18000FC80
180005143: mov     [rbp+rcx+150h+var_110], rax
180005148: mov     rax, [rbp+150h+var_110]
18000514C: movsxd  rcx, dword ptr [rax+4]
180005150: lea     edx, [rcx-98h]
180005156: mov     dword ptr [rbp+rcx+150h+var_118+4], edx
18000515A: lea     rcx, [rbp+150h+var_F8]
18000515E: call    cs:??0?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAA@XZ; std::basic_streambuf<char,std::char_traits<char>>::basic_streambuf<char,std::char_traits<char>>(void)
180005164: lea     rax, off_18000FBD0
18000516B: mov     [rbp+150h+var_F8], rax
18000516F: mov     [rbp+150h+var_90], rsi
180005176: mov     [rbp+150h+var_88], esi
18000517C: cmp     edi, 2
18000517F: jnz     loc_180005293
180005185: jmp     short loc_1800051FE
180005187: mov     rcx, rbx
18000518A: call    sub_1800053C0
18000518F: mov     byte ptr [rbx+30h], 1
180005193: mov     rdx, [rbp+150h+var_118]
180005197: cmp     rdx, 8
18000519B: jb      short loc_1800051D6
18000519D: lea     rdx, ds:2[rdx*2]
1800051A5: mov     rcx, [rbp+150h+lpFileName]; Block
1800051A9: mov     rax, rcx
1800051AC: cmp     rdx, 1000h
1800051B3: jb      short loc_1800051D1
1800051B5: add     rdx, 27h ; '''
1800051B9: mov     rcx, [rcx-8]
1800051BD: sub     rax, rcx
1800051C0: add     rax, 0FFFFFFFFFFFFFFF8h
1800051C4: cmp     rax, 1Fh
1800051C8: jbe     short loc_1800051D1
1800051CA: call    cs:_invalid_parameter_noinfo_noreturn
1800051D0: int     3; Trap to Debugger
1800051D1: call    j_j_free
1800051D6: mov     rcx, [rbp+150h+var_10]
1800051DD: xor     rcx, rsp; StackCookie
1800051E0: call    __security_check_cookie
1800051E5: lea     r11, [rsp+250h+var_s0]
1800051ED: mov     rbx, [r11+18h]
1800051F1: mov     rsi, [r11+20h]
1800051F5: mov     rdi, [r11+28h]
1800051F9: mov     rsp, r11
1800051FC: pop     rbp
1800051FD: retn
1800051FE: lea     rdx, [rsp+250h+var_200]
180005203: mov     rcx, rbx
180005206: call    sub_1800059C0
18000520B: mov     rbx, rax
18000520E: lea     rdx, aSpecifiedPort; "Specified port, "
180005215: lea     rcx, [rbp+150h+var_100]
180005219: call    sub_180006310
18000521E: mov     rcx, rax
180005221: mov     rdx, rbx
180005224: call    unknown_libname_19; Microsoft VisualC v14 64bit runtime
180005229: mov     rcx, rax
18000522C: lea     rdx, aDoesNotExist; ", does not exist."
180005233: call    sub_180006310
180005238: nop
180005239: lea     rcx, [rsp+250h+var_200]
18000523E: call    sub_1800024B0
180005243: lea     rdx, [rsp+250h+var_1E0]
180005248: lea     rcx, [rbp+150h+var_110]
18000524C: call    sub_180006050
180005251: mov     rbx, rax
180005254: lea     rdx, aCUsersDerekSou; "C:\\Users\\Derek\\source\\repos\\EloThe"...
18000525B: lea     rcx, [rsp+250h+var_200]
180005260: call    sub_180002510
180005265: mov     rdx, rax
180005268: mov     rcx, rbx
18000526B: call    sub_1800061B0
180005270: mov     r9, rax
180005273: mov     r8d, 53h ; 'S'
180005279: lea     rcx, [rbp+150h+pExceptionObject]
18000527D: call    sub_180004310
180005282: lea     rdx, stru_1800134B8; pThrowInfo
180005289: lea     rcx, [rbp+150h+pExceptionObject]; pExceptionObject
18000528D: call    _CxxThrowException
180005292: db 90h
180005293: lea     rdx, aUnknownErrorOp; "Unknown error opening the serial port: "
18000529A: lea     rcx, [rbp+150h+var_100]
18000529E: call    sub_180006310
1800052A3: mov     rcx, rax
1800052A6: mov     edx, edi
1800052A8: call    cs:??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@K@Z; std::basic_ostream<char,std::char_traits<char>>::operator<<(ulong)
1800052AE: lea     rdx, [rsp+250h+var_1E0]
1800052B3: lea     rcx, [rbp+150h+var_110]
1800052B7: call    sub_180006050
1800052BC: mov     rbx, rax
1800052BF: lea     rdx, aCUsersDerekSou; "C:\\Users\\Derek\\source\\repos\\EloThe"...
1800052C6: lea     rcx, [rsp+250h+var_200]
1800052CB: call    sub_180002510
1800052D0: mov     rdx, rax
1800052D3: mov     rcx, rbx
1800052D6: call    sub_1800061B0
1800052DB: mov     r9, rax
1800052DE: mov     r8d, 56h ; 'V'
1800052E4: lea     rcx, [rbp+150h+pExceptionObject]
1800052E8: call    sub_180004310
1800052ED: lea     rdx, stru_1800134B8; pThrowInfo
1800052F4: lea     rcx, [rbp+150h+pExceptionObject]; pExceptionObject
1800052F8: call    _CxxThrowException
1800052FD: align 2
1800052FE: lea     rdx, aEmptyPortIsInv; "Empty port is invalid."
180005305: lea     rcx, [rsp+250h+var_200]
18000530A: call    sub_180003E20
18000530F: lea     rdx, stru_180013448; pThrowInfo
180005316: lea     rcx, [rsp+250h+var_200]; pExceptionObject
18000531B: call    _CxxThrowException
180005320: db 0CCh
180005321: lea     rcx, [rsp+250h+var_1E0]
180005326: call    sub_180003E90
18000532B: lea     rdx, stru_1800133A0; pThrowInfo
180005332: lea     rcx, [rsp+250h+var_1E0]; pExceptionObject
180005337: call    _CxxThrowException
18000533C: db 0CCh

### FUNC 180005340 - 18000537D (61 bytes) name=sub_180005340
180005340: push    rbx
180005342: sub     rsp, 20h
180005346: mov     rbx, rcx
180005349: mov     rax, rdx
18000534C: lea     rcx, off_18000F6D8
180005353: xorps   xmm0, xmm0
180005356: lea     rdx, [rbx+8]
18000535A: mov     [rbx], rcx
18000535D: lea     rcx, [rax+8]
180005361: movups  xmmword ptr [rdx], xmm0
180005364: call    cs:__std_exception_copy
18000536A: lea     rax, off_18000FC50
180005371: mov     [rbx], rax
180005374: mov     rax, rbx
180005377: add     rsp, 20h
18000537B: pop     rbx
18000537C: retn

### FUNC 180005380 - 1800053BD (61 bytes) name=sub_180005380
180005380: push    rbx
180005382: sub     rsp, 20h
180005386: mov     rbx, rcx
180005389: mov     rax, rdx
18000538C: lea     rcx, off_18000F6D8
180005393: xorps   xmm0, xmm0
180005396: lea     rdx, [rbx+8]
18000539A: mov     [rbx], rcx
18000539D: lea     rcx, [rax+8]
1800053A1: movups  xmmword ptr [rdx], xmm0
1800053A4: call    cs:__std_exception_copy
1800053AA: lea     rax, off_18000FBB8
1800053B1: mov     [rbx], rax
1800053B4: mov     rax, rbx
1800053B7: add     rsp, 20h
1800053BB: pop     rbx
1800053BC: retn

### FUNC 1800053C0 - 18000578F (975 bytes) name=sub_1800053C0
1800053C0: mov     [rsp-8+arg_8], rbx
1800053C5: push    rbp
1800053C6: lea     rbp, [rsp-57h]
1800053CB: sub     rsp, 100h
1800053D2: mov     rax, cs:__security_cookie
1800053D9: xor     rax, rsp
1800053DC: mov     [rbp+57h+var_8], rax
1800053E0: mov     rbx, rcx
1800053E3: mov     rcx, [rcx+28h]; hFile
1800053E7: cmp     rcx, 0FFFFFFFFFFFFFFFFh
1800053EB: jz      loc_180005657
1800053F1: xorps   xmm0, xmm0
1800053F4: mov     qword ptr [rbp+57h+DCB.StopBits], 0
1800053FC: lea     rdx, [rbp+57h+DCB]; lpDCB
180005400: mov     [rbp+57h+DCB.DCBlength], 1Ch
180005407: movdqu  xmmword ptr [rbp+57h+DCB.BaudRate], xmm0
18000540C: call    cs:GetCommState
180005412: test    eax, eax
180005414: jz      loc_180005692
18000541A: mov     eax, [rbx+48h]
18000541D: cmp     eax, 3840h
180005422: ja      loc_1800054AB
180005428: jz      short loc_1800054A2
18000542A: cmp     eax, 4B0h
18000542F: ja      short loc_180005476
180005431: jz      short loc_18000546A
180005433: cmp     eax, 6Eh ; 'n'
180005436: jz      short loc_18000545E
180005438: cmp     eax, 12Ch
18000543D: jz      short loc_180005452
18000543F: cmp     eax, 258h
180005444: jnz     loc_1800054F7
18000544A: mov     [rbp+57h+DCB.BaudRate], eax
18000544D: jmp     loc_18000550C
180005452: mov     [rbp+57h+DCB.BaudRate], 12Ch
180005459: jmp     loc_18000550C
18000545E: mov     [rbp+57h+DCB.BaudRate], 6Eh ; 'n'
180005465: jmp     loc_18000550C
18000546A: mov     [rbp+57h+DCB.BaudRate], 4B0h
180005471: jmp     loc_18000550C
180005476: cmp     eax, 960h
18000547B: jz      short loc_180005499
18000547D: cmp     eax, 12C0h
180005482: jz      short loc_180005490
180005484: cmp     eax, 2580h
180005489: jnz     short loc_1800054F7
18000548B: mov     [rbp+57h+DCB.BaudRate], eax
18000548E: jmp     short loc_18000550C
180005490: mov     [rbp+57h+DCB.BaudRate], 12C0h
180005497: jmp     short loc_18000550C
180005499: mov     [rbp+57h+DCB.BaudRate], 960h
1800054A0: jmp     short loc_18000550C
1800054A2: mov     [rbp+57h+DCB.BaudRate], 3840h
1800054A9: jmp     short loc_18000550C
1800054AB: cmp     eax, 1C200h
1800054B0: ja      short loc_1800054E9
1800054B2: jz      short loc_1800054E0
1800054B4: cmp     eax, 4B00h
1800054B9: jz      short loc_1800054D7
1800054BB: cmp     eax, 9600h
1800054C0: jz      short loc_1800054CE
1800054C2: cmp     eax, 0E100h
1800054C7: jnz     short loc_1800054F7
1800054C9: mov     [rbp+57h+DCB.BaudRate], eax
1800054CC: jmp     short loc_18000550C
1800054CE: mov     [rbp+57h+DCB.BaudRate], 9600h
1800054D5: jmp     short loc_18000550C
1800054D7: mov     [rbp+57h+DCB.BaudRate], 4B00h
1800054DE: jmp     short loc_18000550C
1800054E0: mov     [rbp+57h+DCB.BaudRate], 1C200h
1800054E7: jmp     short loc_18000550C
1800054E9: cmp     eax, 1F400h
1800054EE: jz      short loc_180005505
1800054F0: cmp     eax, 3E800h
1800054F5: jz      short loc_1800054FC
1800054F7: mov     [rbp+57h+DCB.BaudRate], eax
1800054FA: jmp     short loc_18000550C
1800054FC: mov     [rbp+57h+DCB.BaudRate], 3E800h
180005503: jmp     short loc_18000550C
180005505: mov     [rbp+57h+DCB.BaudRate], 1F400h
18000550C: mov     eax, [rbx+50h]
18000550F: cmp     eax, 8
180005512: jnz     short loc_180005519
180005514: mov     [rbp+57h+DCB.ByteSize], al
180005517: jmp     short loc_180005539
180005519: cmp     eax, 7
18000551C: jnz     short loc_180005523
18000551E: mov     [rbp+57h+DCB.ByteSize], al
180005521: jmp     short loc_180005539
180005523: cmp     eax, 6
180005526: jnz     short loc_18000552D
180005528: mov     [rbp+57h+DCB.ByteSize], al
18000552B: jmp     short loc_180005539
18000552D: cmp     eax, 5
180005530: jnz     loc_180005634
180005536: mov     [rbp+57h+DCB.ByteSize], al
180005539: mov     eax, [rbx+54h]
18000553C: cmp     eax, 1
18000553F: jnz     short loc_180005547
180005541: mov     [rbp+57h+DCB.StopBits], 0
180005545: jmp     short loc_18000555E
180005547: cmp     eax, 3
18000554A: jnz     short loc_180005552
18000554C: mov     [rbp+57h+DCB.StopBits], 1
180005550: jmp     short loc_18000555E
180005552: cmp     eax, 2
180005555: jnz     loc_18000576C
18000555B: mov     [rbp+57h+DCB.StopBits], al
18000555E: mov     eax, [rbx+4Ch]
180005561: test    eax, eax
180005563: jnz     short loc_18000556A
180005565: mov     [rbp+57h+DCB.Parity], al
180005568: jmp     short loc_180005594
18000556A: cmp     eax, 2
18000556D: jnz     short loc_180005574
18000556F: mov     [rbp+57h+DCB.Parity], al
180005572: jmp     short loc_180005594
180005574: cmp     eax, 1
180005577: jnz     short loc_18000557E
180005579: mov     [rbp+57h+DCB.Parity], al
18000557C: jmp     short loc_180005594
18000557E: cmp     eax, 3
180005581: jnz     short loc_180005588
180005583: mov     [rbp+57h+DCB.Parity], al
180005586: jmp     short loc_180005594
180005588: cmp     eax, 4
18000558B: jnz     loc_180005749
180005591: mov     [rbp+57h+DCB.Parity], al
180005594: mov     eax, [rbx+58h]
180005597: test    eax, eax
180005599: jnz     short loc_1800055A4
18000559B: and     dword ptr [rbp+57h+DCB.fBinary], 0FFFFCCFBh
1800055A2: jmp     short loc_1800055CD
1800055A4: cmp     eax, 1
1800055A7: jnz     short loc_1800055B8
1800055A9: mov     eax, dword ptr [rbp+57h+DCB.fBinary]
1800055AC: and     eax, 0FFFFCFFBh
1800055B1: or      eax, 300h
1800055B6: jmp     short loc_1800055CA
1800055B8: cmp     eax, 2
1800055BB: jnz     short loc_1800055CD
1800055BD: mov     eax, dword ptr [rbp+57h+DCB.fBinary]
1800055C0: and     eax, 0FFFFECFFh
1800055C5: or      eax, 2004h
1800055CA: mov     dword ptr [rbp+57h+DCB.fBinary], eax
1800055CD: mov     rcx, [rbx+28h]; hFile
1800055D1: lea     rdx, [rbp+57h+DCB]; lpDCB
1800055D5: call    cs:SetCommState
1800055DB: mov     rcx, [rbx+28h]; hObject
1800055DF: test    eax, eax
1800055E1: jz      loc_1800056CD
1800055E7: mov     eax, [rbx+34h]
1800055EA: lea     rdx, [rbp+57h+CommTimeouts]; lpCommTimeouts
1800055EE: mov     [rbp+57h+CommTimeouts.ReadIntervalTimeout], eax
1800055F1: mov     eax, [rbx+38h]
1800055F4: mov     [rbp+57h+CommTimeouts.ReadTotalTimeoutConstant], eax
1800055F7: mov     eax, [rbx+3Ch]
1800055FA: mov     [rbp+57h+CommTimeouts.ReadTotalTimeoutMultiplier], eax
1800055FD: mov     eax, [rbx+40h]
180005600: mov     [rbp+57h+CommTimeouts.WriteTotalTimeoutConstant], eax
180005603: mov     eax, [rbx+44h]
180005606: mov     [rbp+57h+CommTimeouts.WriteTotalTimeoutMultiplier], eax
180005609: call    cs:SetCommTimeouts
18000560F: test    eax, eax
180005611: jz      loc_18000570E
180005617: mov     rcx, [rbp+57h+var_8]
18000561B: xor     rcx, rsp; StackCookie
18000561E: call    __security_check_cookie
180005623: mov     rbx, [rsp+100h+arg_8]
18000562B: add     rsp, 100h
180005632: pop     rbp
180005633: retn
180005634: lea     rdx, aInvalidCharLen; "invalid char len"
18000563B: lea     rcx, [rsp+100h+pExceptionObject]
180005640: call    sub_180003E20
180005645: lea     rdx, stru_180013448; pThrowInfo
18000564C: lea     rcx, [rsp+100h+pExceptionObject]; pExceptionObject
180005651: call    _CxxThrowException
180005656: db 0CCh
180005657: lea     rdx, aCUsersDerekSou; "C:\\Users\\Derek\\source\\repos\\EloThe"...
18000565E: lea     rcx, [rsp+100h+pExceptionObject]
180005663: call    sub_180002510
180005668: lea     r9, aInvalidFileDes; "Invalid file descriptor, is the serial "...
18000566F: mov     r8d, 63h ; 'c'
180005675: mov     rdx, rax
180005678: lea     rcx, [rbp+57h+var_B0]
18000567C: call    sub_180004310
180005681: lea     rdx, stru_1800134B8; pThrowInfo
180005688: lea     rcx, [rbp+57h+var_B0]; pExceptionObject
18000568C: call    _CxxThrowException
180005691: align 2
180005692: lea     rdx, aCUsersDerekSou; "C:\\Users\\Derek\\source\\repos\\EloThe"...
180005699: lea     rcx, [rsp+100h+pExceptionObject]
18000569E: call    sub_180002510
1800056A3: lea     r9, aErrorGettingTh; "Error getting the serial port state."
1800056AA: mov     r8d, 6Ch ; 'l'
1800056B0: mov     rdx, rax
1800056B3: lea     rcx, [rbp+57h+var_B0]
1800056B7: call    sub_180004310
1800056BC: lea     rdx, stru_1800134B8; pThrowInfo
1800056C3: lea     rcx, [rbp+57h+var_B0]; pExceptionObject
1800056C7: call    _CxxThrowException
1800056CC: db 0CCh
1800056CD: call    cs:CloseHandle
1800056D3: lea     rdx, aCUsersDerekSou; "C:\\Users\\Derek\\source\\repos\\EloThe"...
1800056DA: lea     rcx, [rsp+100h+pExceptionObject]
1800056DF: call    sub_180002510
1800056E4: lea     r9, aErrorSettingSe; "Error setting serial port settings."
1800056EB: mov     r8d, 106h
1800056F1: mov     rdx, rax
1800056F4: lea     rcx, [rbp+57h+var_B0]
1800056F8: call    sub_180004310
1800056FD: lea     rdx, stru_1800134B8; pThrowInfo
180005704: lea     rcx, [rbp+57h+var_B0]; pExceptionObject
180005708: call    _CxxThrowException
18000570D: align 2
18000570E: lea     rdx, aCUsersDerekSou; "C:\\Users\\Derek\\source\\repos\\EloThe"...
180005715: lea     rcx, [rsp+100h+pExceptionObject]
18000571A: call    sub_180002510
18000571F: lea     r9, aErrorSettingTi; "Error setting timeouts."
180005726: mov     r8d, 111h
18000572C: mov     rdx, rax
18000572F: lea     rcx, [rbp+57h+var_B0]
180005733: call    sub_180004310
180005738: lea     rdx, stru_1800134B8; pThrowInfo
18000573F: lea     rcx, [rbp+57h+var_B0]; pExceptionObject
180005743: call    _CxxThrowException
180005748: db 0CCh
180005749: lea     rdx, aInvalidParity; "invalid parity"
180005750: lea     rcx, [rsp+100h+pExceptionObject]
180005755: call    sub_180003E20
18000575A: lea     rdx, stru_180013448; pThrowInfo
180005761: lea     rcx, [rsp+100h+pExceptionObject]; pExceptionObject
180005766: call    _CxxThrowException
18000576B: align 4
18000576C: lea     rdx, aInvalidStopBit; "invalid stop bit"
180005773: lea     rcx, [rsp+100h+pExceptionObject]
180005778: call    sub_180003E20
18000577D: lea     rdx, stru_180013448; pThrowInfo
180005784: lea     rcx, [rsp+100h+pExceptionObject]; pExceptionObject
180005789: call    _CxxThrowException
18000578E: db 0CCh

### FUNC 180005790 - 180005885 (245 bytes) name=sub_180005790
180005790: push    rbx
180005792: sub     rsp, 1F0h
180005799: mov     rax, cs:__security_cookie
1800057A0: xor     rax, rsp
1800057A3: mov     [rsp+1F8h+var_18], rax
1800057AB: mov     rbx, rcx
1800057AE: cmp     byte ptr [rcx+30h], 1
1800057B2: jnz     short loc_1800057D4
1800057B4: mov     rcx, [rcx+28h]; hObject
1800057B8: cmp     rcx, 0FFFFFFFFFFFFFFFFh
1800057BC: jz      short loc_1800057D0
1800057BE: call    cs:CloseHandle
1800057C4: test    eax, eax
1800057C6: jz      short loc_1800057ED
1800057C8: mov     qword ptr [rbx+28h], 0FFFFFFFFFFFFFFFFh
1800057D0: mov     byte ptr [rbx+30h], 0
1800057D4: mov     rcx, [rsp+1F8h+var_18]
1800057DC: xor     rcx, rsp; StackCookie
1800057DF: call    __security_check_cookie
1800057E4: add     rsp, 1F0h
1800057EB: pop     rbx
1800057EC: retn
1800057ED: lea     rcx, [rsp+1F8h+var_118]
1800057F5: call    sub_180004300
1800057FA: lea     rcx, [rsp+1F8h+var_118]
180005802: call    sub_1800060F0
180005807: nop
180005808: call    cs:GetLastError
18000580E: mov     ebx, eax
180005810: lea     rdx, aErrorWhileClos; "Error while closing serial port: "
180005817: lea     rcx, [rsp+1F8h+var_108]
18000581F: call    sub_180006310
180005824: mov     rcx, rax
180005827: mov     edx, ebx
180005829: call    cs:??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@K@Z; std::basic_ostream<char,std::char_traits<char>>::operator<<(ulong)
18000582F: lea     rdx, [rsp+1F8h+var_1B0]
180005834: lea     rcx, [rsp+1F8h+var_118]
18000583C: call    sub_180006050
180005841: mov     rbx, rax
180005844: lea     rdx, aCUsersDerekSou; "C:\\Users\\Derek\\source\\repos\\EloThe"...
18000584B: lea     rcx, [rsp+1F8h+var_1D0]
180005850: call    sub_180002510
180005855: mov     rdx, rax
180005858: mov     rcx, rbx
18000585B: call    sub_1800061B0
180005860: mov     r9, rax
180005863: mov     r8d, 11Fh
180005869: lea     rcx, [rsp+1F8h+pExceptionObject]
18000586E: call    sub_180004310
180005873: lea     rdx, stru_1800134B8; pThrowInfo
18000587A: lea     rcx, [rsp+1F8h+pExceptionObject]; pExceptionObject
18000587F: call    _CxxThrowException
180005884: db 0CCh

### FUNC 180005890 - 1800059B5 (293 bytes) name=sub_180005890
180005890: push    rbx
180005892: sub     rsp, 220h
180005899: mov     rax, cs:__security_cookie
1800058A0: xor     rax, rsp
1800058A3: mov     [rsp+228h+var_18], rax
1800058AB: cmp     byte ptr [rcx+30h], 0
1800058AF: jz      loc_180005992
1800058B5: mov     [rsp+228h+lpOverlapped], 0; lpOverlapped
1800058BE: lea     r9, [rsp+228h+NumberOfBytesRead]; lpNumberOfBytesRead
1800058C6: mov     rcx, [rcx+28h]; hFile
1800058CA: call    cs:ReadFile
1800058D0: test    eax, eax
1800058D2: jz      short loc_1800058F4
1800058D4: mov     eax, [rsp+228h+NumberOfBytesRead]
1800058DB: mov     rcx, [rsp+228h+var_18]
1800058E3: xor     rcx, rsp; StackCookie
1800058E6: call    __security_check_cookie
1800058EB: add     rsp, 220h
1800058F2: pop     rbx
1800058F3: retn
1800058F4: lea     rcx, [rsp+228h+var_118]
1800058FC: call    sub_180004300
180005901: lea     rcx, [rsp+228h+var_118]
180005909: call    sub_1800060F0
18000590E: nop
18000590F: call    cs:GetLastError
180005915: mov     ebx, eax
180005917: lea     rdx, aErrorWhileRead; "Error while reading from the serial por"...
18000591E: lea     rcx, [rsp+228h+var_108]
180005926: call    sub_180006310
18000592B: mov     rcx, rax
18000592E: mov     edx, ebx
180005930: call    cs:??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@K@Z; std::basic_ostream<char,std::char_traits<char>>::operator<<(ulong)
180005936: lea     rdx, [rsp+228h+var_1D0]
18000593B: lea     rcx, [rsp+228h+var_118]
180005943: call    sub_180006050
180005948: mov     rbx, rax
18000594B: lea     rdx, aCUsersDerekSou; "C:\\Users\\Derek\\source\\repos\\EloThe"...
180005952: lea     rcx, [rsp+228h+var_1F0]
180005957: call    sub_180002510
18000595C: mov     rdx, rax
18000595F: mov     rcx, rbx
180005962: call    sub_1800061B0
180005967: mov     r9, rax
18000596A: mov     r8d, 154h
180005970: lea     rcx, [rsp+228h+pExceptionObject]
180005978: call    sub_180004310
18000597D: lea     rdx, stru_1800134B8; pThrowInfo
180005984: lea     rcx, [rsp+228h+pExceptionObject]; pExceptionObject
18000598C: call    _CxxThrowException
180005991: align 2
180005992: lea     rdx, aSerialRead; "Serial::read"
180005999: lea     rcx, [rsp+228h+var_1D0]
18000599E: call    sub_1800048A0
1800059A3: lea     rdx, stru_1800134D8; pThrowInfo
1800059AA: lea     rcx, [rsp+228h+var_1D0]; pExceptionObject
1800059AF: call    _CxxThrowException
1800059B4: db 0CCh

### FUNC 1800059C0 - 180005A85 (197 bytes) name=sub_1800059C0
1800059C0: mov     [rsp+arg_0], rbx
1800059C5: mov     [rsp+arg_10], rsi
1800059CA: push    rdi
1800059CB: sub     rsp, 30h
1800059CF: mov     rbx, rdx
1800059D2: mov     [rsp+38h+var_18], rdx
1800059D7: lea     rdi, [rcx+8]
1800059DB: mov     rcx, rdi
1800059DE: cmp     qword ptr [rdi+18h], 8
1800059E3: jb      short loc_1800059E8
1800059E5: mov     rcx, [rdi]
1800059E8: mov     rax, [rdi+10h]
1800059EC: lea     rsi, [rcx+rax*2]
1800059F0: jb      short loc_1800059F5
1800059F2: mov     rdi, [rdi]
1800059F5: mov     qword ptr [rdx+10h], 0
1800059FD: mov     qword ptr [rdx+18h], 0Fh
180005A05: mov     byte ptr [rdx], 0
180005A08: mov     rdx, rsi
180005A0B: sub     rdx, rdi
180005A0E: sar     rdx, 1
180005A11: cmp     rdx, 0Fh
180005A15: jbe     short loc_180005A27
180005A17: mov     rcx, rbx; Src
180005A1A: call    sub_180006C50
180005A1F: mov     qword ptr [rbx+10h], 0
180005A27: mov     [rsp+38h+var_18], rbx
180005A2C: cmp     rdi, rsi
180005A2F: jz      short loc_180005A72
180005A31: movzx   r9d, byte ptr [rdi]
180005A35: mov     rcx, [rbx+10h]
180005A39: mov     rdx, [rbx+18h]
180005A3D: cmp     rcx, rdx
180005A40: jnb     short loc_180005A61
180005A42: lea     rax, [rcx+1]
180005A46: mov     [rbx+10h], rax
180005A4A: mov     rax, rbx
180005A4D: cmp     rdx, 10h
180005A51: jb      short loc_180005A56
180005A53: mov     rax, [rbx]
180005A56: mov     [rax+rcx], r9b
180005A5A: mov     byte ptr [rax+rcx+1], 0
180005A5F: jmp     short loc_180005A69
180005A61: mov     rcx, rbx; Src
180005A64: call    sub_180002770
180005A69: add     rdi, 2
180005A6D: cmp     rdi, rsi
180005A70: jnz     short loc_180005A31
180005A72: mov     rax, rbx
180005A75: mov     rbx, [rsp+38h+arg_0]
180005A7A: mov     rsi, [rsp+38h+arg_10]
180005A7F: add     rsp, 30h
180005A83: pop     rdi
180005A84: retn

### FUNC 180005A90 - 180005B79 (233 bytes) name=sub_180005A90
180005A90: mov     [rsp+arg_0], rbx
180005A95: mov     [rsp+arg_8], rsi
180005A9A: mov     [rsp+arg_10], rdi
180005A9F: mov     [rsp+arg_18], r14
180005AA4: mov     r14, [rcx+38h]
180005AA8: mov     r10, rcx
180005AAB: mov     rax, [rcx+40h]
180005AAF: mov     r11, [r8+8]
180005AB3: add     r11, [r8]
180005AB6: mov     rsi, [r14]
180005AB9: mov     rcx, [rax]
180005ABC: test    rcx, rcx
180005ABF: jz      short loc_180005ACB
180005AC1: cmp     [r10+68h], rcx
180005AC5: jnb     short loc_180005ACB
180005AC7: mov     [r10+68h], rcx
180005ACB: mov     rax, [r10+18h]
180005ACF: mov     rbx, [r10+68h]
180005AD3: mov     rdi, [rax]
180005AD6: mov     rax, rbx
180005AD9: sub     rax, rdi
180005ADC: cmp     r11, rax
180005ADF: ja      short loc_180005B4C
180005AE1: test    r11, r11
180005AE4: jz      short loc_180005AFC
180005AE6: test    r9b, 1
180005AEA: jz      short loc_180005AF1
180005AEC: test    rsi, rsi
180005AEF: jz      short loc_180005B4C
180005AF1: test    r9b, 2
180005AF5: jz      short loc_180005AFC
180005AF7: test    rcx, rcx
180005AFA: jz      short loc_180005B4C
180005AFC: lea     r8, [rdi+r11]
180005B00: test    r9b, 1
180005B04: jz      short loc_180005B17
180005B06: test    rsi, rsi
180005B09: jz      short loc_180005B17
180005B0B: mov     [r14], r8
180005B0E: sub     ebx, r8d
180005B11: mov     rax, [r10+50h]
180005B15: mov     [rax], ebx
180005B17: test    r9b, 2
180005B1B: jz      short loc_180005B47
180005B1D: test    rcx, rcx
180005B20: jz      short loc_180005B47
180005B22: mov     rax, [r10+58h]
180005B26: movsxd  rcx, dword ptr [rax]
180005B29: mov     rax, [r10+40h]
180005B2D: add     rcx, [rax]
180005B30: mov     rax, [r10+20h]
180005B34: sub     ecx, r8d
180005B37: mov     [rax], rdi
180005B3A: mov     rax, [r10+40h]
180005B3E: mov     [rax], r8
180005B41: mov     rax, [r10+58h]
180005B45: mov     [rax], ecx
180005B47: mov     [rdx], r11
180005B4A: jmp     short loc_180005B53
180005B4C: mov     qword ptr [rdx], 0FFFFFFFFFFFFFFFFh
180005B53: mov     rbx, [rsp+arg_0]
180005B58: xor     eax, eax
180005B5A: mov     rsi, [rsp+arg_8]
180005B5F: mov     rdi, [rsp+arg_10]
180005B64: mov     r14, [rsp+arg_18]
180005B69: mov     qword ptr [rdx+8], 0
180005B71: mov     [rdx+10h], rax
180005B75: mov     rax, rdx
180005B78: retn

### FUNC 180005B80 - 180005CD4 (340 bytes) name=sub_180005B80
180005B80: mov     [rsp+arg_0], rbx
180005B85: mov     [rsp+arg_8], rbp
180005B8A: mov     [rsp+arg_10], rsi
180005B8F: mov     [rsp+arg_18], rdi
180005B94: push    r14
180005B96: mov     r14, [rcx+38h]
180005B9A: mov     r10, rcx
180005B9D: mov     rax, [rcx+40h]
180005BA1: mov     rbp, r8
180005BA4: mov     rdi, [r14]
180005BA7: mov     rcx, [rax]
180005BAA: test    rcx, rcx
180005BAD: jz      short loc_180005BB9
180005BAF: cmp     [r10+68h], rcx
180005BB3: jnb     short loc_180005BB9
180005BB5: mov     [r10+68h], rcx
180005BB9: mov     rax, [r10+18h]
180005BBD: mov     rsi, [r10+68h]
180005BC1: mov     r8d, [rsp+8+arg_20]
180005BC6: mov     r11, rsi
180005BC9: mov     rbx, [rax]
180005BCC: sub     r11, rbx
180005BCF: test    r9d, r9d
180005BD2: jz      short loc_180005C2F
180005BD4: sub     r9d, 1
180005BD8: jz      short loc_180005BE9
180005BDA: cmp     r9d, 1
180005BDE: jnz     loc_180005CA5
180005BE4: mov     rax, r11
180005BE7: jmp     short loc_180005C31
180005BE9: mov     eax, r8d
180005BEC: and     eax, 3
180005BEF: cmp     al, 3
180005BF1: jz      loc_180005CA5
180005BF7: test    r8b, 1
180005BFB: jz      short loc_180005C13
180005BFD: test    rdi, rdi
180005C00: jnz     short loc_180005C0B
180005C02: test    rbx, rbx
180005C05: jnz     loc_180005CA5
180005C0B: mov     rax, rdi
180005C0E: sub     rax, rbx
180005C11: jmp     short loc_180005C31
180005C13: test    r8b, 2
180005C17: jz      loc_180005CA5
180005C1D: test    rcx, rcx
180005C20: jnz     short loc_180005C27
180005C22: test    rbx, rbx
180005C25: jnz     short loc_180005CA5
180005C27: mov     rax, rcx
180005C2A: sub     rax, rbx
180005C2D: jmp     short loc_180005C31
180005C2F: xor     eax, eax
180005C31: lea     r9, [rax+rbp]
180005C35: cmp     r9, r11
180005C38: ja      short loc_180005CA5
180005C3A: test    r9, r9
180005C3D: jz      short loc_180005C55
180005C3F: test    r8b, 1
180005C43: jz      short loc_180005C4A
180005C45: test    rdi, rdi
180005C48: jz      short loc_180005CA5
180005C4A: test    r8b, 2
180005C4E: jz      short loc_180005C55
180005C50: test    rcx, rcx
180005C53: jz      short loc_180005CA5
180005C55: lea     r11, [rbx+r9]
180005C59: test    r8b, 1
180005C5D: jz      short loc_180005C70
180005C5F: test    rdi, rdi
180005C62: jz      short loc_180005C70
180005C64: mov     [r14], r11
180005C67: sub     esi, r11d
180005C6A: mov     rax, [r10+50h]
180005C6E: mov     [rax], esi
180005C70: test    r8b, 2
180005C74: jz      short loc_180005CA0
180005C76: test    rcx, rcx
180005C79: jz      short loc_180005CA0
180005C7B: mov     rax, [r10+58h]
180005C7F: movsxd  rcx, dword ptr [rax]
180005C82: mov     rax, [r10+40h]
180005C86: add     rcx, [rax]
180005C89: mov     rax, [r10+20h]
180005C8D: sub     ecx, r11d
180005C90: mov     [rax], rbx
180005C93: mov     rax, [r10+40h]
180005C97: mov     [rax], r11
180005C9A: mov     rax, [r10+58h]
180005C9E: mov     [rax], ecx
180005CA0: mov     [rdx], r9
180005CA3: jmp     short loc_180005CAC
180005CA5: mov     qword ptr [rdx], 0FFFFFFFFFFFFFFFFh
180005CAC: mov     rbx, [rsp+8+arg_0]
180005CB1: xor     eax, eax
180005CB3: mov     rbp, [rsp+8+arg_8]
180005CB8: mov     rsi, [rsp+8+arg_10]
180005CBD: mov     rdi, [rsp+8+arg_18]
180005CC2: mov     qword ptr [rdx+8], 0
180005CCA: mov     [rdx+10h], rax
180005CCE: mov     rax, rdx
180005CD1: pop     r14
180005CD3: retn

### FUNC 180005CE0 - 180005D48 (104 bytes) name=sub_180005CE0
180005CE0: mov     r10, [rcx+38h]
180005CE4: mov     rdx, rcx
180005CE7: mov     r8, [r10]
180005CEA: test    r8, r8
180005CED: jz      short loc_180005D42
180005CEF: mov     rax, [rcx+50h]
180005CF3: movsxd  rcx, dword ptr [rax]
180005CF6: add     rcx, r8
180005CF9: cmp     r8, rcx
180005CFC: jnb     short loc_180005D03
180005CFE: movzx   eax, byte ptr [r8]
180005D02: retn
180005D03: mov     rax, [rdx+40h]
180005D07: mov     r9, [rax]
180005D0A: test    r9, r9
180005D0D: jz      short loc_180005D42
180005D0F: test    byte ptr [rdx+70h], 4
180005D13: jnz     short loc_180005D42
180005D15: mov     rcx, [rdx+68h]
180005D19: cmp     rcx, r9
180005D1C: cmovb   rcx, r9
180005D20: cmp     rcx, r8
180005D23: jbe     short loc_180005D42
180005D25: mov     [rdx+68h], rcx
180005D29: mov     rax, [r10]
180005D2C: mov     [r10], rax
180005D2F: sub     ecx, eax
180005D31: mov     rax, [rdx+50h]
180005D35: mov     [rax], ecx
180005D37: mov     rax, [rdx+38h]
180005D3B: mov     rcx, [rax]
180005D3E: movzx   eax, byte ptr [rcx]
180005D41: retn
180005D42: mov     eax, 0FFFFFFFFh
180005D47: retn

### FUNC 180005D50 - 180005DA2 (82 bytes) name=sub_180005D50
180005D50: mov     rax, [rcx+38h]
180005D54: mov     r8, [rax]
180005D57: test    r8, r8
180005D5A: jz      short loc_180005D9C
180005D5C: mov     rax, [rcx+18h]
180005D60: cmp     r8, [rax]
180005D63: jbe     short loc_180005D9C
180005D65: cmp     edx, 0FFFFFFFFh
180005D68: jz      short loc_180005D76
180005D6A: cmp     dl, [r8-1]
180005D6E: jz      short loc_180005D76
180005D70: test    byte ptr [rcx+70h], 2
180005D74: jnz     short loc_180005D9C
180005D76: mov     rax, [rcx+50h]
180005D7A: inc     dword ptr [rax]
180005D7C: mov     rax, [rcx+38h]
180005D80: dec     qword ptr [rax]
180005D83: cmp     edx, 0FFFFFFFFh
180005D86: jz      short loc_180005D91
180005D88: mov     rax, [rcx+38h]
180005D8C: mov     rcx, [rax]
180005D8F: mov     [rcx], dl
180005D91: xor     eax, eax
180005D93: cmp     edx, 0FFFFFFFFh
180005D96: cmovz   edx, eax
180005D99: mov     eax, edx
180005D9B: retn
180005D9C: mov     eax, 0FFFFFFFFh
180005DA1: retn

### FUNC 180005DB0 - 180005F90 (480 bytes) name=sub_180005DB0
180005DB0: mov     [rsp+arg_8], rbx
180005DB5: mov     [rsp+arg_10], rbp
180005DBA: push    rsi
180005DBB: push    rdi
180005DBC: push    r12
180005DBE: push    r14
180005DC0: push    r15
180005DC2: sub     rsp, 20h
180005DC6: test    byte ptr [rcx+70h], 2
180005DCA: mov     r15d, edx
180005DCD: mov     rbx, rcx
180005DD0: jnz     loc_180005F6E
180005DD6: cmp     edx, 0FFFFFFFFh
180005DD9: jnz     short loc_180005DE2
180005DDB: xor     eax, eax
180005DDD: jmp     loc_180005F73
180005DE2: mov     rax, [rcx+40h]
180005DE6: mov     rsi, [rax]
180005DE9: mov     rax, [rcx+58h]
180005DED: movsxd  rdi, dword ptr [rax]
180005DF0: add     rdi, rsi
180005DF3: test    rsi, rsi
180005DF6: jz      short loc_180005E16
180005DF8: cmp     rsi, rdi
180005DFB: jnb     short loc_180005E16
180005DFD: call    cs:?_Pninc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAPEADXZ; std::basic_streambuf<char,std::char_traits<char>>::_Pninc(void)
180005E03: mov     [rax], r15b
180005E06: lea     rax, [rsi+1]
180005E0A: mov     [rbx+68h], rax
180005E0E: mov     eax, r15d
180005E11: jmp     loc_180005F73
180005E16: mov     rax, [rcx+18h]
180005E1A: xor     r12d, r12d
180005E1D: mov     r14, [rax]
180005E20: sub     rdi, r14
180005E23: test    rsi, rsi
180005E26: cmovz   rdi, r12
180005E2A: cmp     rdi, 20h ; ' '
180005E2E: jnb     short loc_180005E41
180005E30: mov     esi, 20h ; ' '
180005E35: mov     ecx, esi; Size
180005E37: call    ??2@YAPEAX_K@Z; operator new(unsigned __int64)
180005E3C: mov     rbp, rax
180005E3F: jmp     short loc_180005EA3
180005E41: cmp     rdi, 3FFFFFFFh
180005E48: jnb     short loc_180005E6E
180005E4A: lea     rsi, [rdi+rdi]
180005E4E: cmp     rsi, 1000h
180005E55: jnb     short loc_180005E7C
180005E57: test    rsi, rsi
180005E5A: jz      short loc_180005E69
180005E5C: mov     rcx, rsi; Size
180005E5F: call    ??2@YAPEAX_K@Z; operator new(unsigned __int64)
180005E64: mov     rbp, rax
180005E67: jmp     short loc_180005EA3
180005E69: mov     rbp, r12
180005E6C: jmp     short loc_180005EA3
180005E6E: mov     esi, 7FFFFFFFh
180005E73: cmp     rdi, rsi
180005E76: jnb     loc_180005F6E
180005E7C: lea     rcx, [rsi+27h]; Size
180005E80: cmp     rcx, rsi
180005E83: jbe     loc_180005F8A
180005E89: call    ??2@YAPEAX_K@Z; operator new(unsigned __int64)
180005E8E: test    rax, rax
180005E91: jz      loc_180005F67
180005E97: lea     rbp, [rax+27h]
180005E9B: and     rbp, 0FFFFFFFFFFFFFFE0h
180005E9F: mov     [rbp-8], rax
180005EA3: mov     r8, rdi; Size
180005EA6: mov     rdx, r14; Src
180005EA9: mov     rcx, rbp; void *
180005EAC: call    memcpy
180005EB1: lea     rdx, [rdi+rbp]
180005EB5: mov     ecx, ebp
180005EB7: lea     rax, [rdx+1]
180005EBB: sub     ecx, edx
180005EBD: mov     [rbx+68h], rax
180005EC1: add     ecx, esi
180005EC3: mov     rax, [rbx+20h]
180005EC7: mov     [rax], rbp
180005ECA: mov     rax, [rbx+40h]
180005ECE: mov     [rax], rdx
180005ED1: mov     rax, [rbx+58h]
180005ED5: mov     [rax], ecx
180005ED7: test    byte ptr [rbx+70h], 4
180005EDB: jz      short loc_180005EF3
180005EDD: mov     rax, [rbx+18h]
180005EE1: mov     [rax], rbp
180005EE4: mov     rax, [rbx+38h]
180005EE8: mov     [rax], r12
180005EEB: mov     rax, [rbx+50h]
180005EEF: mov     [rax], ebp
180005EF1: jmp     short loc_180005F1A
180005EF3: mov     rax, [rbx+38h]
180005EF7: mov     rdx, [rbx+68h]
180005EFB: mov     rcx, [rax]
180005EFE: mov     rax, [rbx+18h]
180005F02: sub     rcx, r14
180005F05: add     rcx, rbp
180005F08: sub     edx, ecx
180005F0A: mov     [rax], rbp
180005F0D: mov     rax, [rbx+38h]
180005F11: mov     [rax], rcx
180005F14: mov     rax, [rbx+50h]
180005F18: mov     [rax], edx
180005F1A: mov     eax, [rbx+70h]
180005F1D: test    al, 1
180005F1F: jz      short loc_180005F50
180005F21: cmp     rdi, 1000h
180005F28: jb      short loc_180005F42
180005F2A: mov     rdx, [r14-8]
180005F2E: add     rdi, 27h ; '''
180005F32: sub     r14, rdx
180005F35: lea     rax, [r14-8]
180005F39: cmp     rax, 1Fh
180005F3D: ja      short loc_180005F67
180005F3F: mov     r14, rdx
180005F42: mov     rdx, rdi
180005F45: mov     rcx, r14; Block
180005F48: call    j_j_free
180005F4D: mov     eax, [rbx+70h]
180005F50: or      eax, 1
180005F53: mov     rcx, rbx
180005F56: mov     [rbx+70h], eax
180005F59: call    cs:?_Pninc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAAPEADXZ; std::basic_streambuf<char,std::char_traits<char>>::_Pninc(void)
180005F5F: mov     [rax], r15b
180005F62: mov     eax, r15d
180005F65: jmp     short loc_180005F73
180005F67: call    cs:_invalid_parameter_noinfo_noreturn
180005F6D: int     3; Trap to Debugger
180005F6E: mov     eax, 0FFFFFFFFh
180005F73: mov     rbx, [rsp+48h+arg_8]
180005F78: mov     rbp, [rsp+48h+arg_10]
180005F7D: add     rsp, 20h
180005F81: pop     r15
180005F83: pop     r14
180005F85: pop     r12
180005F87: pop     rdi
180005F88: pop     rsi
180005F89: retn
180005F8A: call    ?cancel_current_task@Concurrency@@YAXXZ; Concurrency::cancel_current_task(void)
180005F8F: align 10h

### FUNC 180005F90 - 180006047 (183 bytes) name=sub_180005F90
180005F90: push    rbx
180005F92: sub     rsp, 20h
180005F96: test    byte ptr [rcx+70h], 1
180005F9A: lea     rax, off_18000FBD0
180005FA1: mov     [rcx], rax
180005FA4: mov     rbx, rcx
180005FA7: jz      short loc_180005FFF
180005FA9: mov     rax, [rcx+40h]
180005FAD: mov     rcx, [rax]
180005FB0: test    rcx, rcx
180005FB3: jz      short loc_180005FC1
180005FB5: mov     rax, [rbx+58h]
180005FB9: movsxd  rdx, dword ptr [rax]
180005FBC: add     rdx, rcx
180005FBF: jmp     short loc_180005FCF
180005FC1: mov     rax, [rbx+50h]
180005FC5: movsxd  rdx, dword ptr [rax]
180005FC8: mov     rax, [rbx+38h]
180005FCC: add     rdx, [rax]
180005FCF: mov     rax, [rbx+18h]
180005FD3: mov     rcx, [rax]
180005FD6: sub     rdx, rcx
180005FD9: cmp     rdx, 1000h
180005FE0: jb      short loc_180005FFA
180005FE2: mov     r8, [rcx-8]
180005FE6: add     rdx, 27h ; '''
180005FEA: sub     rcx, r8
180005FED: lea     rax, [rcx-8]
180005FF1: cmp     rax, 1Fh
180005FF5: ja      short loc_180006040
180005FF7: mov     rcx, r8; Block
180005FFA: call    j_j_free
180005FFF: mov     rax, [rbx+18h]
180006003: xor     ecx, ecx
180006005: mov     [rax], rcx
180006008: mov     rax, [rbx+38h]
18000600C: mov     [rax], rcx
18000600F: mov     rax, [rbx+50h]
180006013: mov     [rax], ecx
180006015: mov     rax, [rbx+20h]
180006019: mov     [rax], rcx
18000601C: mov     rax, [rbx+40h]
180006020: mov     [rax], rcx
180006023: mov     rax, [rbx+58h]
180006027: mov     [rax], ecx
180006029: and     dword ptr [rbx+70h], 0FFFFFFFEh
18000602D: mov     [rbx+68h], rcx
180006031: mov     rcx, rbx
180006034: add     rsp, 20h
180006038: pop     rbx
180006039: jmp     cs:??1?$basic_streambuf@DU?$char_traits@D@std@@@std@@UEAA@XZ; std::basic_streambuf<char,std::char_traits<char>>::~basic_streambuf<char,std::char_traits<char>>(void)
180006040: call    cs:_invalid_parameter_noinfo_noreturn
180006046: db 0CCh

### FUNC 180006050 - 1800060EC (156 bytes) name=sub_180006050
180006050: push    rbx
180006052: sub     rsp, 40h
180006056: mov     rbx, rdx
180006059: mov     [rsp+48h+var_18], rdx
18000605E: xor     eax, eax
180006060: mov     [rsp+48h+var_28], eax
180006064: mov     [rdx+10h], rax
180006068: mov     qword ptr [rdx+18h], 0Fh
180006070: mov     [rdx], al
180006072: mov     [rsp+48h+var_28], 2
18000607A: mov     edx, [rcx+88h]
180006080: test    dl, 2
180006083: jnz     short loc_1800060B5
180006085: mov     rax, [rcx+58h]
180006089: mov     r9, [rax]
18000608C: test    r9, r9
18000608F: jz      short loc_1800060B5
180006091: mov     rax, [rcx+38h]
180006095: mov     rdx, [rax]
180006098: mov     [rsp+48h+var_20], r9
18000609D: sub     rcx, 0FFFFFFFFFFFFFF80h
1800060A1: lea     r8, [rsp+48h+var_20]
1800060A6: cmp     r9, [rcx]
1800060A9: cmovb   r8, rcx
1800060AD: mov     r8, [r8]
1800060B0: sub     r8, rdx
1800060B3: jmp     short loc_1800060DA
1800060B5: test    dl, 4
1800060B8: jnz     short loc_1800060E3
1800060BA: mov     rax, [rcx+50h]
1800060BE: mov     r9, [rax]
1800060C1: test    r9, r9
1800060C4: jz      short loc_1800060E3
1800060C6: mov     rax, [rcx+30h]
1800060CA: mov     rdx, [rax]; Src
1800060CD: mov     rax, [rcx+68h]
1800060D1: movsxd  r8, dword ptr [rax]
1800060D4: sub     r8, rdx
1800060D7: add     r8, r9; Size
1800060DA: mov     rcx, rbx; void *
1800060DD: call    sub_180002610
1800060E2: nop
1800060E3: mov     rax, rbx
1800060E6: add     rsp, 40h
1800060EA: pop     rbx
1800060EB: retn

### FUNC 1800060F0 - 1800061A6 (182 bytes) name=sub_1800060F0
1800060F0: mov     [rsp+arg_8], rbx
1800060F5: mov     [rsp+arg_10], r8d
1800060FA: mov     [rsp+arg_0], rcx
1800060FF: push    rdi
180006100: sub     rsp, 20h
180006104: mov     rdi, rcx
180006107: mov     [rsp+28h+arg_10], 0
18000610F: lea     rax, unk_18000FCB8
180006116: mov     [rcx], rax
180006119: lea     rax, unk_18000FBA8
180006120: mov     [rcx+10h], rax
180006124: add     rcx, 98h
18000612B: call    cs:??0?$basic_ios@DU?$char_traits@D@std@@@std@@IEAA@XZ; std::basic_ios<char,std::char_traits<char>>::basic_ios<char,std::char_traits<char>>(void)
180006131: nop
180006132: mov     [rsp+28h+arg_10], 1
18000613A: lea     rbx, [rdi+18h]
18000613E: xor     r8d, r8d
180006141: mov     rdx, rbx
180006144: mov     rcx, rdi
180006147: call    cs:??0?$basic_iostream@DU?$char_traits@D@std@@@std@@QEAA@PEAV?$basic_streambuf@DU?$char_traits@D@std@@@1@@Z; std::basic_iostream<char,std::char_traits<char>>::basic_iostream<char,std::char_traits<char>>(std::basic_streambuf<char,std::char_traits<char>> *)
18000614D: nop
18000614E: mov     rax, [rdi]
180006151: movsxd  rcx, dword ptr [rax+4]
180006155: lea     rax, off_18000FC80
18000615C: mov     [rcx+rdi], rax
180006160: mov     rax, [rdi]
180006163: movsxd  rcx, dword ptr [rax+4]
180006167: lea     edx, [rcx-98h]
18000616D: mov     [rcx+rdi-4], edx
180006171: mov     [rsp+28h+arg_18], rbx
180006176: mov     rcx, rbx
180006179: call    cs:??0?$basic_streambuf@DU?$char_traits@D@std@@@std@@IEAA@XZ; std::basic_streambuf<char,std::char_traits<char>>::basic_streambuf<char,std::char_traits<char>>(void)
18000617F: lea     rax, off_18000FBD0
180006186: mov     [rbx], rax
180006189: mov     qword ptr [rbx+68h], 0
180006191: mov     dword ptr [rbx+70h], 0
180006198: mov     rax, rdi
18000619B: mov     rbx, [rsp+28h+arg_8]
1800061A0: add     rsp, 20h
1800061A4: pop     rdi
1800061A5: retn

### FUNC 1800061B0 - 1800061BF (15 bytes) name=sub_1800061B0
1800061B0: cmp     qword ptr [rcx+18h], 10h
1800061B5: jb      short loc_1800061BB
1800061B7: mov     rax, [rcx]
1800061BA: retn
1800061BB: mov     rax, rcx
1800061BE: retn

### FUNC 1800061C0 - 1800061F4 (52 bytes) name=??_G?$basic_stringbuf@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@UEAAPEAXI@Z
1800061C0: mov     [rsp+arg_0], rbx
1800061C5: push    rdi
1800061C6: sub     rsp, 20h
1800061CA: mov     ebx, edx
1800061CC: mov     rdi, rcx
1800061CF: call    sub_180005F90
1800061D4: test    bl, 1
1800061D7: jz      short loc_1800061E6
1800061D9: mov     edx, 78h ; 'x'
1800061DE: mov     rcx, rdi; Block
1800061E1: call    j_j_free
1800061E6: mov     rbx, [rsp+28h+arg_0]
1800061EB: mov     rax, rdi
1800061EE: add     rsp, 20h
1800061F2: pop     rdi
1800061F3: retn

### FUNC 180006200 - 180006292 (146 bytes) name=sub_180006200
180006200: mov     [rsp+arg_0], rbx
180006205: mov     [rsp+arg_8], rsi
18000620A: push    rdi
18000620B: sub     rsp, 20h
18000620F: mov     rax, [rcx-98h]
180006216: mov     rbx, rcx
180006219: mov     edi, edx
18000621B: movsxd  r8, dword ptr [rax+4]
18000621F: lea     rax, off_18000FC80
180006226: mov     [r8+rcx-98h], rax
18000622E: mov     rax, [rcx-98h]
180006235: movsxd  r8, dword ptr [rax+4]
180006239: lea     r9d, [r8-98h]
180006240: mov     [r8+rcx-9Ch], r9d
180006248: add     rcx, 0FFFFFFFFFFFFFF80h
18000624C: call    sub_180005F90
180006251: lea     rcx, [rbx-78h]
180006255: call    cs:??1?$basic_iostream@DU?$char_traits@D@std@@@std@@UEAA@XZ; std::basic_iostream<char,std::char_traits<char>>::~basic_iostream<char,std::char_traits<char>>(void)
18000625B: mov     rcx, rbx
18000625E: call    cs:??1?$basic_ios@DU?$char_traits@D@std@@@std@@UEAA@XZ; std::basic_ios<char,std::char_traits<char>>::~basic_ios<char,std::char_traits<char>>(void)
180006264: test    dil, 1
180006268: jz      short loc_18000627B
18000626A: mov     edx, 0F8h
18000626F: lea     rcx, [rbx-98h]; Block
180006276: call    j_j_free
18000627B: mov     rsi, [rsp+28h+arg_8]
180006280: lea     rax, [rbx-98h]
180006287: mov     rbx, [rsp+28h+arg_0]
18000628C: add     rsp, 20h
180006290: pop     rdi
180006291: retn

### FUNC 1800062A0 - 1800062DF (63 bytes) name=sub_1800062A0
1800062A0: push    rbx
1800062A2: sub     rsp, 20h
1800062A6: mov     rbx, rcx
1800062A9: call    cs:?uncaught_exception@std@@YA_NXZ; std::uncaught_exception(void)
1800062AF: nop
1800062B0: test    al, al
1800062B2: jnz     short loc_1800062BE
1800062B4: mov     rcx, [rbx]
1800062B7: call    cs:?_Osfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAXXZ; std::basic_ostream<char,std::char_traits<char>>::_Osfx(void)
1800062BD: nop
1800062BE: mov     rdx, [rbx]
1800062C1: mov     rax, [rdx]
1800062C4: movsxd  rcx, dword ptr [rax+4]
1800062C8: mov     rcx, [rcx+rdx+48h]
1800062CD: test    rcx, rcx
1800062D0: jz      short loc_1800062D9
1800062D2: mov     rax, [rcx]
1800062D5: call    qword ptr [rax+10h]
1800062D8: nop
1800062D9: add     rsp, 20h
1800062DD: pop     rbx
1800062DE: retn

### FUNC 1800062E0 - 180006304 (36 bytes) name=sub_1800062E0
1800062E0: sub     rsp, 28h
1800062E4: mov     rdx, [rcx]
1800062E7: mov     rax, [rdx]
1800062EA: movsxd  rcx, dword ptr [rax+4]
1800062EE: mov     rcx, [rcx+rdx+48h]
1800062F3: test    rcx, rcx
1800062F6: jz      short loc_1800062FF
1800062F8: mov     rax, [rcx]
1800062FB: call    qword ptr [rax+10h]
1800062FE: nop
1800062FF: add     rsp, 28h
180006303: retn

### FUNC 180006310 - 1800064DA (458 bytes) name=sub_180006310
180006310: mov     [rsp+arg_8], rbx
180006315: mov     [rsp+arg_0], rcx
18000631A: push    rsi
18000631B: push    rdi
18000631C: push    r12
18000631E: push    r14
180006320: push    r15
180006322: sub     rsp, 30h
180006326: mov     r15, rdx
180006329: mov     rsi, rcx
18000632C: xor     ebx, ebx
18000632E: mov     [rsp+58h+arg_10], ebx
180006332: mov     r14, 0FFFFFFFFFFFFFFFFh
180006339: nop     dword ptr [rax+00000000h]
180006340: inc     r14
180006343: cmp     [rdx+r14], bl
180006347: jnz     short loc_180006340
180006349: mov     rcx, [rcx]
18000634C: movsxd  rax, dword ptr [rcx+4]
180006350: mov     rdi, [rax+rsi+28h]
180006355: test    rdi, rdi
180006358: jle     short loc_180006364
18000635A: cmp     rdi, r14
18000635D: jle     short loc_180006364
18000635F: sub     rdi, r14
180006362: jmp     short loc_180006366
180006364: xor     edi, edi
180006366: mov     r12, rsi
180006369: mov     [rsp+58h+var_38], rsi
18000636E: mov     r8, [rax+rsi+48h]
180006373: mov     rdx, rcx
180006376: test    r8, r8
180006379: jz      short loc_18000638A
18000637B: mov     rax, [r8]
18000637E: mov     rcx, r8
180006381: call    qword ptr [rax+8]
180006384: mov     rcx, [rsi]
180006387: mov     rdx, rcx
18000638A: movsxd  rax, dword ptr [rcx+4]
18000638E: cmp     dword ptr [rax+rsi+10h], 0
180006393: jz      short loc_180006399
180006395: xor     al, al
180006397: jmp     short loc_1800063C7
180006399: mov     rax, [rax+rsi+50h]
18000639E: test    rax, rax
1800063A1: jz      short loc_1800063C5
1800063A3: cmp     rax, rsi
1800063A6: jz      short loc_1800063C5
1800063A8: mov     rcx, rax
1800063AB: call    cs:?flush@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@XZ; std::basic_ostream<char,std::char_traits<char>>::flush(void)
1800063B1: mov     rcx, [rsi]
1800063B4: movsxd  rax, dword ptr [rcx+4]
1800063B8: cmp     dword ptr [rax+rsi+10h], 0
1800063BD: setz    al
1800063C0: mov     rdx, rcx
1800063C3: jmp     short loc_1800063C7
1800063C5: mov     al, 1
1800063C7: mov     [rsp+58h+var_30], al
1800063CB: test    al, al
1800063CD: jnz     short loc_1800063D9
1800063CF: mov     ebx, 4
1800063D4: jmp     loc_180006482
1800063D9: movsxd  rax, dword ptr [rcx+4]
1800063DD: mov     ecx, [rax+rsi+18h]
1800063E1: and     ecx, 1C0h
1800063E7: cmp     ecx, 40h ; '@'
1800063EA: jz      short loc_180006419
1800063EC: nop     dword ptr [rax+00h]
1800063F0: test    rdi, rdi
1800063F3: jle     short loc_180006416
1800063F5: mov     rax, [rsi]
1800063F8: movsxd  rcx, dword ptr [rax+4]
1800063FC: movzx   edx, byte ptr [rcx+rsi+58h]
180006401: mov     rcx, [rcx+rsi+48h]
180006406: call    cs:?sputc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHD@Z; std::basic_streambuf<char,std::char_traits<char>>::sputc(char)
18000640C: cmp     eax, 0FFFFFFFFh
18000640F: jz      short loc_180006459
180006411: dec     rdi
180006414: jmp     short loc_1800063F0
180006416: mov     rdx, [rsi]
180006419: movsxd  rax, dword ptr [rdx+4]
18000641D: mov     r8, r14
180006420: mov     rdx, r15
180006423: mov     rcx, [rax+rsi+48h]
180006428: call    cs:?sputn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA_JPEBD_J@Z; std::basic_streambuf<char,std::char_traits<char>>::sputn(char const *,__int64)
18000642E: cmp     rax, r14
180006431: jnz     short loc_180006459
180006433: test    rdi, rdi
180006436: jle     short loc_180006462
180006438: mov     rax, [rsi]
18000643B: movsxd  rcx, dword ptr [rax+4]
18000643F: movzx   edx, byte ptr [rcx+rsi+58h]
180006444: mov     rcx, [rcx+rsi+48h]
180006449: call    cs:?sputc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHD@Z; std::basic_streambuf<char,std::char_traits<char>>::sputc(char)
18000644F: cmp     eax, 0FFFFFFFFh
180006452: jz      short loc_180006459
180006454: dec     rdi
180006457: jmp     short loc_180006433
180006459: mov     ebx, 4
18000645E: mov     [rsp+58h+arg_10], ebx
180006462: mov     rax, [rsi]
180006465: movsxd  rcx, dword ptr [rax+4]
180006469: mov     qword ptr [rcx+rsi+28h], 0
180006472: jmp     short loc_180006482
180006474: mov     rsi, [rsp+58h+arg_0]
180006479: mov     ebx, [rsp+58h+arg_10]
18000647D: mov     r12, [rsp+58h+var_38]
180006482: mov     rax, [rsi]
180006485: movsxd  rcx, dword ptr [rax+4]
180006489: add     rcx, rsi
18000648C: xor     r8d, r8d
18000648F: mov     edx, ebx
180006491: call    cs:?setstate@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAXH_N@Z; std::basic_ios<char,std::char_traits<char>>::setstate(int,bool)
180006497: nop
180006498: call    cs:?uncaught_exception@std@@YA_NXZ; std::uncaught_exception(void)
18000649E: test    al, al
1800064A0: jnz     short loc_1800064AC
1800064A2: mov     rcx, r12
1800064A5: call    cs:?_Osfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAXXZ; std::basic_ostream<char,std::char_traits<char>>::_Osfx(void)
1800064AB: nop
1800064AC: mov     rax, [r12]
1800064B0: movsxd  rcx, dword ptr [rax+4]
1800064B4: mov     rcx, [rcx+r12+48h]
1800064B9: test    rcx, rcx
1800064BC: jz      short loc_1800064C5
1800064BE: mov     rax, [rcx]
1800064C1: call    qword ptr [rax+10h]
1800064C4: nop
1800064C5: mov     rax, rsi
1800064C8: mov     rbx, [rsp+58h+arg_8]
1800064CD: add     rsp, 30h
1800064D1: pop     r15
1800064D3: pop     r14
1800064D5: pop     r12
1800064D7: pop     rdi
1800064D8: pop     rsi
1800064D9: retn

### FUNC 1800064E0 - 1800064F9 (25 bytes) name=unknown_libname_19
1800064E0: cmp     qword ptr [rdx+18h], 10h
1800064E5: mov     rax, rdx
1800064E8: jb      short loc_1800064ED
1800064EA: mov     rax, [rdx]
1800064ED: mov     r8, [rdx+10h]
1800064F1: mov     rdx, rax
1800064F4: jmp     sub_180006920

### FUNC 180006500 - 180006695 (405 bytes) name=sub_180006500
180006500: push    rbx
180006502: push    rsi
180006503: push    r12
180006505: push    r14
180006507: sub     rsp, 28h
18000650B: mov     r14, [rcx+10h]
18000650F: mov     rbx, 7FFFFFFFFFFFFFFEh
180006519: mov     rax, rbx
18000651C: movzx   r12d, r9w
180006520: sub     rax, r14
180006523: mov     rsi, rcx
180006526: cmp     rax, 1
18000652A: jb      loc_180006689
180006530: mov     [rsp+48h+arg_8], rbp
180006535: mov     rbp, [rcx+18h]
180006539: mov     [rsp+48h+var_28], r15
18000653E: lea     r15, [r14+1]
180006542: mov     rcx, r15
180006545: or      rcx, 7
180006549: cmp     rcx, rbx
18000654C: ja      short loc_18000656D
18000654E: mov     rdx, rbp
180006551: mov     rax, rbx
180006554: shr     rdx, 1
180006557: sub     rax, rdx
18000655A: cmp     rbp, rax
18000655D: ja      short loc_18000656D
18000655F: lea     rax, [rdx+rbp]
180006563: mov     rbx, rcx
180006566: cmp     rcx, rax
180006569: cmovb   rbx, rax
18000656D: mov     rcx, 0FFFFFFFFFFFFFFFFh
180006574: mov     [rsp+48h+arg_10], rdi
180006579: mov     rax, rbx
18000657C: mov     [rsp+48h+arg_18], r13
180006581: add     rax, 1
180006585: cmovb   rax, rcx
180006589: mov     rcx, 7FFFFFFFFFFFFFFFh
180006593: cmp     rax, rcx
180006596: ja      loc_18000668F
18000659C: lea     rcx, [rax+rax]; Size
1800065A0: xor     r13d, r13d
1800065A3: cmp     rcx, 1000h
1800065AA: jb      short loc_1800065D8
1800065AC: lea     rax, [rcx+27h]
1800065B0: cmp     rax, rcx
1800065B3: jbe     loc_18000668F
1800065B9: mov     rcx, rax; Size
1800065BC: call    ??2@YAPEAX_K@Z; operator new(unsigned __int64)
1800065C1: test    rax, rax
1800065C4: jz      loc_18000664A
1800065CA: lea     rdi, [rax+27h]
1800065CE: and     rdi, 0FFFFFFFFFFFFFFE0h
1800065D2: mov     [rdi-8], rax
1800065D6: jmp     short loc_1800065EA
1800065D8: test    rcx, rcx
1800065DB: jz      short loc_1800065E7
1800065DD: call    ??2@YAPEAX_K@Z; operator new(unsigned __int64)
1800065E2: mov     rdi, rax
1800065E5: jmp     short loc_1800065EA
1800065E7: mov     rdi, r13
1800065EA: add     r14, r14
1800065ED: mov     [rsi+10h], r15
1800065F1: mov     [rsi+18h], rbx
1800065F5: mov     r8, r14; Size
1800065F8: mov     rcx, rdi; void *
1800065FB: cmp     rbp, 8
1800065FF: jb      short loc_180006651
180006601: mov     rbx, [rsi]
180006604: mov     rdx, rbx; Src
180006607: call    memcpy
18000660C: lea     rdx, ds:2[rbp*2]
180006614: mov     [r14+rdi], r12w
180006619: mov     [r14+rdi+2], r13w
18000661F: cmp     rdx, 1000h
180006626: jb      short loc_180006640
180006628: mov     rcx, [rbx-8]
18000662C: add     rdx, 27h ; '''
180006630: sub     rbx, rcx
180006633: lea     rax, [rbx-8]
180006637: cmp     rax, 1Fh
18000663B: ja      short loc_18000664A
18000663D: mov     rbx, rcx
180006640: mov     rcx, rbx; Block
180006643: call    j_j_free
180006648: jmp     short loc_180006664
18000664A: call    cs:_invalid_parameter_noinfo_noreturn
180006650: int     3; Trap to Debugger
180006651: mov     rdx, rsi; Src
180006654: call    memcpy
180006659: mov     [r14+rdi], r12w
18000665E: mov     [r14+rdi+2], r13w
180006664: mov     [rsi], rdi
180006667: mov     rax, rsi
18000666A: mov     r13, [rsp+48h+arg_18]
18000666F: mov     rdi, [rsp+48h+arg_10]
180006674: mov     rbp, [rsp+48h+arg_8]
180006679: mov     r15, [rsp+48h+var_28]
18000667E: add     rsp, 28h
180006682: pop     r14
180006684: pop     r12
180006686: pop     rsi
180006687: pop     rbx
180006688: retn
180006689: call    sub_180002B40
18000668E: db 0CCh
18000668F: call    ?cancel_current_task@Concurrency@@YAXXZ; Concurrency::cancel_current_task(void)
180006694: db 0CCh

### FUNC 1800066A0 - 180006854 (436 bytes) name=sub_1800066A0
1800066A0: push    rsi
1800066A2: push    rdi
1800066A3: push    r13
1800066A5: push    r14
1800066A7: sub     rsp, 38h
1800066AB: mov     r14, [rcx+10h]
1800066AF: mov     rdi, 7FFFFFFFFFFFFFFEh
1800066B9: mov     rax, rdi
1800066BC: mov     r13, r9
1800066BF: sub     rax, r14
1800066C2: mov     rsi, rcx
1800066C5: cmp     rax, rdx
1800066C8: jb      loc_180006848
1800066CE: mov     [rsp+58h+var_28], rbp
1800066D3: mov     rbp, [rcx+18h]
1800066D7: mov     [rsp+58h+var_38], r15
1800066DC: lea     r15, [rdx+r14]
1800066E0: mov     rcx, r15
1800066E3: or      rcx, 7
1800066E7: cmp     rcx, rdi
1800066EA: ja      short loc_18000670B
1800066EC: mov     rdx, rbp
1800066EF: mov     rax, rdi
1800066F2: shr     rdx, 1
1800066F5: sub     rax, rdx
1800066F8: cmp     rbp, rax
1800066FB: ja      short loc_18000670B
1800066FD: lea     rax, [rdx+rbp]
180006701: mov     rdi, rcx
180006704: cmp     rcx, rax
180006707: cmovb   rdi, rax
18000670B: mov     rcx, 0FFFFFFFFFFFFFFFFh
180006712: mov     [rsp+58h+arg_10], rbx
180006717: mov     rax, rdi
18000671A: mov     [rsp+58h+var_30], r12
18000671F: add     rax, 1
180006723: cmovb   rax, rcx
180006727: mov     rcx, 7FFFFFFFFFFFFFFFh
180006731: cmp     rax, rcx
180006734: ja      loc_18000684E
18000673A: lea     rcx, [rax+rax]; Size
18000673E: xor     eax, eax
180006740: cmp     rcx, 1000h
180006747: jb      short loc_180006775
180006749: lea     rax, [rcx+27h]
18000674D: cmp     rax, rcx
180006750: jbe     loc_18000684E
180006756: mov     rcx, rax; Size
180006759: call    ??2@YAPEAX_K@Z; operator new(unsigned __int64)
18000675E: test    rax, rax
180006761: jz      loc_180006800
180006767: lea     rbx, [rax+27h]
18000676B: and     rbx, 0FFFFFFFFFFFFFFE0h
18000676F: mov     [rbx-8], rax
180006773: jmp     short loc_180006782
180006775: test    rcx, rcx
180006778: jz      short loc_18000677F
18000677A: call    ??2@YAPEAX_K@Z; operator new(unsigned __int64)
18000677F: mov     rbx, rax
180006782: mov     rax, [rsp+58h+arg_20]
18000678A: lea     r8, [r14+r14]; Size
18000678E: mov     [rsi+10h], r15
180006792: lea     r12, [r8+rbx]
180006796: mov     [rsi+18h], rdi
18000679A: mov     rcx, rbx; void *
18000679D: lea     r15, [rax+rax]
1800067A1: add     rax, r14
1800067A4: lea     r14, [rbx+rax*2]
1800067A8: cmp     rbp, 8
1800067AC: jb      short loc_180006807
1800067AE: mov     rdi, [rsi]
1800067B1: mov     rdx, rdi; Src
1800067B4: call    memcpy
1800067B9: mov     r8, r15; Size
1800067BC: mov     rdx, r13; Src
1800067BF: mov     rcx, r12; void *
1800067C2: call    memcpy
1800067C7: xor     eax, eax
1800067C9: lea     rdx, ds:2[rbp*2]
1800067D1: mov     [r14], ax
1800067D5: cmp     rdx, 1000h
1800067DC: jb      short loc_1800067F6
1800067DE: mov     rcx, [rdi-8]
1800067E2: add     rdx, 27h ; '''
1800067E6: sub     rdi, rcx
1800067E9: lea     rax, [rdi-8]
1800067ED: cmp     rax, 1Fh
1800067F1: ja      short loc_180006800
1800067F3: mov     rdi, rcx
1800067F6: mov     rcx, rdi; Block
1800067F9: call    j_j_free
1800067FE: jmp     short loc_180006823
180006800: call    cs:_invalid_parameter_noinfo_noreturn
180006806: int     3; Trap to Debugger
180006807: mov     rdx, rsi; Src
18000680A: call    memcpy
18000680F: mov     r8, r15; Size
180006812: mov     rdx, r13; Src
180006815: mov     rcx, r12; void *
180006818: call    memcpy
18000681D: xor     eax, eax
18000681F: mov     [r14], ax
180006823: mov     [rsi], rbx
180006826: mov     rax, rsi
180006829: mov     r12, [rsp+58h+var_30]
18000682E: mov     rbx, [rsp+58h+arg_10]
180006833: mov     rbp, [rsp+58h+var_28]
180006838: mov     r15, [rsp+58h+var_38]
18000683D: add     rsp, 38h
180006841: pop     r14
180006843: pop     r13
180006845: pop     rdi
180006846: pop     rsi
180006847: retn
180006848: call    sub_180002B40
18000684D: align 2
18000684E: call    ?cancel_current_task@Concurrency@@YAXXZ; Concurrency::cancel_current_task(void)
180006853: db 0CCh

### FUNC 180006860 - 180006914 (180 bytes) name=sub_180006860
180006860: mov     [rsp+arg_18], rsi
180006865: push    rdi
180006866: sub     rsp, 20h
18000686A: mov     rsi, [rcx+10h]
18000686E: mov     rdi, rcx
180006871: cmp     rsi, rdx
180006874: ja      loc_180006902
18000687A: mov     rax, [rcx+18h]
18000687E: cmp     rax, rdx
180006881: jz      short loc_180006902
180006883: jnb     short loc_18000689C
180006885: sub     rdx, rsi
180006888: call    sub_180006AE0
18000688D: mov     [rdi+10h], rsi
180006891: mov     rsi, [rsp+28h+arg_18]
180006896: add     rsp, 20h
18000689A: pop     rdi
18000689B: retn
18000689C: cmp     rdx, 8
1800068A0: jnb     short loc_180006902
1800068A2: cmp     rax, 8
1800068A6: jb      short loc_180006902
1800068A8: mov     [rsp+28h+arg_10], rbx
1800068AD: lea     r8, ds:2[rsi*2]; Size
1800068B5: mov     rbx, [rcx]
1800068B8: mov     rdx, rbx; Src
1800068BB: call    memcpy
1800068C0: mov     rax, [rdi+18h]
1800068C4: lea     rdx, ds:2[rax*2]
1800068CC: cmp     rdx, 1000h
1800068D3: jb      short loc_1800068ED
1800068D5: mov     rcx, [rbx-8]
1800068D9: add     rdx, 27h ; '''
1800068DD: sub     rbx, rcx
1800068E0: lea     rax, [rbx-8]
1800068E4: cmp     rax, 1Fh
1800068E8: ja      short loc_18000690D
1800068EA: mov     rbx, rcx
1800068ED: mov     rcx, rbx; Block
1800068F0: call    j_j_free
1800068F5: mov     rbx, [rsp+28h+arg_10]
1800068FA: mov     qword ptr [rdi+18h], 7
180006902: mov     rsi, [rsp+28h+arg_18]
180006907: add     rsp, 20h
18000690B: pop     rdi
18000690C: retn
18000690D: call    cs:_invalid_parameter_noinfo_noreturn
180006913: db 0CCh

### FUNC 180006920 - 180006ADF (447 bytes) name=sub_180006920
180006920: mov     [rsp+arg_8], rbx
180006925: mov     [rsp+arg_0], rcx
18000692A: push    rsi
18000692B: push    rdi
18000692C: push    r12
18000692E: push    r14
180006930: push    r15
180006932: sub     rsp, 30h
180006936: mov     r15, r8
180006939: mov     r12, rdx
18000693C: mov     rsi, rcx
18000693F: xor     ebx, ebx
180006941: mov     [rsp+58h+arg_18], ebx
180006945: mov     rcx, [rcx]
180006948: movsxd  rax, dword ptr [rcx+4]
18000694C: mov     rdi, [rax+rsi+28h]
180006951: test    rdi, rdi
180006954: jle     short loc_180006960
180006956: cmp     rdi, r8
180006959: jbe     short loc_180006960
18000695B: sub     rdi, r8
18000695E: jmp     short loc_180006962
180006960: xor     edi, edi
180006962: mov     r14, rsi
180006965: mov     [rsp+58h+var_38], rsi
18000696A: mov     r8, [rax+rsi+48h]
18000696F: mov     rdx, rcx
180006972: test    r8, r8
180006975: jz      short loc_180006986
180006977: mov     rax, [r8]
18000697A: mov     rcx, r8
18000697D: call    qword ptr [rax+8]
180006980: mov     rcx, [rsi]
180006983: mov     rdx, rcx
180006986: movsxd  rax, dword ptr [rcx+4]
18000698A: cmp     dword ptr [rax+rsi+10h], 0
18000698F: jz      short loc_180006995
180006991: xor     al, al
180006993: jmp     short loc_1800069C3
180006995: mov     rax, [rax+rsi+50h]
18000699A: test    rax, rax
18000699D: jz      short loc_1800069C1
18000699F: cmp     rax, rsi
1800069A2: jz      short loc_1800069C1
1800069A4: mov     rcx, rax
1800069A7: call    cs:?flush@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@XZ; std::basic_ostream<char,std::char_traits<char>>::flush(void)
1800069AD: mov     rcx, [rsi]
1800069B0: movsxd  rax, dword ptr [rcx+4]
1800069B4: cmp     dword ptr [rax+rsi+10h], 0
1800069B9: setz    al
1800069BC: mov     rdx, rcx
1800069BF: jmp     short loc_1800069C3
1800069C1: mov     al, 1
1800069C3: mov     [rsp+58h+var_30], al
1800069C7: test    al, al
1800069C9: jnz     short loc_1800069D5
1800069CB: mov     ebx, 4
1800069D0: jmp     loc_180006A88
1800069D5: movsxd  rax, dword ptr [rcx+4]
1800069D9: mov     ecx, [rax+rsi+18h]
1800069DD: and     ecx, 1C0h
1800069E3: cmp     ecx, 40h ; '@'
1800069E6: jz      short loc_180006A54
1800069E8: test    rdi, rdi
1800069EB: jz      short loc_180006A51
1800069ED: mov     rax, [rsi]
1800069F0: movsxd  rcx, dword ptr [rax+4]
1800069F4: movzx   edx, byte ptr [rcx+rsi+58h]
1800069F9: mov     rcx, [rcx+rsi+48h]
1800069FE: call    cs:?sputc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHD@Z; std::basic_streambuf<char,std::char_traits<char>>::sputc(char)
180006A04: cmp     eax, 0FFFFFFFFh
180006A07: jnz     short loc_180006A4C
180006A09: mov     ebx, 4
180006A0E: mov     [rsp+58h+arg_18], ebx
180006A12: test    rdi, rdi
180006A15: jz      short loc_180006A3A
180006A17: mov     rax, [rsi]
180006A1A: movsxd  rcx, dword ptr [rax+4]
180006A1E: movzx   edx, byte ptr [rcx+rsi+58h]
180006A23: mov     rcx, [rcx+rsi+48h]
180006A28: call    cs:?sputc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHD@Z; std::basic_streambuf<char,std::char_traits<char>>::sputc(char)
180006A2E: cmp     eax, 0FFFFFFFFh
180006A31: jnz     short loc_180006A75
180006A33: or      ebx, 4
180006A36: mov     [rsp+58h+arg_18], ebx
180006A3A: mov     rax, [rsi]
180006A3D: movsxd  rcx, dword ptr [rax+4]
180006A41: mov     qword ptr [rcx+rsi+28h], 0
180006A4A: jmp     short loc_180006A88
180006A4C: dec     rdi
180006A4F: jmp     short loc_1800069E8
180006A51: mov     rdx, [rsi]
180006A54: movsxd  rax, dword ptr [rdx+4]
180006A58: mov     r8, r15
180006A5B: mov     rdx, r12
180006A5E: mov     rcx, [rax+rsi+48h]
180006A63: call    cs:?sputn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAA_JPEBD_J@Z; std::basic_streambuf<char,std::char_traits<char>>::sputn(char const *,__int64)
180006A69: cmp     rax, r15
180006A6C: jz      short loc_180006A12
180006A6E: mov     ebx, 4
180006A73: jmp     short loc_180006A36
180006A75: dec     rdi
180006A78: jmp     short loc_180006A12
180006A7A: mov     rsi, [rsp+58h+arg_0]
180006A7F: mov     ebx, [rsp+58h+arg_18]
180006A83: mov     r14, [rsp+58h+var_38]
180006A88: mov     rax, [rsi]
180006A8B: movsxd  rcx, dword ptr [rax+4]
180006A8F: add     rcx, rsi
180006A92: xor     r8d, r8d
180006A95: mov     edx, ebx
180006A97: call    cs:?setstate@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAXH_N@Z; std::basic_ios<char,std::char_traits<char>>::setstate(int,bool)
180006A9D: nop
180006A9E: call    cs:?uncaught_exception@std@@YA_NXZ; std::uncaught_exception(void)
180006AA4: test    al, al
180006AA6: jnz     short loc_180006AB2
180006AA8: mov     rcx, r14
180006AAB: call    cs:?_Osfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAXXZ; std::basic_ostream<char,std::char_traits<char>>::_Osfx(void)
180006AB1: nop
180006AB2: mov     rax, [r14]
180006AB5: movsxd  rcx, dword ptr [rax+4]
180006AB9: mov     rcx, [rcx+r14+48h]
180006ABE: test    rcx, rcx
180006AC1: jz      short loc_180006ACA
180006AC3: mov     rax, [rcx]
180006AC6: call    qword ptr [rax+10h]
180006AC9: nop
180006ACA: mov     rax, rsi
180006ACD: mov     rbx, [rsp+58h+arg_8]
180006AD2: add     rsp, 30h
180006AD6: pop     r15
180006AD8: pop     r14
180006ADA: pop     r12
180006ADC: pop     rdi
180006ADD: pop     rsi
180006ADE: retn

### FUNC 180006AE0 - 180006C45 (357 bytes) name=sub_180006AE0
180006AE0: push    rbx
180006AE2: push    rsi
180006AE3: push    r14
180006AE5: sub     rsp, 30h
180006AE9: mov     r14, [rcx+10h]
180006AED: mov     rbx, 7FFFFFFFFFFFFFFEh
180006AF7: mov     rax, rbx
180006AFA: mov     rsi, rcx
180006AFD: sub     rax, r14
180006B00: cmp     rax, rdx
180006B03: jb      loc_180006C39
180006B09: mov     [rsp+48h+arg_10], rbp
180006B0E: mov     rbp, [rcx+18h]
180006B12: mov     [rsp+48h+var_28], r15
180006B17: lea     r15, [rdx+r14]
180006B1B: mov     rdx, r15
180006B1E: or      rdx, 7
180006B22: cmp     rdx, rbx
180006B25: ja      short loc_180006B46
180006B27: mov     rcx, rbp
180006B2A: mov     rax, rbx
180006B2D: shr     rcx, 1
180006B30: sub     rax, rcx
180006B33: cmp     rbp, rax
180006B36: ja      short loc_180006B46
180006B38: lea     rax, [rcx+rbp]
180006B3C: mov     rbx, rdx
180006B3F: cmp     rdx, rax
180006B42: cmovb   rbx, rax
180006B46: mov     rax, 0FFFFFFFFFFFFFFFFh
180006B4D: mov     [rsp+48h+var_20], rdi
180006B52: mov     rcx, rbx
180006B55: add     rcx, 1
180006B59: cmovb   rcx, rax
180006B5D: mov     rax, 7FFFFFFFFFFFFFFFh
180006B67: cmp     rcx, rax
180006B6A: ja      loc_180006C3F
180006B70: add     rcx, rcx; Size
180006B73: cmp     rcx, 1000h
180006B7A: jb      short loc_180006BA4
180006B7C: lea     rax, [rcx+27h]
180006B80: cmp     rax, rcx
180006B83: jbe     loc_180006C3F
180006B89: mov     rcx, rax; Size
180006B8C: call    ??2@YAPEAX_K@Z; operator new(unsigned __int64)
180006B91: test    rax, rax
180006B94: jz      short loc_180006C0C
180006B96: lea     rdi, [rax+27h]
180006B9A: and     rdi, 0FFFFFFFFFFFFFFE0h
180006B9E: mov     [rdi-8], rax
180006BA2: jmp     short loc_180006BB5
180006BA4: test    rcx, rcx
180006BA7: jz      short loc_180006BB3
180006BA9: call    ??2@YAPEAX_K@Z; operator new(unsigned __int64)
180006BAE: mov     rdi, rax
180006BB1: jmp     short loc_180006BB5
180006BB3: xor     edi, edi
180006BB5: mov     [rsi+10h], r15
180006BB9: lea     r8, ds:2[r14*2]; Size
180006BC1: mov     [rsi+18h], rbx
180006BC5: mov     rcx, rdi; void *
180006BC8: cmp     rbp, 8
180006BCC: jb      short loc_180006C13
180006BCE: mov     rbx, [rsi]
180006BD1: mov     rdx, rbx; Src
180006BD4: call    memcpy
180006BD9: lea     rdx, ds:2[rbp*2]
180006BE1: cmp     rdx, 1000h
180006BE8: jb      short loc_180006C02
180006BEA: mov     rcx, [rbx-8]
180006BEE: add     rdx, 27h ; '''
180006BF2: sub     rbx, rcx
180006BF5: lea     rax, [rbx-8]
180006BF9: cmp     rax, 1Fh
180006BFD: ja      short loc_180006C0C
180006BFF: mov     rbx, rcx
180006C02: mov     rcx, rbx; Block
180006C05: call    j_j_free
180006C0A: jmp     short loc_180006C1B
180006C0C: call    cs:_invalid_parameter_noinfo_noreturn
180006C12: int     3; Trap to Debugger
180006C13: mov     rdx, rsi; Src
180006C16: call    memcpy
180006C1B: mov     [rsi], rdi
180006C1E: mov     rax, rsi
180006C21: mov     rdi, [rsp+48h+var_20]
180006C26: mov     rbp, [rsp+48h+arg_10]
180006C2B: mov     r15, [rsp+48h+var_28]
180006C30: add     rsp, 30h
180006C34: pop     r14
180006C36: pop     rsi
180006C37: pop     rbx
180006C38: retn
180006C39: call    sub_180002B40
180006C3E: db 0CCh
180006C3F: call    ?cancel_current_task@Concurrency@@YAXXZ; Concurrency::cancel_current_task(void)
180006C44: db 0CCh

### FUNC 180006C50 - 180006D97 (327 bytes) name=sub_180006C50
180006C50: push    rbx
180006C52: push    rsi
180006C53: push    r14
180006C55: sub     rsp, 30h
180006C59: mov     r14, [rcx+10h]
180006C5D: mov     rbx, 7FFFFFFFFFFFFFFFh
180006C67: mov     rax, rbx
180006C6A: mov     rsi, rcx
180006C6D: sub     rax, r14
180006C70: cmp     rax, rdx
180006C73: jb      loc_180006D91
180006C79: mov     [rsp+48h+arg_10], rbp
180006C7E: mov     rbp, [rcx+18h]
180006C82: mov     [rsp+48h+var_28], r15
180006C87: lea     r15, [rdx+r14]
180006C8B: mov     rdx, r15
180006C8E: or      rdx, 0Fh
180006C92: cmp     rdx, rbx
180006C95: ja      short loc_180006CB6
180006C97: mov     rcx, rbp
180006C9A: mov     rax, rbx
180006C9D: shr     rcx, 1
180006CA0: sub     rax, rcx
180006CA3: cmp     rbp, rax
180006CA6: ja      short loc_180006CB6
180006CA8: lea     rax, [rcx+rbp]
180006CAC: mov     rbx, rdx
180006CAF: cmp     rdx, rax
180006CB2: cmovb   rbx, rax
180006CB6: mov     rcx, rbx
180006CB9: mov     [rsp+48h+var_20], rdi
180006CBE: add     rcx, 1
180006CC2: mov     rax, 0FFFFFFFFFFFFFFFFh
180006CC9: cmovb   rcx, rax; Size
180006CCD: cmp     rcx, 1000h
180006CD4: jb      short loc_180006CFE
180006CD6: lea     rax, [rcx+27h]
180006CDA: cmp     rax, rcx
180006CDD: jbe     loc_180006D8B
180006CE3: mov     rcx, rax; Size
180006CE6: call    ??2@YAPEAX_K@Z; operator new(unsigned __int64)
180006CEB: test    rax, rax
180006CEE: jz      short loc_180006D5E
180006CF0: lea     rdi, [rax+27h]
180006CF4: and     rdi, 0FFFFFFFFFFFFFFE0h
180006CF8: mov     [rdi-8], rax
180006CFC: jmp     short loc_180006D0F
180006CFE: test    rcx, rcx
180006D01: jz      short loc_180006D0D
180006D03: call    ??2@YAPEAX_K@Z; operator new(unsigned __int64)
180006D08: mov     rdi, rax
180006D0B: jmp     short loc_180006D0F
180006D0D: xor     edi, edi
180006D0F: mov     [rsi+10h], r15
180006D13: lea     r8, [r14+1]; Size
180006D17: mov     [rsi+18h], rbx
180006D1B: mov     rcx, rdi; void *
180006D1E: cmp     rbp, 10h
180006D22: jb      short loc_180006D65
180006D24: mov     rbx, [rsi]
180006D27: mov     rdx, rbx; Src
180006D2A: call    memcpy
180006D2F: lea     rdx, [rbp+1]
180006D33: cmp     rdx, 1000h
180006D3A: jb      short loc_180006D54
180006D3C: mov     rcx, [rbx-8]
180006D40: add     rdx, 27h ; '''
180006D44: sub     rbx, rcx
180006D47: lea     rax, [rbx-8]
180006D4B: cmp     rax, 1Fh
180006D4F: ja      short loc_180006D5E
180006D51: mov     rbx, rcx
180006D54: mov     rcx, rbx; Block
180006D57: call    j_j_free
180006D5C: jmp     short loc_180006D6D
180006D5E: call    cs:_invalid_parameter_noinfo_noreturn
180006D64: int     3; Trap to Debugger
180006D65: mov     rdx, rsi; Src
180006D68: call    memcpy
180006D6D: mov     [rsi], rdi
180006D70: mov     rax, rsi
180006D73: mov     rdi, [rsp+48h+var_20]
180006D78: mov     rbp, [rsp+48h+arg_10]
180006D7D: mov     r15, [rsp+48h+var_28]
180006D82: add     rsp, 30h
180006D86: pop     r14
180006D88: pop     rsi
180006D89: pop     rbx
180006D8A: retn
180006D8B: call    ?cancel_current_task@Concurrency@@YAXXZ; Concurrency::cancel_current_task(void)
180006D90: db 0CCh
180006D91: call    sub_180002B40
180006D96: db 0CCh

### FUNC 180006DA0 - 180006E04 (100 bytes) name=sub_180006DA0
180006DA0: push    rbx
180006DA2: sub     rsp, 20h
180006DA6: mov     rbx, [rcx]
180006DA9: test    rbx, rbx
180006DAC: jz      short loc_180006DF7
180006DAE: mov     rdx, [rbx+18h]
180006DB2: cmp     rdx, 10h
180006DB6: jb      short loc_180006DE4
180006DB8: mov     rcx, [rbx]
180006DBB: inc     rdx
180006DBE: cmp     rdx, 1000h
180006DC5: jb      short loc_180006DDF
180006DC7: mov     r8, [rcx-8]
180006DCB: add     rdx, 27h ; '''
180006DCF: sub     rcx, r8
180006DD2: lea     rax, [rcx-8]
180006DD6: cmp     rax, 1Fh
180006DDA: ja      short loc_180006DFD
180006DDC: mov     rcx, r8; Block
180006DDF: call    j_j_free
180006DE4: mov     qword ptr [rbx+10h], 0
180006DEC: mov     qword ptr [rbx+18h], 0Fh
180006DF4: mov     byte ptr [rbx], 0
180006DF7: add     rsp, 20h
180006DFB: pop     rbx
180006DFC: retn
180006DFD: call    cs:_invalid_parameter_noinfo_noreturn
180006E03: db 0CCh

### FUNC 180006E10 - 180006E77 (103 bytes) name=sub_180006E10
180006E10: push    rbx
180006E12: sub     rsp, 20h
180006E16: mov     rbx, [rcx]
180006E19: test    rbx, rbx
180006E1C: jz      short loc_180006E6A
180006E1E: mov     rdx, [rbx+18h]
180006E22: cmp     rdx, 8
180006E26: jb      short loc_180006E59
180006E28: mov     rcx, [rbx]
180006E2B: lea     rdx, ds:2[rdx*2]
180006E33: cmp     rdx, 1000h
180006E3A: jb      short loc_180006E54
180006E3C: mov     r8, [rcx-8]
180006E40: add     rdx, 27h ; '''
180006E44: sub     rcx, r8
180006E47: lea     rax, [rcx-8]
180006E4B: cmp     rax, 1Fh
180006E4F: ja      short loc_180006E70
180006E51: mov     rcx, r8; Block
180006E54: call    j_j_free
180006E59: xor     eax, eax
180006E5B: mov     qword ptr [rbx+18h], 7
180006E63: mov     [rbx+10h], rax
180006E67: mov     [rbx], ax
180006E6A: add     rsp, 20h
180006E6E: pop     rbx
180006E6F: retn
180006E70: call    cs:_invalid_parameter_noinfo_noreturn
180006E76: db 0CCh

### FUNC 180006E78 - 180006E84 (12 bytes) name=sub_180006E78
180006E78: movsxd  rax, dword ptr [rcx-4]
180006E7C: sub     rcx, rax
180006E7F: jmp     sub_180006200

### FUNC 180006E90 - 180006EEF (95 bytes) name=sub_180006E90
180006E90: sub     rsp, 0B8h
180006E97: mov     rcx, [rcx]
180006E9A: mov     rcx, [rcx+60h]; hMutex
180006E9E: call    cs:ReleaseMutex
180006EA4: nop
180006EA5: test    eax, eax
180006EA7: jz      short loc_180006EB1
180006EA9: add     rsp, 0B8h
180006EB0: retn
180006EB1: lea     rdx, aCUsersDerekSou; "C:\\Users\\Derek\\source\\repos\\EloThe"...
180006EB8: lea     rcx, [rsp+0B8h+var_98]
180006EBD: call    sub_180002510
180006EC2: nop
180006EC3: mov     rdx, rax
180006EC6: lea     r9, aErrorReleasing; "Error releasing read mutex."
180006ECD: mov     r8d, 271h
180006ED3: lea     rcx, [rsp+0B8h+pExceptionObject]
180006ED8: call    sub_180004310
180006EDD: nop
180006EDE: lea     rdx, stru_1800134B8; pThrowInfo
180006EE5: lea     rcx, [rsp+0B8h+pExceptionObject]; pExceptionObject
180006EEA: call    _CxxThrowException

### FUNC 180006EF0 - 180006F4F (95 bytes) name=sub_180006EF0
180006EF0: sub     rsp, 0B8h
180006EF7: mov     rcx, [rcx]
180006EFA: mov     rcx, [rcx+68h]; hMutex
180006EFE: call    cs:ReleaseMutex
180006F04: nop
180006F05: test    eax, eax
180006F07: jz      short loc_180006F11
180006F09: add     rsp, 0B8h
180006F10: retn
180006F11: lea     rdx, aCUsersDerekSou; "C:\\Users\\Derek\\source\\repos\\EloThe"...
180006F18: lea     rcx, [rsp+0B8h+var_98]
180006F1D: call    sub_180002510
180006F22: nop
180006F23: mov     rdx, rax
180006F26: lea     r9, aErrorReleasing_0; "Error releasing write mutex."
180006F2D: mov     r8d, 281h
180006F33: lea     rcx, [rsp+0B8h+pExceptionObject]
180006F38: call    sub_180004310
180006F3D: nop
180006F3E: lea     rdx, stru_1800134B8; pThrowInfo
180006F45: lea     rcx, [rsp+0B8h+pExceptionObject]; pExceptionObject
180006F4A: call    _CxxThrowException

### FUNC 180006F50 - 1800070F3 (419 bytes) name=sub_180006F50
180006F50: mov     [rsp+arg_8], rbx
180006F55: mov     [rsp+arg_10], rbp
180006F5A: mov     [rsp+arg_18], rsi
180006F5F: push    rdi
180006F60: push    r12
180006F62: push    r13
180006F64: push    r14
180006F66: push    r15
180006F68: sub     rsp, 30h
180006F6C: mov     r13, r9
180006F6F: mov     ebp, r8d
180006F72: mov     rsi, rdx
180006F75: mov     r15, rcx
180006F78: lea     rax, off_18000FCD8
180006F7F: mov     [rcx], rax
180006F82: mov     ecx, 70h ; 'p'; Size
180006F87: call    ??2@YAPEAX_K@Z; operator new(unsigned __int64)
180006F8C: mov     rdi, rax
180006F8F: mov     [rsp+58h+var_38], rax
180006F94: xorps   xmm0, xmm0
180006F97: movups  xmmword ptr [rax], xmm0
180006F9A: movups  xmmword ptr [rax+10h], xmm0
180006F9E: movups  xmmword ptr [rax+20h], xmm0
180006FA2: movups  xmmword ptr [rax+30h], xmm0
180006FA6: movups  xmmword ptr [rax+40h], xmm0
180006FAA: movups  xmmword ptr [rax+50h], xmm0
180006FAE: movups  xmmword ptr [rax+60h], xmm0
180006FB2: lea     rax, off_18000FCC8
180006FB9: mov     [rdi], rax
180006FBC: mov     rcx, rsi
180006FBF: mov     rdx, [rsi+18h]
180006FC3: cmp     rdx, 10h
180006FC7: jb      short loc_180006FCC
180006FC9: mov     rcx, [rsi]
180006FCC: mov     rbx, [rsi+10h]
180006FD0: add     rbx, rcx
180006FD3: cmp     rdx, 10h
180006FD7: jb      short loc_180006FDC
180006FD9: mov     rsi, [rsi]
180006FDC: lea     r14, [rdi+8]
180006FE0: xor     r12d, r12d
180006FE3: mov     [r14+10h], r12
180006FE7: mov     qword ptr [r14+18h], 7
180006FEF: mov     [r14], r12w
180006FF3: mov     rdx, rbx
180006FF6: sub     rdx, rsi
180006FF9: mov     rcx, r14
180006FFC: call    sub_180006860
180007001: mov     [rsp+58h+var_30], r14
180007006: cmp     rsi, rbx
180007009: jz      short loc_180007052
18000700B: nop     dword ptr [rax+rax+00h]
180007010: movsx   r9d, byte ptr [rsi]
180007014: mov     rcx, [r14+10h]
180007018: mov     rdx, [r14+18h]
18000701C: cmp     rcx, rdx
18000701F: jnb     short loc_180007042
180007021: lea     rax, [rcx+1]
180007025: mov     [r14+10h], rax
180007029: mov     rax, r14
18000702C: cmp     rdx, 8
180007030: jb      short loc_180007035
180007032: mov     rax, [r14]
180007035: mov     [rax+rcx*2], r9w
18000703A: mov     [rax+rcx*2+2], r12w
180007040: jmp     short loc_18000704A
180007042: mov     rcx, r14; Src
180007045: call    sub_180006500
18000704A: inc     rsi
18000704D: cmp     rsi, rbx
180007050: jnz     short loc_180007010
180007052: mov     qword ptr [rdi+28h], 0FFFFFFFFFFFFFFFFh
18000705A: mov     byte ptr [rdi+30h], 0
18000705E: mov     [rdi+34h], r12
180007062: mov     [rdi+3Ch], r12
180007066: mov     [rdi+44h], r12d
18000706A: mov     [rdi+48h], ebp
18000706D: mov     [rdi+4Ch], r12d
180007071: mov     dword ptr [rdi+50h], 8
180007078: mov     qword ptr [rdi+54h], 1
180007080: cmp     qword ptr [rdi+18h], 0
180007085: jz      short loc_18000708F
180007087: mov     rcx, rdi
18000708A: call    sub_180005040
18000708F: xor     r8d, r8d; lpName
180007092: xor     edx, edx; bInitialOwner
180007094: xor     ecx, ecx; lpMutexAttributes
180007096: call    cs:CreateMutexW
18000709C: mov     [rdi+60h], rax
1800070A0: xor     r8d, r8d; lpName
1800070A3: xor     edx, edx; bInitialOwner
1800070A5: xor     ecx, ecx; lpMutexAttributes
1800070A7: call    cs:CreateMutexW
1800070AD: mov     [rdi+68h], rax
1800070B1: mov     [r15+8], rdi
1800070B5: movups  xmm0, xmmword ptr [r13+0]
1800070BA: movups  xmmword ptr [rdi+34h], xmm0
1800070BE: mov     ecx, [r13+10h]
1800070C2: mov     [rdi+44h], ecx
1800070C5: cmp     byte ptr [rdi+30h], 0
1800070C9: jz      short loc_1800070D3
1800070CB: mov     rcx, rdi
1800070CE: call    sub_1800053C0
1800070D3: mov     rax, r15
1800070D6: mov     rbx, [rsp+58h+arg_8]
1800070DB: mov     rbp, [rsp+58h+arg_10]
1800070E0: mov     rsi, [rsp+58h+arg_18]
1800070E5: add     rsp, 30h
1800070E9: pop     r15
1800070EB: pop     r14
1800070ED: pop     r13
1800070EF: pop     r12
1800070F1: pop     rdi
1800070F2: retn

### FUNC 180007100 - 18000714D (77 bytes) name=sub_180007100
180007100: mov     [rsp+arg_0], rbx
180007105: push    rdi
180007106: sub     rsp, 20h
18000710A: lea     rax, off_18000FCD8
180007111: mov     rbx, rcx
180007114: mov     [rcx], rax
180007117: mov     edi, edx
180007119: mov     rcx, [rcx+8]
18000711D: test    rcx, rcx
180007120: jz      short loc_18000712C
180007122: mov     rax, [rcx]
180007125: mov     edx, 1
18000712A: call    qword ptr [rax]
18000712C: test    dil, 1
180007130: jz      short loc_18000713F
180007132: mov     edx, 10h
180007137: mov     rcx, rbx; Block
18000713A: call    j_j_free
18000713F: mov     rax, rbx
180007142: mov     rbx, [rsp+28h+arg_0]
180007147: add     rsp, 20h
18000714B: pop     rdi
18000714C: retn

### FUNC 180007150 - 18000727C (300 bytes) name=sub_180007150
180007150: push    rbx
180007152: sub     rsp, 240h
180007159: mov     rax, cs:__security_cookie
180007160: xor     rax, rsp
180007163: mov     [rsp+248h+var_18], rax
18000716B: mov     rcx, [rcx+8]
18000716F: cmp     byte ptr [rcx+30h], 0
180007173: jz      loc_180007259
180007179: mov     [rsp+248h+lpOverlapped], 0; lpOverlapped
180007182: lea     r9, [rsp+248h+NumberOfBytesWritten]; lpNumberOfBytesWritten
18000718A: mov     rcx, [rcx+28h]; hFile
18000718E: call    cs:WriteFile
180007194: test    eax, eax
180007196: jz      short loc_1800071B8
180007198: mov     eax, [rsp+248h+NumberOfBytesWritten]
18000719F: mov     rcx, [rsp+248h+var_18]
1800071A7: xor     rcx, rsp; StackCookie
1800071AA: call    __security_check_cookie
1800071AF: add     rsp, 240h
1800071B6: pop     rbx
1800071B7: retn
1800071B8: lea     rcx, [rsp+248h+var_118]
1800071C0: call    sub_180004300
1800071C5: lea     rcx, [rsp+248h+var_118]
1800071CD: call    sub_1800060F0
1800071D2: nop
1800071D3: call    cs:GetLastError
1800071D9: mov     ebx, eax
1800071DB: lea     rdx, aErrorWhileWrit; "Error while writing to the serial port:"...
1800071E2: lea     rcx, [rsp+248h+var_108]
1800071EA: call    sub_180006310
1800071EF: mov     rcx, rax
1800071F2: mov     edx, ebx
1800071F4: call    cs:??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@K@Z; std::basic_ostream<char,std::char_traits<char>>::operator<<(ulong)
1800071FA: lea     rdx, [rsp+248h+var_1B8]
180007202: lea     rcx, [rsp+248h+var_118]
18000720A: call    sub_180006050
18000720F: mov     rbx, rax
180007212: lea     rdx, aCUsersDerekSou; "C:\\Users\\Derek\\source\\repos\\EloThe"...
180007219: lea     rcx, [rsp+248h+var_210]
18000721E: call    sub_180002510
180007223: mov     rdx, rax
180007226: mov     rcx, rbx
180007229: call    sub_1800061B0
18000722E: mov     r9, rax
180007231: mov     r8d, 163h
180007237: lea     rcx, [rsp+248h+pExceptionObject]
18000723F: call    sub_180004310
180007244: lea     rdx, stru_1800134B8; pThrowInfo
18000724B: lea     rcx, [rsp+248h+pExceptionObject]; pExceptionObject
180007253: call    _CxxThrowException
180007258: db 90h
180007259: lea     rdx, aSerialWrite; "Serial::write"
180007260: lea     rcx, [rsp+248h+var_1F0]
180007265: call    sub_1800048A0
18000726A: lea     rdx, stru_1800134D8; pThrowInfo
180007271: lea     rcx, [rsp+248h+var_1F0]; pExceptionObject
180007276: call    _CxxThrowException
18000727B: db 0CCh

### FUNC 180007280 - 180007304 (132 bytes) name=sub_180007280
180007280: mov     [rsp+arg_8], rbx
180007285: mov     [rsp+arg_10], rbp
18000728A: mov     [rsp+arg_18], rsi
18000728F: push    rdi
180007290: sub     rsp, 20h
180007294: mov     rbx, rcx
180007297: mov     rsi, r9
18000729A: mov     rcx, [rcx]
18000729D: mov     rbp, r8
1800072A0: mov     rdi, rdx
1800072A3: test    rcx, rcx
1800072A6: jz      short loc_1800072D5
1800072A8: mov     rdx, [rbx+10h]
1800072AC: sub     rdx, rcx
1800072AF: cmp     rdx, 1000h
1800072B6: jb      short loc_1800072D0
1800072B8: mov     r8, [rcx-8]
1800072BC: add     rdx, 27h ; '''
1800072C0: sub     rcx, r8
1800072C3: lea     rax, [rcx-8]
1800072C7: cmp     rax, 1Fh
1800072CB: ja      short loc_1800072FD
1800072CD: mov     rcx, r8; Block
1800072D0: call    j_j_free
1800072D5: lea     rax, [rdi+rbp]
1800072D9: mov     [rbx], rdi
1800072DC: mov     rbp, [rsp+28h+arg_10]
1800072E1: mov     [rbx+8], rax
1800072E5: lea     rax, [rdi+rsi]
1800072E9: mov     rsi, [rsp+28h+arg_18]
1800072EE: mov     [rbx+10h], rax
1800072F2: mov     rbx, [rsp+28h+arg_8]
1800072F7: add     rsp, 20h
1800072FB: pop     rdi
1800072FC: retn
1800072FD: call    cs:_invalid_parameter_noinfo_noreturn
180007303: db 0CCh

### FUNC 180007310 - 18000731F (15 bytes) name=sub_180007310
180007310: sub     rsp, 28h
180007314: mov     rax, [rcx]
180007317: call    qword ptr [rax]
180007319: nop
18000731A: add     rsp, 28h
18000731E: retn

### FUNC 180007320 - 180007354 (52 bytes) name=sub_180007320
180007320: mov     [rsp+arg_0], rbx
180007325: push    rdi
180007326: sub     rsp, 20h
18000732A: mov     ebx, edx
18000732C: mov     rdi, rcx
18000732F: call    sub_180007360
180007334: test    bl, 1
180007337: jz      short loc_180007346
180007339: mov     edx, 30h ; '0'
18000733E: mov     rcx, rdi; Block
180007341: call    j_j_free
180007346: mov     rbx, [rsp+28h+arg_0]
18000734B: mov     rax, rdi
18000734E: add     rsp, 20h
180007352: pop     rdi
180007353: retn

### FUNC 180007360 - 1800073EA (138 bytes) name=sub_180007360
180007360: push    rbx
180007362: sub     rsp, 20h
180007366: mov     rbx, rcx
180007369: lea     rax, off_18000FCE8
180007370: mov     [rcx], rax
180007373: cmp     qword ptr [rcx+20h], 0
180007378: jz      short loc_1800073BB
18000737A: movzx   eax, byte ptr [rcx+18h]
18000737E: cmp     al, 1
180007380: jnz     short loc_1800073BB
180007382: mov     rax, [rcx]
180007385: call    qword ptr [rax+28h]
180007388: nop
180007389: test    al, al
18000738B: jz      short loc_1800073BB
18000738D: mov     byte ptr [rbx+18h], 0
180007391: mov     rcx, [rbx+20h]
180007395: mov     rcx, [rcx+8]
180007399: call    sub_180005790
18000739E: nop
18000739F: mov     rcx, [rbx+20h]
1800073A3: test    rcx, rcx
1800073A6: jz      short loc_1800073B3
1800073A8: mov     rax, [rcx]
1800073AB: mov     edx, 1
1800073B0: call    qword ptr [rax]
1800073B2: nop
1800073B3: mov     qword ptr [rbx+20h], 0
1800073BB: mov     rcx, [rbx+20h]
1800073BF: test    rcx, rcx
1800073C2: jz      short loc_1800073CF
1800073C4: mov     rax, [rcx]
1800073C7: mov     edx, 1
1800073CC: call    qword ptr [rax]
1800073CE: nop
1800073CF: mov     qword ptr [rbx+20h], 0
1800073D7: cmp     dword ptr [rbx+10h], 0
1800073DB: jz      short loc_1800073E4
1800073DD: call    cs:terminate
1800073E3: nop
1800073E4: add     rsp, 20h
1800073E8: pop     rbx
1800073E9: retn

### FUNC 1800073F0 - 180007511 (289 bytes) name=sub_1800073F0
1800073F0: mov     [rsp+arg_10], rbx
1800073F5: push    rsi
1800073F6: push    rdi
1800073F7: push    r14
1800073F9: sub     rsp, 80h
180007400: mov     rax, cs:__security_cookie
180007407: xor     rax, rsp
18000740A: mov     [rsp+98h+var_28], rax
18000740F: mov     edi, r8d
180007412: mov     rsi, rdx
180007415: mov     rbx, rcx
180007418: mov     [rsp+98h+var_38], rcx
18000741D: mov     rax, [rcx]
180007420: call    qword ptr [rax+28h]
180007423: test    al, al
180007425: jz      short loc_180007431
180007427: mov     rax, [rbx]
18000742A: mov     rcx, rbx
18000742D: call    qword ptr [rax+20h]
180007430: nop
180007431: mov     ecx, 10h; Size
180007436: call    ??2@YAPEAX_K@Z; operator new(unsigned __int64)
18000743B: mov     [rsp+98h+var_30], rax
180007440: xorps   xmm0, xmm0
180007443: movups  xmmword ptr [rax], xmm0
180007446: xor     r14d, r14d
180007449: mov     qword ptr [rsp+98h+var_58], r14
18000744E: mov     qword ptr [rsp+98h+var_58+8], r14
180007453: movups  xmm0, xmmword ptr [rsp+98h+var_58]
180007458: movaps  xmmword ptr [rsp+98h+var_58], xmm0
18000745D: mov     [rsp+98h+var_48], r14d
180007462: lea     r9, [rsp+98h+var_58]
180007467: mov     r8d, edi
18000746A: mov     rdx, rsi
18000746D: mov     rcx, rax
180007470: call    sub_180006F50
180007475: nop
180007476: mov     [rbx+20h], rax
18000747A: lea     ecx, [r14+10h]; Size
18000747E: call    ??2@YAPEAX_K@Z; operator new(unsigned __int64)
180007483: mov     [rax], rbx
180007486: lea     rcx, sub_180007310
18000748D: mov     [rax+8], rcx
180007491: mov     [rsp+98h+var_30], rax
180007496: lea     rcx, [rsp+98h+var_58+8]
18000749B: mov     [rsp+98h+ThrdAddr], rcx; ThrdAddr
1800074A0: mov     [rsp+98h+InitFlag], r14d; InitFlag
1800074A5: mov     r9, rax; ArgList
1800074A8: lea     r8, StartAddress; StartAddress
1800074AF: xor     edx, edx; StackSize
1800074B1: xor     ecx, ecx; Security
1800074B3: call    cs:_beginthreadex
1800074B9: mov     qword ptr [rsp+98h+var_58], rax
1800074BE: test    rax, rax
1800074C1: jz      short loc_1800074DD
1800074C3: cmp     [rbx+10h], r14d
1800074C7: jnz     short loc_1800074D6
1800074C9: movaps  xmm0, xmmword ptr [rsp+98h+var_58]
1800074CE: movups  xmmword ptr [rbx+8], xmm0
1800074D2: mov     al, 1
1800074D4: jmp     short loc_1800074F0
1800074D6: call    cs:terminate
1800074DC: nop
1800074DD: mov     [rsp+98h+var_58+8], r14d
1800074E2: mov     ecx, 6
1800074E7: call    cs:?_Throw_Cpp_error@std@@YAXH@Z; std::_Throw_Cpp_error(int)
1800074ED: nop
1800074EE: xor     al, al
1800074F0: mov     rcx, [rsp+98h+var_28]
1800074F5: xor     rcx, rsp; StackCookie
1800074F8: call    __security_check_cookie
1800074FD: mov     rbx, [rsp+98h+arg_10]
180007505: add     rsp, 80h
18000750C: pop     r14
18000750E: pop     rdi
18000750F: pop     rsi
180007510: retn

### FUNC 180007520 - 180007565 (69 bytes) name=sub_180007520
180007520: push    rbx
180007522: sub     rsp, 20h
180007526: mov     rax, [rcx]
180007529: mov     rbx, rcx
18000752C: call    qword ptr [rax+28h]
18000752F: test    al, al
180007531: jz      short loc_18000755F
180007533: mov     rcx, [rbx+20h]
180007537: mov     byte ptr [rbx+18h], 0
18000753B: mov     rcx, [rcx+8]
18000753F: call    sub_180005790
180007544: mov     rcx, [rbx+20h]
180007548: test    rcx, rcx
18000754B: jz      short loc_180007557
18000754D: mov     rax, [rcx]
180007550: mov     edx, 1
180007555: call    qword ptr [rax]
180007557: mov     qword ptr [rbx+20h], 0
18000755F: add     rsp, 20h
180007563: pop     rbx
180007564: retn

### FUNC 180007570 - 180007583 (19 bytes) name=sub_180007570
180007570: cmp     qword ptr [rcx+20h], 0
180007575: jz      short loc_180007580
180007577: movzx   eax, byte ptr [rcx+18h]
18000757B: cmp     al, 1
18000757D: jnz     short loc_180007580
18000757F: retn
180007580: xor     al, al
180007582: retn

### FUNC 180007590 - 1800076B6 (294 bytes) name=sub_180007590
180007590: mov     [rsp+arg_18], rbx
180007595: push    rbp
180007596: push    rsi
180007597: push    rdi
180007598: sub     rsp, 150h
18000759F: mov     rax, cs:__security_cookie
1800075A6: xor     rax, rsp
1800075A9: mov     [rsp+168h+var_20], rax
1800075B1: movsxd  rbp, r8d
1800075B4: mov     rsi, rdx
1800075B7: mov     rbx, rcx
1800075BA: mov     rax, [rcx]
1800075BD: call    qword ptr [rax+28h]
1800075C0: test    al, al
1800075C2: jnz     short loc_1800075CB
1800075C4: mov     eax, 0FFFFFFFFh
1800075C9: jmp     short loc_180007613
1800075CB: mov     rdi, [rbx+20h]
1800075CF: mov     rbx, [rdi+8]
1800075D3: mov     [rsp+168h+var_28], rbx
1800075DB: mov     edx, 0FFFFFFFFh; dwMilliseconds
1800075E0: mov     rcx, [rbx+68h]; hHandle
1800075E4: call    cs:WaitForSingleObject
1800075EA: test    eax, eax
1800075EC: jnz     loc_180007679
1800075F2: mov     r8, rbp
1800075F5: mov     rdx, rsi
1800075F8: mov     rcx, rdi
1800075FB: call    sub_180007150
180007600: mov     rdi, rax
180007603: mov     rcx, [rbx+68h]; hMutex
180007607: call    cs:ReleaseMutex
18000760D: test    eax, eax
18000760F: jz      short loc_180007636
180007611: mov     eax, edi
180007613: mov     rcx, [rsp+168h+var_20]
18000761B: xor     rcx, rsp; StackCookie
18000761E: call    __security_check_cookie
180007623: mov     rbx, [rsp+168h+arg_18]
18000762B: add     rsp, 150h
180007632: pop     rdi
180007633: pop     rsi
180007634: pop     rbp
180007635: retn
180007636: lea     rdx, aCUsersDerekSou; "C:\\Users\\Derek\\source\\repos\\EloThe"...
18000763D: lea     rcx, [rsp+168h+var_128]
180007642: call    sub_180002510
180007647: lea     r9, aErrorReleasing_0; "Error releasing write mutex."
18000764E: mov     r8d, 281h
180007654: mov     rdx, rax
180007657: lea     rcx, [rsp+168h+pExceptionObject]
18000765F: call    sub_180004310
180007664: lea     rdx, stru_1800134B8; pThrowInfo
18000766B: lea     rcx, [rsp+168h+pExceptionObject]; pExceptionObject
180007673: call    _CxxThrowException
180007678: db 90h
180007679: lea     rdx, aCUsersDerekSou; "C:\\Users\\Derek\\source\\repos\\EloThe"...
180007680: lea     rcx, [rsp+168h+var_148]
180007685: call    sub_180002510
18000768A: lea     r9, aErrorClaimingW; "Error claiming write mutex."
180007691: mov     r8d, 279h
180007697: mov     rdx, rax
18000769A: lea     rcx, [rsp+168h+var_108]
18000769F: call    sub_180004310
1800076A4: lea     rdx, stru_1800134B8; pThrowInfo
1800076AB: lea     rcx, [rsp+168h+var_108]; pExceptionObject
1800076B0: call    _CxxThrowException
1800076B5: db 0CCh

### FUNC 1800076C0 - 180007906 (582 bytes) name=sub_1800076C0
1800076C0: mov     [rsp-8+arg_8], rbx
1800076C5: mov     [rsp-8+arg_10], rsi
1800076CA: mov     [rsp-8+arg_18], rdi
1800076CF: push    rbp
1800076D0: push    r14
1800076D2: push    r15
1800076D4: lea     rbp, [rsp-620h]
1800076DC: sub     rsp, 720h
1800076E3: mov     rax, cs:__security_cookie
1800076EA: xor     rax, rsp
1800076ED: mov     [rbp+630h+var_20], rax
1800076F4: mov     rsi, rcx
1800076F7: mov     byte ptr [rcx+18h], 1
1800076FB: movzx   eax, byte ptr [rcx+18h]
1800076FF: test    al, al
180007701: jz      loc_1800077CD
180007707: mov     r15d, 400h
18000770D: nop     dword ptr [rax]
180007710: mov     rax, [rsi+20h]
180007714: mov     rcx, [rax+8]
180007718: cmp     byte ptr [rcx+30h], 0
18000771C: jnz     short loc_180007722
18000771E: xor     edi, edi
180007720: jmp     short loc_180007743
180007722: lea     r8, [rbp+630h+Stat]; lpStat
180007729: xor     edx, edx; lpErrors
18000772B: mov     rcx, [rcx+28h]; hFile
18000772F: call    cs:ClearCommError
180007735: test    eax, eax
180007737: jz      loc_180007834
18000773D: mov     edi, [rbp+630h+Stat.cbInQue]
180007743: test    edi, edi
180007745: jle     short loc_1800077C1
180007747: mov     r8, r15; Size
18000774A: xor     edx, edx; Val
18000774C: lea     rcx, [rbp+630h+var_420]; void *
180007753: call    memset
180007758: cmp     edi, r15d
18000775B: cmovg   edi, r15d
18000775F: mov     r14, [rsi+20h]
180007763: mov     rbx, [r14+8]
180007767: mov     [rbp+630h+var_540], rbx
18000776E: mov     edx, 0FFFFFFFFh; dwMilliseconds
180007773: mov     rcx, [rbx+60h]; hHandle
180007777: call    cs:WaitForSingleObject
18000777D: test    eax, eax
18000777F: jnz     short loc_1800077F9
180007781: mov     r8d, edi
180007784: lea     rdx, [rbp+630h+var_420]
18000778B: mov     rcx, [r14+8]
18000778F: call    sub_180005890
180007794: mov     rdi, rax
180007797: mov     rcx, [rbx+60h]; hMutex
18000779B: call    cs:ReleaseMutex
1800077A1: test    eax, eax
1800077A3: jz      loc_1800078CB
1800077A9: mov     rcx, [rsi+28h]
1800077AD: test    rcx, rcx
1800077B0: jz      short loc_1800077C1
1800077B2: mov     rax, [rcx]
1800077B5: mov     r8d, edi
1800077B8: lea     rdx, [rbp+630h+var_420]
1800077BF: call    qword ptr [rax]
1800077C1: movzx   eax, byte ptr [rsi+18h]
1800077C5: test    al, al
1800077C7: jnz     loc_180007710
1800077CD: mov     rcx, [rbp+630h+var_20]
1800077D4: xor     rcx, rsp; StackCookie
1800077D7: call    __security_check_cookie
1800077DC: lea     r11, [rsp+730h+var_10]
1800077E4: mov     rbx, [r11+28h]
1800077E8: mov     rsi, [r11+30h]
1800077EC: mov     rdi, [r11+38h]
1800077F0: mov     rsp, r11
1800077F3: pop     r15
1800077F5: pop     r14
1800077F7: pop     rbp
1800077F8: retn
1800077F9: lea     rdx, aCUsersDerekSou; "C:\\Users\\Derek\\source\\repos\\EloThe"...
180007800: lea     rcx, [rsp+730h+var_6F0]
180007805: call    sub_180002510
18000780A: lea     r9, aErrorClaimingR; "Error claiming read mutex."
180007811: mov     r8d, 269h
180007817: mov     rdx, rax
18000781A: lea     rcx, [rbp+630h+pExceptionObject]
18000781E: call    sub_180004310
180007823: lea     rdx, stru_1800134B8; pThrowInfo
18000782A: lea     rcx, [rbp+630h+pExceptionObject]; pExceptionObject
18000782E: call    _CxxThrowException
180007833: align 4
180007834: lea     rcx, [rbp+630h+var_520]
18000783B: call    sub_180004300
180007840: lea     rcx, [rbp+630h+var_520]
180007847: call    sub_1800060F0
18000784C: nop
18000784D: call    cs:GetLastError
180007853: mov     ebx, eax
180007855: lea     rdx, aErrorWhileChec; "Error while checking status of the seri"...
18000785C: lea     rcx, [rbp+630h+var_510]
180007863: call    sub_180006310
180007868: mov     rcx, rax
18000786B: mov     edx, ebx
18000786D: call    cs:??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@K@Z; std::basic_ostream<char,std::char_traits<char>>::operator<<(ulong)
180007873: lea     rdx, [rbp+630h+var_6B0]
180007877: lea     rcx, [rbp+630h+var_520]
18000787E: call    sub_180006050
180007883: mov     rbx, rax
180007886: lea     rdx, aCUsersDerekSou; "C:\\Users\\Derek\\source\\repos\\EloThe"...
18000788D: lea     rcx, [rsp+730h+var_6D0]
180007892: call    sub_180002510
180007897: mov     rdx, rax
18000789A: mov     rcx, rbx
18000789D: call    sub_1800061B0
1800078A2: mov     r9, rax
1800078A5: mov     r8d, 138h
1800078AB: lea     rcx, [rbp+630h+var_5B0]
1800078B2: call    sub_180004310
1800078B7: lea     rdx, stru_1800134B8; pThrowInfo
1800078BE: lea     rcx, [rbp+630h+var_5B0]; pExceptionObject
1800078C5: call    _CxxThrowException
1800078CA: db 90h
1800078CB: lea     rdx, aCUsersDerekSou; "C:\\Users\\Derek\\source\\repos\\EloThe"...
1800078D2: lea     rcx, [rsp+730h+var_710]
1800078D7: call    sub_180002510
1800078DC: lea     r9, aErrorReleasing; "Error releasing read mutex."
1800078E3: mov     r8d, 271h
1800078E9: mov     rdx, rax
1800078EC: lea     rcx, [rbp+630h+var_690]
1800078F0: call    sub_180004310
1800078F5: lea     rdx, stru_1800134B8; pThrowInfo
1800078FC: lea     rcx, [rbp+630h+var_690]; pExceptionObject
180007900: call    _CxxThrowException
180007905: db 0CCh

### FUNC 180007930 - 18000795D (45 bytes) name=StartAddress
180007930: push    rbx
180007932: sub     rsp, 20h
180007936: mov     rbx, rcx
180007939: mov     rcx, [rcx]
18000793C: call    qword ptr [rbx+8]
18000793F: nop
180007940: call    cs:_Cnd_do_broadcast_at_thread_exit
180007946: nop
180007947: mov     edx, 10h
18000794C: mov     rcx, rbx; Block
18000794F: call    j_j_free
180007954: nop
180007955: xor     eax, eax
180007957: add     rsp, 20h
18000795B: pop     rbx
18000795C: retn

### FUNC 180007960 - 1800079B5 (85 bytes) name=sub_180007960
180007960: mov     [rsp+arg_0], rcx
180007965: mov     qword ptr [rsp+arg_8], rdx
18000796A: mov     [rsp+arg_10], r8
18000796F: mov     [rsp+arg_18], r9
180007974: push    rbx
180007975: push    rsi
180007976: push    rdi
180007977: sub     rsp, 30h
18000797B: mov     rdi, rcx
18000797E: lea     rsi, [rsp+48h+arg_8]
180007983: mov     ecx, 1; Ix
180007988: call    cs:__acrt_iob_func
18000798E: mov     rbx, rax
180007991: call    sub_180002FC0
180007996: xor     r9d, r9d; Locale
180007999: mov     [rsp+48h+ArgList], rsi; ArgList
18000799E: mov     r8, rdi; Format
1800079A1: mov     rdx, rbx; Stream
1800079A4: mov     rcx, [rax]; Options
1800079A7: call    cs:__stdio_common_vfprintf
1800079AD: add     rsp, 30h
1800079B1: pop     rdi
1800079B2: pop     rsi
1800079B3: pop     rbx
1800079B4: retn

### FUNC 1800079C0 - 180007A37 (119 bytes) name=sub_1800079C0
1800079C0: mov     [rsp+arg_8], rbx
1800079C5: mov     [rsp+arg_10], rsi
1800079CA: push    rdi
1800079CB: sub     rsp, 20h
1800079CF: lea     rax, off_1800101B8
1800079D6: mov     rsi, rcx
1800079D9: mov     [rcx], rax
1800079DC: mov     edi, edx
1800079DE: sub     rcx, 0FFFFFFFFFFFFFF80h; _Mtx_t
1800079E2: call    cs:_Mtx_destroy_in_situ
1800079E8: lea     rcx, [rsi+38h]; _Cnd_t
1800079EC: call    cs:_Cnd_destroy_in_situ
1800079F2: lea     rcx, [rsi+8]
1800079F6: call    sub_180002550
1800079FB: mov     rcx, [rsi+8]; Block
1800079FF: mov     edx, 10h
180007A04: mov     qword ptr [rsi+8], 0
180007A0C: call    j_j_free
180007A11: test    dil, 1
180007A15: jz      short loc_180007A24
180007A17: mov     edx, 0D8h
180007A1C: mov     rcx, rsi; Block
180007A1F: call    j_j_free
180007A24: mov     rbx, [rsp+28h+arg_8]
180007A29: mov     rax, rsi
180007A2C: mov     rsi, [rsp+28h+arg_10]
180007A31: add     rsp, 20h
180007A35: pop     rdi
180007A36: retn

### FUNC 180007A40 - 180007CCC (652 bytes) name=sub_180007A40
180007A40: mov     [rsp-18h+arg_8], rbx
180007A45: mov     [rsp-18h+arg_10], rsi
180007A4A: push    rbp
180007A4B: push    rdi
180007A4C: push    r14
180007A4E: mov     rbp, rsp
180007A51: sub     rsp, 70h
180007A55: mov     rax, cs:__security_cookie
180007A5C: xor     rax, rsp
180007A5F: mov     [rbp+var_10], rax
180007A63: mov     rdi, rcx
180007A66: test    edx, edx
180007A68: jnz     short loc_180007A71
180007A6A: mov     al, 1
180007A6C: jmp     loc_180007CAB
180007A71: mov     ebx, 80h
180007A76: cmp     edx, ebx
180007A78: jg      short loc_180007A86
180007A7A: mov     ebx, edx
180007A7C: mov     eax, 0FFFFFF80h
180007A81: cmp     edx, eax
180007A83: cmovl   ebx, eax
180007A86: xorps   xmm1, xmm1
180007A89: movdqu  xmmword ptr [rbp+Block], xmm1
180007A8E: xor     r14d, r14d
180007A91: mov     [rbp+var_38], r14
180007A95: lea     r8, [rbp+var_50]
180007A99: xor     edx, edx
180007A9B: lea     rcx, [rbp+Block]
180007A9F: test    ebx, ebx
180007AA1: jns     short loc_180007AD5
180007AA3: mov     [rbp+var_50], 1
180007AA7: call    sub_180007D30
180007AAC: neg     bl
180007AAE: mov     [rbp+var_50], bl
180007AB1: mov     rdx, [rbp+Block+8]
180007AB5: cmp     rdx, [rbp+var_38]
180007AB9: jz      short loc_180007AC6
180007ABB: mov     [rdx], bl
180007ABD: inc     rdx
180007AC0: mov     [rbp+Block+8], rdx
180007AC4: jmp     short loc_180007B03
180007AC6: lea     r8, [rbp+var_50]
180007ACA: lea     rcx, [rbp+Block]
180007ACE: call    sub_180007D30
180007AD3: jmp     short loc_180007B03
180007AD5: mov     [rbp+var_50], 0
180007AD9: call    sub_180007D30
180007ADE: mov     [rbp+var_50], bl
180007AE1: mov     rdx, [rbp+Block+8]
180007AE5: cmp     rdx, [rbp+var_38]
180007AE9: jz      short loc_180007AF6
180007AEB: mov     [rdx], bl
180007AED: inc     rdx
180007AF0: mov     [rbp+Block+8], rdx
180007AF4: jmp     short loc_180007B03
180007AF6: lea     r8, [rbp+var_50]
180007AFA: lea     rcx, [rbp+Block]
180007AFE: call    sub_180007D30
180007B03: mov     byte ptr [rdi+30h], 0
180007B07: mov     ecx, 28h ; '('; Size
180007B0C: call    ??2@YAPEAX_K@Z; operator new(unsigned __int64)
180007B11: mov     rbx, rax
180007B14: mov     qword ptr [rbp+var_30], rax
180007B18: xorps   xmm0, xmm0
180007B1B: xor     eax, eax
180007B1D: movups  xmmword ptr [rbx], xmm0
180007B20: movups  xmmword ptr [rbx+10h], xmm0
180007B24: mov     [rbx+20h], rax
180007B28: lea     rax, off_1800100F8
180007B2F: mov     [rbx], rax
180007B32: mov     [rbx+8], r14
180007B36: mov     [rbx+10h], r14
180007B3A: mov     [rbx+18h], r14
180007B3E: lea     r9, [rbp+Block]
180007B42: mov     r8b, 77h ; 'w'
180007B45: mov     rcx, rbx
180007B48: call    sub_180009D70
180007B4D: nop
180007B4E: mov     rcx, [rdi+0D0h]
180007B55: test    rcx, rcx
180007B58: jz      short loc_180007B6C
180007B5A: mov     rdx, [rbx+8]
180007B5E: mov     r8, [rbx+10h]
180007B62: sub     r8, rdx
180007B65: mov     r9, [rcx]
180007B68: call    qword ptr [r9+8]
180007B6C: mov     rax, [rbx]
180007B6F: mov     esi, 1
180007B74: mov     edx, esi
180007B76: mov     rcx, rbx
180007B79: call    qword ptr [rax]
180007B7B: xorps   xmm0, xmm0
180007B7E: movups  [rbp+var_30], xmm0
180007B82: lea     rbx, [rdi+80h]
180007B89: mov     qword ptr [rbp+var_30], rbx
180007B8D: mov     byte ptr [rbp+var_30+8], 0
180007B91: mov     rcx, rbx; _Mtx_t
180007B94: call    cs:_Mtx_lock
180007B9A: test    eax, eax
180007B9C: jz      short loc_180007BA7
180007B9E: mov     ecx, eax
180007BA0: call    cs:?_Throw_C_error@std@@YAXH@Z; std::_Throw_C_error(int)
180007BA6: int     3; Trap to Debugger
180007BA7: mov     byte ptr [rbp+var_30+8], sil
180007BAB: call    cs:_Xtime_get_ticks
180007BB1: add     rax, 0F4240h
180007BB7: imul    rcx, rax, 64h ; 'd'
180007BBB: mov     rax, 112E0BE826D694B3h
180007BC5: imul    rcx
180007BC8: sar     rdx, 1Ah
180007BCC: mov     rax, rdx
180007BCF: shr     rax, 3Fh
180007BD3: add     rdx, rax
180007BD6: mov     [rbp+var_20.sec], rdx
180007BDA: imul    rax, rdx, 3B9ACA00h
180007BE1: sub     rcx, rax
180007BE4: mov     [rbp+var_20.nsec], ecx
180007BE7: mov     rcx, rbx; _Mtx_t
180007BEA: call    cs:_Mtx_current_owns
180007BF0: test    eax, eax
180007BF2: jnz     short loc_180007BFE
180007BF4: lea     ecx, [rax+4]
180007BF7: call    cs:?_Throw_Cpp_error@std@@YAXH@Z; std::_Throw_Cpp_error(int)
180007BFD: int     3; Trap to Debugger
180007BFE: lea     rcx, [rdi+38h]; _Cnd_t
180007C02: lea     r8, [rbp+var_20]; xtime *
180007C06: mov     rdx, rbx; _Mtx_t
180007C09: call    cs:_Cnd_timedwait
180007C0F: test    eax, eax
180007C11: jz      short loc_180007C21
180007C13: cmp     eax, 2
180007C16: jz      short loc_180007C24
180007C18: mov     ecx, eax
180007C1A: call    cs:?_Throw_C_error@std@@YAXH@Z; std::_Throw_C_error(int)
180007C20: int     3; Trap to Debugger
180007C21: mov     esi, r14d
180007C24: cmp     cs:byte_180015FF0, 0
180007C2B: jz      short loc_180007C50
180007C2D: cmp     esi, 1
180007C30: jnz     short loc_180007C40
180007C32: lea     rcx, Format; "EloMotorDevice timeout\n"
180007C39: call    sub_180007960
180007C3E: jmp     short loc_180007C50
180007C40: movzx   edx, byte ptr [rdi+30h]
180007C44: lea     rcx, aElomotordevice_0; "EloMotorDevice:%d\n"
180007C4B: call    sub_180007960
180007C50: movzx   edi, byte ptr [rdi+30h]
180007C54: mov     rcx, rbx; _Mtx_t
180007C57: call    cs:_Mtx_unlock
180007C5D: test    eax, eax
180007C5F: jz      short loc_180007C6A
180007C61: mov     ecx, eax
180007C63: call    cs:?_Throw_C_error@std@@YAXH@Z; std::_Throw_C_error(int)
180007C69: nop
180007C6A: mov     rcx, [rbp+Block]; Block
180007C6E: test    rcx, rcx
180007C71: jz      short loc_180007CA7
180007C73: mov     rdx, [rbp+var_38]
180007C77: sub     rdx, rcx
180007C7A: mov     rax, rcx
180007C7D: cmp     rdx, 1000h
180007C84: jb      short loc_180007CA2
180007C86: add     rdx, 27h ; '''
180007C8A: mov     rcx, [rcx-8]
180007C8E: sub     rax, rcx
180007C91: add     rax, 0FFFFFFFFFFFFFFF8h
180007C95: cmp     rax, 1Fh
180007C99: jbe     short loc_180007CA2
180007C9B: call    cs:_invalid_parameter_noinfo_noreturn
180007CA1: int     3; Trap to Debugger
180007CA2: call    j_j_free
180007CA7: movzx   eax, dil
180007CAB: mov     rcx, [rbp+var_10]
180007CAF: xor     rcx, rsp; StackCookie
180007CB2: call    __security_check_cookie
180007CB7: lea     r11, [rsp+70h+var_s0]
180007CBC: mov     rbx, [r11+28h]
180007CC0: mov     rsi, [r11+30h]
180007CC4: mov     rsp, r11
180007CC7: pop     r14
180007CC9: pop     rdi
180007CCA: pop     rbp
180007CCB: retn

### FUNC 180007CD0 - 180007CE1 (17 bytes) name=sub_180007CD0
180007CD0: cmp     dl, 2
180007CD3: jnz     short loc_180007CDE
180007CD5: cmp     r8b, 77h ; 'w'
180007CD9: jnz     short loc_180007CDE
180007CDB: mov     al, 1
180007CDD: retn
180007CDE: xor     al, al
180007CE0: retn

### FUNC 180007CF0 - 180007D29 (57 bytes) name=sub_180007CF0
180007CF0: sub     rsp, 28h
180007CF4: mov     rax, [rdx]
180007CF7: cmp     byte ptr [rax+4], 2
180007CFB: jnz     short loc_180007D24
180007CFD: cmp     byte ptr [rax+5], 77h ; 'w'
180007D01: jnz     short loc_180007D24
180007D03: cmp     byte ptr [rax+8], 1
180007D07: setz    al
180007D0A: mov     [rcx+30h], al
180007D0D: add     rcx, 38h ; '8'; _Cnd_t
180007D11: call    cs:_Cnd_broadcast
180007D17: test    eax, eax
180007D19: jz      short loc_180007D24
180007D1B: mov     ecx, eax
180007D1D: call    cs:?_Throw_C_error@std@@YAXH@Z; std::_Throw_C_error(int)
180007D23: nop
180007D24: add     rsp, 28h
180007D28: retn

### FUNC 180007D30 - 180007E67 (311 bytes) name=sub_180007D30
180007D30: mov     [rsp+arg_10], rbp
180007D35: mov     [rsp+arg_18], rsi
180007D3A: push    r12
180007D3C: push    r14
180007D3E: push    r15
180007D40: sub     rsp, 20h
180007D44: mov     rsi, rcx
180007D47: mov     r14, rdx
180007D4A: mov     rcx, [rcx]
180007D4D: mov     r9, 7FFFFFFFFFFFFFFFh
180007D57: sub     r14, rcx
180007D5A: mov     r12, r8
180007D5D: mov     r15, rdx
180007D60: mov     rbp, [rsi+8]
180007D64: sub     rbp, rcx
180007D67: cmp     rbp, r9
180007D6A: jz      loc_180007E61
180007D70: mov     rax, [rsi+10h]
180007D74: inc     rbp
180007D77: sub     rax, rcx
180007D7A: mov     [rsp+38h+arg_0], rbx
180007D7F: mov     rcx, rax
180007D82: shr     rcx, 1
180007D85: sub     r9, rcx
180007D88: cmp     rax, r9
180007D8B: jbe     short loc_180007D92
180007D8D: mov     rbx, rbp
180007D90: jmp     short loc_180007D9D
180007D92: lea     rbx, [rcx+rax]
180007D96: cmp     rbx, rbp
180007D99: cmovb   rbx, rbp
180007D9D: mov     [rsp+38h+arg_8], rdi
180007DA2: cmp     rbx, 1000h
180007DA9: jb      short loc_180007DD7
180007DAB: lea     rcx, [rbx+27h]; Size
180007DAF: cmp     rcx, rbx
180007DB2: jbe     loc_180007E5B
180007DB8: call    ??2@YAPEAX_K@Z; operator new(unsigned __int64)
180007DBD: test    rax, rax
180007DC0: jz      short loc_180007DD0
180007DC2: lea     rdi, [rax+27h]
180007DC6: and     rdi, 0FFFFFFFFFFFFFFE0h
180007DCA: mov     [rdi-8], rax
180007DCE: jmp     short loc_180007DEB
180007DD0: call    cs:_invalid_parameter_noinfo_noreturn
180007DD6: int     3; Trap to Debugger
180007DD7: test    rbx, rbx
180007DDA: jz      short loc_180007DE9
180007DDC: mov     rcx, rbx; Size
180007DDF: call    ??2@YAPEAX_K@Z; operator new(unsigned __int64)
180007DE4: mov     rdi, rax
180007DE7: jmp     short loc_180007DEB
180007DE9: xor     edi, edi
180007DEB: movzx   eax, byte ptr [r12]
180007DF0: add     r14, rdi
180007DF3: mov     rcx, rdi; void *
180007DF6: mov     [r14], al
180007DF9: mov     r8, [rsi+8]
180007DFD: mov     rdx, [rsi]; Src
180007E00: cmp     r15, r8
180007E03: jnz     short loc_180007E0A
180007E05: sub     r8, rdx
180007E08: jmp     short loc_180007E23
180007E0A: mov     r8, r15
180007E0D: sub     r8, rdx; Size
180007E10: call    memmove
180007E15: mov     r8, [rsi+8]
180007E19: lea     rcx, [r14+1]; void *
180007E1D: sub     r8, r15; Size
180007E20: mov     rdx, r15; Src
180007E23: call    memmove
180007E28: mov     r9, rbx
180007E2B: mov     r8, rbp
180007E2E: mov     rdx, rdi
180007E31: mov     rcx, rsi
180007E34: call    sub_180007280
180007E39: mov     rdi, [rsp+38h+arg_8]
180007E3E: mov     rax, r14
180007E41: mov     rbx, [rsp+38h+arg_0]
180007E46: mov     rbp, [rsp+38h+arg_10]
180007E4B: mov     rsi, [rsp+38h+arg_18]
180007E50: add     rsp, 20h
180007E54: pop     r15
180007E56: pop     r14
180007E58: pop     r12
180007E5A: retn
180007E5B: call    ?cancel_current_task@Concurrency@@YAXXZ; Concurrency::cancel_current_task(void)
180007E60: db 0CCh
180007E61: call    sub_180002B80
180007E66: db 0CCh

### FUNC 180007E70 - 180007EE7 (119 bytes) name=sub_180007E70
180007E70: mov     [rsp+arg_8], rbx
180007E75: mov     [rsp+arg_10], rsi
180007E7A: push    rdi
180007E7B: sub     rsp, 20h
180007E7F: lea     rax, off_1800101B8
180007E86: mov     rsi, rcx
180007E89: mov     [rcx], rax
180007E8C: mov     edi, edx
180007E8E: sub     rcx, 0FFFFFFFFFFFFFF80h; _Mtx_t
180007E92: call    cs:_Mtx_destroy_in_situ
180007E98: lea     rcx, [rsi+38h]; _Cnd_t
180007E9C: call    cs:_Cnd_destroy_in_situ
180007EA2: lea     rcx, [rsi+8]
180007EA6: call    sub_180002550
180007EAB: mov     rcx, [rsi+8]; Block
180007EAF: mov     edx, 10h
180007EB4: mov     qword ptr [rsi+8], 0
180007EBC: call    j_j_free
180007EC1: test    dil, 1
180007EC5: jz      short loc_180007ED4
180007EC7: mov     edx, 0E0h
180007ECC: mov     rcx, rsi; Block
180007ECF: call    j_j_free
180007ED4: mov     rbx, [rsp+28h+arg_8]
180007ED9: mov     rax, rsi
180007EDC: mov     rsi, [rsp+28h+arg_10]
180007EE1: add     rsp, 20h
180007EE5: pop     rdi
180007EE6: retn

### FUNC 180007EF0 - 180007F01 (17 bytes) name=sub_180007EF0
180007EF0: cmp     dl, 2
180007EF3: jnz     short loc_180007EFE
180007EF5: cmp     r8b, 78h ; 'x'
180007EF9: jnz     short loc_180007EFE
180007EFB: mov     al, 1
180007EFD: retn
180007EFE: xor     al, al
180007F00: retn

### FUNC 180007F10 - 180007F4C (60 bytes) name=sub_180007F10
180007F10: mov     rax, [rdx]
180007F13: cmp     byte ptr [rax+4], 2
180007F17: jnz     short locret_180007F4B
180007F19: cmp     byte ptr [rax+5], 78h ; 'x'
180007F1D: jnz     short locret_180007F4B
180007F1F: cmp     byte ptr [rax+8], 0
180007F23: jnz     short loc_180007F2C
180007F25: mov     edx, 0FFFFFFFFh
180007F2A: jmp     short loc_180007F39
180007F2C: movzx   edx, byte ptr [rax+9]
180007F30: movzx   eax, byte ptr [rax+0Ah]
180007F34: shl     edx, 8
180007F37: or      edx, eax
180007F39: mov     rcx, [rcx+0D8h]
180007F40: test    rcx, rcx
180007F43: jz      short locret_180007F4B
180007F45: mov     rax, [rcx]
180007F48: jmp     qword ptr [rax]
180007F4B: retn

### FUNC 180007F70 - 180007FA9 (57 bytes) name=sub_180007F70
180007F70: sub     rsp, 28h
180007F74: mov     rax, [rdx]
180007F77: cmp     byte ptr [rax+4], 2
180007F7B: jnz     short loc_180007FA4
180007F7D: cmp     byte ptr [rax+5], 50h ; 'P'
180007F81: jnz     short loc_180007FA4
180007F83: cmp     byte ptr [rax+8], 1
180007F87: setz    al
180007F8A: mov     [rcx+30h], al
180007F8D: add     rcx, 38h ; '8'; _Cnd_t
180007F91: call    cs:_Cnd_broadcast
180007F97: test    eax, eax
180007F99: jz      short loc_180007FA4
180007F9B: mov     ecx, eax
180007F9D: call    cs:?_Throw_C_error@std@@YAXH@Z; std::_Throw_C_error(int)
180007FA3: nop
180007FA4: add     rsp, 28h
180007FA8: retn

### FUNC 180007FB0 - 180007FC1 (17 bytes) name=sub_180007FB0
180007FB0: cmp     dl, 2
180007FB3: jnz     short loc_180007FBE
180007FB5: cmp     r8b, 31h ; '1'
180007FB9: jnz     short loc_180007FBE
180007FBB: mov     al, 1
180007FBD: retn
180007FBE: xor     al, al
180007FC0: retn

### FUNC 180007FD0 - 180008009 (57 bytes) name=sub_180007FD0
180007FD0: sub     rsp, 28h
180007FD4: mov     rax, [rdx]
180007FD7: cmp     byte ptr [rax+4], 2
180007FDB: jnz     short loc_180008004
180007FDD: cmp     byte ptr [rax+5], 31h ; '1'
180007FE1: jnz     short loc_180008004
180007FE3: cmp     byte ptr [rax+8], 1
180007FE7: setz    al
180007FEA: mov     [rcx+30h], al
180007FED: add     rcx, 38h ; '8'; _Cnd_t
180007FF1: call    cs:_Cnd_broadcast
180007FF7: test    eax, eax
180007FF9: jz      short loc_180008004
180007FFB: mov     ecx, eax
180007FFD: call    cs:?_Throw_C_error@std@@YAXH@Z; std::_Throw_C_error(int)
180008003: nop
180008004: add     rsp, 28h
180008008: retn

### FUNC 180008010 - 180008021 (17 bytes) name=sub_180008010
180008010: cmp     dl, 2
180008013: jnz     short loc_18000801E
180008015: cmp     r8b, 41h ; 'A'
180008019: jnz     short loc_18000801E
18000801B: mov     al, 1
18000801D: retn
18000801E: xor     al, al
180008020: retn

### FUNC 180008030 - 180008069 (57 bytes) name=sub_180008030
180008030: sub     rsp, 28h
180008034: mov     rax, [rdx]
180008037: cmp     byte ptr [rax+4], 2
18000803B: jnz     short loc_180008064
18000803D: cmp     byte ptr [rax+5], 41h ; 'A'
180008041: jnz     short loc_180008064
180008043: cmp     byte ptr [rax+8], 1
180008047: setz    al
18000804A: mov     [rcx+30h], al
18000804D: add     rcx, 38h ; '8'; _Cnd_t
180008051: call    cs:_Cnd_broadcast
180008057: test    eax, eax
180008059: jz      short loc_180008064
18000805B: mov     ecx, eax
18000805D: call    cs:?_Throw_C_error@std@@YAXH@Z; std::_Throw_C_error(int)
180008063: nop
180008064: add     rsp, 28h
180008068: retn

### FUNC 180008070 - 1800080A4 (52 bytes) name=sub_180008070
180008070: mov     [rsp+arg_0], rbx
180008075: push    rdi
180008076: sub     rsp, 20h
18000807A: mov     ebx, edx
18000807C: mov     rdi, rcx
18000807F: call    sub_1800080B0
180008084: test    bl, 1
180008087: jz      short loc_180008096
180008089: mov     edx, 138h
18000808E: mov     rcx, rdi; Block
180008091: call    j_j_free
180008096: mov     rbx, [rsp+28h+arg_0]
18000809B: mov     rax, rdi
18000809E: add     rsp, 20h
1800080A2: pop     rdi
1800080A3: retn

### FUNC 1800080B0 - 180008287 (471 bytes) name=sub_1800080B0
1800080B0: mov     [rsp+arg_8], rbx
1800080B5: mov     [rsp+arg_10], rbp
1800080BA: mov     [rsp+arg_18], rsi
1800080BF: push    rdi
1800080C0: sub     rsp, 20h
1800080C4: mov     rsi, [rcx+0F0h]
1800080CB: lea     rax, off_180010028
1800080D2: mov     [rcx], rax
1800080D5: xor     ebp, ebp
1800080D7: lea     rax, off_180010048
1800080DE: mov     rdi, rcx
1800080E1: mov     [rcx+0D8h], rax
1800080E8: test    rsi, rsi
1800080EB: jz      loc_180008185
1800080F1: lea     rax, off_18000F7E0
1800080F8: lea     rcx, [rsi+0A0h]; _Mtx_t
1800080FF: mov     [rsi], rax
180008102: call    cs:_Mtx_destroy_in_situ
180008108: lea     rcx, [rsi+58h]; _Cnd_t
18000810C: call    cs:_Cnd_destroy_in_situ
180008112: lea     rcx, [rsi+20h]
180008116: call    sub_180002550
18000811B: mov     rcx, [rsi+20h]; Block
18000811F: lea     edx, [rbp+10h]
180008122: mov     [rsi+20h], rbp
180008126: call    j_j_free
18000812B: mov     rcx, [rsi+8]
18000812F: test    rcx, rcx
180008132: jz      short loc_180008171
180008134: mov     rdx, [rsi+18h]
180008138: sub     rdx, rcx
18000813B: cmp     rdx, 1000h
180008142: jb      short loc_180008160
180008144: mov     r8, [rcx-8]
180008148: add     rdx, 27h ; '''
18000814C: sub     rcx, r8
18000814F: lea     rax, [rcx-8]
180008153: cmp     rax, 1Fh
180008157: ja      loc_180008280
18000815D: mov     rcx, r8; Block
180008160: call    j_j_free
180008165: mov     [rsi+8], rbp
180008169: mov     [rsi+10h], rbp
18000816D: mov     [rsi+18h], rbp
180008171: mov     edx, 0F0h
180008176: mov     rcx, rsi; Block
180008179: call    j_j_free
18000817E: mov     [rdi+0F0h], rbp
180008185: mov     rcx, [rdi+118h]
18000818C: test    rcx, rcx
18000818F: jz      short loc_1800081DA
180008191: mov     rdx, [rdi+128h]
180008198: sub     rdx, rcx
18000819B: cmp     rdx, 1000h
1800081A2: jb      short loc_1800081C0
1800081A4: mov     r8, [rcx-8]
1800081A8: add     rdx, 27h ; '''
1800081AC: sub     rcx, r8
1800081AF: lea     rax, [rcx-8]
1800081B3: cmp     rax, 1Fh
1800081B7: ja      loc_180008280
1800081BD: mov     rcx, r8; Block
1800081C0: call    j_j_free
1800081C5: mov     [rdi+118h], rbp
1800081CC: mov     [rdi+120h], rbp
1800081D3: mov     [rdi+128h], rbp
1800081DA: mov     rdx, [rdi+110h]
1800081E1: cmp     rdx, 10h
1800081E5: jb      short loc_180008217
1800081E7: mov     rcx, [rdi+0F8h]
1800081EE: inc     rdx
1800081F1: cmp     rdx, 1000h
1800081F8: jb      short loc_180008212
1800081FA: mov     r8, [rcx-8]
1800081FE: add     rdx, 27h ; '''
180008202: sub     rcx, r8
180008205: lea     rax, [rcx-8]
180008209: cmp     rax, 1Fh
18000820D: ja      short loc_180008280
18000820F: mov     rcx, r8; Block
180008212: call    j_j_free
180008217: lea     rax, off_1800101B8
18000821E: mov     [rdi+108h], rbp
180008225: mov     qword ptr [rdi+110h], 0Fh
180008230: lea     rcx, [rdi+80h]; _Mtx_t
180008237: mov     [rdi+0F8h], bpl
18000823E: mov     [rdi], rax
180008241: call    cs:_Mtx_destroy_in_situ
180008247: lea     rcx, [rdi+38h]; _Cnd_t
18000824B: call    cs:_Cnd_destroy_in_situ
180008251: lea     rcx, [rdi+8]
180008255: call    sub_180002550
18000825A: mov     rcx, [rdi+8]; Block
18000825E: mov     edx, 10h
180008263: mov     [rdi+8], rbp
180008267: mov     rbx, [rsp+28h+arg_8]
18000826C: mov     rbp, [rsp+28h+arg_10]
180008271: mov     rsi, [rsp+28h+arg_18]
180008276: add     rsp, 20h
18000827A: pop     rdi
18000827B: jmp     j_j_free
180008280: call    cs:_invalid_parameter_noinfo_noreturn
180008286: db 0CCh

### FUNC 180008290 - 1800082C2 (50 bytes) name=sub_180008290
180008290: cmp     dl, 81h
180008293: jnz     short loc_18000829E
180008295: cmp     r8b, 3
180008299: jz      short loc_1800082BF
18000829B: xor     al, al
18000829D: retn
18000829E: cmp     dl, 2
1800082A1: jnz     short loc_18000829B
1800082A3: lea     eax, [r8-60h]
1800082A7: cmp     al, 0Fh
1800082A9: ja      short loc_1800082B5
1800082AB: mov     ecx, 0A3FFh
1800082B0: bt      ecx, eax
1800082B3: jb      short loc_1800082BF
1800082B5: sub     r8b, 8
1800082B9: cmp     r8b, 3
1800082BD: ja      short loc_18000829B
1800082BF: mov     al, 1
1800082C1: retn

### FUNC 1800082D0 - 180008A48 (1912 bytes) name=sub_1800082D0
1800082D0: mov     [rsp-28h+arg_8], rbx
1800082D5: mov     [rsp-28h+arg_10], rsi
1800082DA: mov     [rsp-28h+arg_18], rdi
1800082DF: push    rbp
1800082E0: push    r12
1800082E2: push    r13
1800082E4: push    r14
1800082E6: push    r15
1800082E8: mov     rbp, rsp
1800082EB: sub     rsp, 80h
1800082F2: mov     rax, cs:__security_cookie
1800082F9: xor     rax, rsp
1800082FC: mov     [rbp+var_10], rax
180008300: mov     rdi, rdx
180008303: mov     r15, rcx
180008306: mov     rcx, [rdx]
180008309: movzx   r13d, byte ptr [rcx+4]
18000830E: movzx   r14d, byte ptr [rcx+5]
180008313: xor     esi, esi
180008315: lea     rdx, off_1800100F8
18000831C: cmp     r13b, 81h
180008320: jnz     short loc_18000832D
180008322: cmp     r14b, 3
180008326: jz      short loc_180008341
180008328: jmp     loc_1800089F7
18000832D: cmp     r13b, 2
180008331: jnz     loc_1800089F7
180008337: cmp     r14b, 60h ; '`'
18000833B: jnz     loc_180008534
180008341: mov     rax, [rdi+8]
180008345: sub     rax, rcx
180008348: lea     ecx, [rax-1]
18000834B: mov     rdx, rsi
18000834E: mov     qword ptr [rbp+var_28], rdx
180008352: mov     r8d, 0Fh
180008358: mov     qword ptr [rbp+var_28+8], r8
18000835C: mov     byte ptr [rbp+Src], dl
18000835F: mov     ebx, 8
180008364: movsxd  r12, ecx
180008367: cmp     rbx, r12
18000836A: jge     short loc_1800083B6
18000836C: nop     dword ptr [rax+00h]
180008370: mov     rax, [rdi]
180008373: movzx   r9d, byte ptr [rbx+rax]
180008378: cmp     rdx, r8
18000837B: jnb     short loc_18000839D
18000837D: lea     rax, [rdx+1]
180008381: mov     qword ptr [rbp+var_28], rax
180008385: lea     rax, [rbp+Src]
180008389: cmp     r8, 10h
18000838D: cmovnb  rax, [rbp+Src]
180008392: mov     [rax+rdx], r9b
180008396: mov     byte ptr [rax+rdx+1], 0
18000839B: jmp     short loc_1800083A6
18000839D: lea     rcx, [rbp+Src]; Src
1800083A1: call    sub_180002770
1800083A6: inc     rbx
1800083A9: mov     r8, qword ptr [rbp+var_28+8]
1800083AD: mov     rdx, qword ptr [rbp+var_28]
1800083B1: cmp     rbx, r12
1800083B4: jl      short loc_180008370
1800083B6: cmp     rdx, r8
1800083B9: jnb     short loc_1800083D8
1800083BB: lea     rax, [rdx+1]
1800083BF: mov     qword ptr [rbp+var_28], rax
1800083C3: lea     rax, [rbp+Src]
1800083C7: cmp     r8, 10h
1800083CB: cmovnb  rax, [rbp+Src]
1800083D0: mov     word ptr [rax+rdx], 0
1800083D6: jmp     short loc_1800083E4
1800083D8: xor     r9d, r9d
1800083DB: lea     rcx, [rbp+Src]; Src
1800083DF: call    sub_180002770
1800083E4: mov     rax, [r15+0E0h]
1800083EB: test    rax, rax
1800083EE: jz      short loc_180008400
1800083F0: lea     rcx, [rbp+Src]
1800083F4: cmp     qword ptr [rbp+var_28+8], 10h
1800083F9: cmovnb  rcx, [rbp+Src]
1800083FE: call    rax
180008400: cmp     r13b, 2
180008404: jnz     loc_1800084E5
18000840A: cmp     r14b, 60h ; '`'
18000840E: jnz     loc_1800084E5
180008414: xorps   xmm1, xmm1
180008417: movdqu  xmmword ptr [rbp+Block], xmm1
18000841C: mov     [rbp+var_40], rsi
180008420: mov     [rbp+var_60], 1
180008424: lea     r8, [rbp+var_60]
180008428: xor     edx, edx
18000842A: lea     rcx, [rbp+Block]
18000842E: call    sub_180007D30
180008433: mov     ecx, 28h ; '('; Size
180008438: call    ??2@YAPEAX_K@Z; operator new(unsigned __int64)
18000843D: mov     rbx, rax
180008440: mov     [rbp+var_58], rax
180008444: xorps   xmm0, xmm0
180008447: xor     eax, eax
180008449: movups  xmmword ptr [rbx], xmm0
18000844C: movups  xmmword ptr [rbx+10h], xmm0
180008450: mov     [rbx+20h], rax
180008454: lea     rax, off_1800100F8
18000845B: mov     [rbx], rax
18000845E: mov     [rbx+8], rsi
180008462: mov     [rbx+10h], rsi
180008466: mov     [rbx+18h], rsi
18000846A: lea     r9, [rbp+Block]
18000846E: movzx   r8d, r14b
180008472: mov     rcx, rbx
180008475: call    sub_180009D70
18000847A: nop
18000847B: mov     rcx, [r15+0D0h]
180008482: test    rcx, rcx
180008485: jz      short loc_180008499
180008487: mov     rdx, [rbx+8]
18000848B: mov     r8, [rbx+10h]
18000848F: sub     r8, rdx
180008492: mov     r9, [rcx]
180008495: call    qword ptr [r9+8]
180008499: mov     rax, [rbx]
18000849C: mov     edx, 1
1800084A1: mov     rcx, rbx
1800084A4: call    qword ptr [rax]
1800084A6: nop
1800084A7: mov     rcx, [rbp+Block]; Block
1800084AB: test    rcx, rcx
1800084AE: jz      short loc_1800084E5
1800084B0: mov     rdx, [rbp+var_40]
1800084B4: sub     rdx, rcx
1800084B7: mov     rax, rcx
1800084BA: cmp     rdx, 1000h
1800084C1: jb      short loc_1800084DF
1800084C3: add     rdx, 27h ; '''
1800084C7: mov     rcx, [rcx-8]
1800084CB: sub     rax, rcx
1800084CE: add     rax, 0FFFFFFFFFFFFFFF8h
1800084D2: cmp     rax, 1Fh
1800084D6: jbe     short loc_1800084DF
1800084D8: call    cs:_invalid_parameter_noinfo_noreturn
1800084DE: int     3; Trap to Debugger
1800084DF: call    j_j_free
1800084E4: nop
1800084E5: mov     rdx, qword ptr [rbp+var_28+8]
1800084E9: cmp     rdx, 10h
1800084ED: jb      short loc_180008523
1800084EF: inc     rdx
1800084F2: mov     rcx, [rbp+Src]; Block
1800084F6: mov     rax, rcx
1800084F9: cmp     rdx, 1000h
180008500: jb      short loc_18000851E
180008502: add     rdx, 27h ; '''
180008506: mov     rcx, [rcx-8]
18000850A: sub     rax, rcx
18000850D: add     rax, 0FFFFFFFFFFFFFFF8h
180008511: cmp     rax, 1Fh
180008515: jbe     short loc_18000851E
180008517: call    cs:_invalid_parameter_noinfo_noreturn
18000851D: int     3; Trap to Debugger
18000851E: call    j_j_free
180008523: cmp     r13b, 2
180008527: jnz     loc_1800089F7
18000852D: lea     rdx, off_1800100F8
180008534: lea     eax, [r14-61h]
180008538: cmp     al, 8
18000853A: jbe     loc_1800089D2
180008540: cmp     r14b, 8
180008544: jnz     loc_1800086E4
18000854A: xorps   xmm0, xmm0
18000854D: xor     eax, eax
18000854F: movups  xmmword ptr [rbp+Src], xmm0
180008553: movups  [rbp+var_28], xmm0
180008557: mov     [rbp+var_18], rax
18000855B: mov     [rbp+Src], rdx
18000855F: movdqu  xmmword ptr [rbp+Src+8], xmm0
180008564: mov     qword ptr [rbp+var_28+8], rsi
180008568: mov     rbx, [rdi]
18000856B: movzx   eax, byte ptr [rbx+4]
18000856F: mov     byte ptr [rbp+var_18+4], al
180008572: movzx   eax, byte ptr [rbx+5]
180008576: mov     byte ptr [rbp+var_18+5], al
180008579: mov     rdi, [rdi+8]
18000857D: mov     rcx, rdi
180008580: sub     rcx, rbx
180008583: add     ecx, 0FFFFFFF7h
180008586: cmovs   ecx, esi
180008589: mov     dword ptr [rbp+var_18], ecx
18000858C: sub     rdi, rbx
18000858F: jz      short loc_18000859D
180008591: mov     rdx, rdi
180008594: lea     rcx, [rbp+Src+8]
180008598: call    sub_180002BA0
18000859D: mov     r8, rdi; Size
1800085A0: mov     rdx, rbx; Src
1800085A3: mov     rbx, [rbp+Src+8]
1800085A7: mov     rcx, rbx; void *
1800085AA: call    memmove
1800085AF: lea     rax, [rbx+rdi]
1800085B3: mov     qword ptr [rbp+var_28], rax
1800085B7: xorps   xmm0, xmm0
1800085BA: xor     eax, eax
1800085BC: movups  xmmword ptr [rbp+Block], xmm0
1800085C0: mov     [rbp+var_40], rax
1800085C4: lea     rdx, [rbp+Block]
1800085C8: lea     rcx, [rbp+Src]
1800085CC: call    sub_18000A360
1800085D1: nop
1800085D2: lea     rbx, [r15+0F8h]
1800085D9: mov     [rbx+10h], rsi
1800085DD: mov     rax, rbx
1800085E0: cmp     qword ptr [rbx+18h], 10h
1800085E5: jb      short loc_1800085EA
1800085E7: mov     rax, [rbx]
1800085EA: mov     byte ptr [rax], 0
1800085ED: mov     r14, [rbp+Block+8]
1800085F1: mov     rdi, [rbp+Block]
1800085F5: cmp     rdi, r14
1800085F8: jz      short loc_180008640
1800085FA: nop     word ptr [rax+rax+00h]
180008600: movzx   r9d, byte ptr [rdi]
180008604: mov     rcx, [rbx+10h]
180008608: mov     rdx, [rbx+18h]
18000860C: cmp     rcx, rdx
18000860F: jnb     short loc_180008630
180008611: lea     rax, [rcx+1]
180008615: mov     [rbx+10h], rax
180008619: mov     rax, rbx
18000861C: cmp     rdx, 10h
180008620: jb      short loc_180008625
180008622: mov     rax, [rbx]
180008625: mov     [rax+rcx], r9b
180008629: mov     byte ptr [rax+rcx+1], 0
18000862E: jmp     short loc_180008638
180008630: mov     rcx, rbx; Src
180008633: call    sub_180002770
180008638: inc     rdi
18000863B: cmp     rdi, r14
18000863E: jnz     short loc_180008600
180008640: lea     rcx, [r15+38h]; _Cnd_t
180008644: call    cs:_Cnd_broadcast
18000864A: test    eax, eax
18000864C: jz      short loc_180008657
18000864E: mov     ecx, eax
180008650: call    cs:?_Throw_C_error@std@@YAXH@Z; std::_Throw_C_error(int)
180008656: nop
180008657: mov     rcx, [rbp+Block]; Block
18000865B: test    rcx, rcx
18000865E: jz      short loc_1800086A0
180008660: mov     rdx, [rbp+var_40]
180008664: sub     rdx, rcx
180008667: mov     rax, rcx
18000866A: cmp     rdx, 1000h
180008671: jb      short loc_18000868F
180008673: add     rdx, 27h ; '''
180008677: mov     rcx, [rcx-8]
18000867B: sub     rax, rcx
18000867E: add     rax, 0FFFFFFFFFFFFFFF8h
180008682: cmp     rax, 1Fh
180008686: jbe     short loc_18000868F
180008688: call    cs:_invalid_parameter_noinfo_noreturn
18000868E: int     3; Trap to Debugger
18000868F: call    j_j_free
180008694: xorps   xmm0, xmm0
180008697: movdqu  xmmword ptr [rbp+Block], xmm0
18000869C: mov     [rbp+var_40], rsi
1800086A0: mov     rcx, [rbp+Src+8]; Block
1800086A4: test    rcx, rcx
1800086A7: jz      loc_1800089F7
1800086AD: mov     rdx, qword ptr [rbp+var_28+8]
1800086B1: sub     rdx, rcx
1800086B4: mov     rax, rcx
1800086B7: cmp     rdx, 1000h
1800086BE: jb      loc_1800087FA
1800086C4: add     rdx, 27h ; '''
1800086C8: mov     rcx, [rcx-8]
1800086CC: sub     rax, rcx
1800086CF: add     rax, 0FFFFFFFFFFFFFFF8h
1800086D3: cmp     rax, 1Fh
1800086D7: jbe     loc_1800087FA
1800086DD: call    cs:_invalid_parameter_noinfo_noreturn
1800086E3: int     3; Trap to Debugger
1800086E4: cmp     r14b, 9
1800086E8: jnz     short loc_180008713
1800086EA: mov     rax, [rdi]
1800086ED: cmp     byte ptr [rax+8], 1
1800086F1: setz    al
1800086F4: mov     [r15+30h], al
1800086F8: lea     rcx, [r15+38h]; _Cnd_t
1800086FC: call    cs:_Cnd_broadcast
180008702: test    eax, eax
180008704: jz      loc_1800089F7
18000870A: mov     ecx, eax
18000870C: call    cs:?_Throw_C_error@std@@YAXH@Z; std::_Throw_C_error(int)
180008712: nop
180008713: cmp     r14b, 0Ah
180008717: jnz     short loc_180008742
180008719: mov     rax, [rdi]
18000871C: cmp     byte ptr [rax+8], 1
180008720: setz    al
180008723: mov     [r15+30h], al
180008727: lea     rcx, [r15+38h]; _Cnd_t
18000872B: call    cs:_Cnd_broadcast
180008731: test    eax, eax
180008733: jz      loc_1800089F7
180008739: mov     ecx, eax
18000873B: call    cs:?_Throw_C_error@std@@YAXH@Z; std::_Throw_C_error(int)
180008741: nop
180008742: cmp     r14b, 0Bh
180008746: jnz     loc_180008804
18000874C: mov     rcx, [rdi+8]
180008750: sub     rcx, [rdi]
180008753: add     ecx, 0FFFFFFF7h
180008756: xorps   xmm1, xmm1
180008759: movdqu  xmmword ptr [rbp+Block], xmm1
18000875E: mov     [rbp+var_40], rsi
180008762: mov     rbx, rsi
180008765: movsxd  r14, ecx
180008768: test    ecx, ecx
18000876A: jle     short loc_1800087AD
18000876C: mov     rdx, [rbp+Block+8]
180008770: mov     r8, [rdi]
180008773: add     r8, 8
180008777: add     r8, rbx
18000877A: cmp     rdx, rsi
18000877D: jz      short loc_180008792
18000877F: movzx   eax, byte ptr [r8]
180008783: mov     [rdx], al
180008785: mov     rdx, [rbp+Block+8]
180008789: inc     rdx
18000878C: mov     [rbp+Block+8], rdx
180008790: jmp     short loc_18000879F
180008792: lea     rcx, [rbp+Block]
180008796: call    sub_180007D30
18000879B: mov     rdx, [rbp+Block+8]
18000879F: inc     rbx
1800087A2: cmp     rbx, r14
1800087A5: jge     short loc_1800087AD
1800087A7: mov     rsi, [rbp+var_40]
1800087AB: jmp     short loc_180008770
1800087AD: mov     rcx, [r15+0F0h]
1800087B4: mov     rax, [rcx]
1800087B7: lea     rdx, [rbp+Block]
1800087BB: call    qword ptr [rax]
1800087BD: nop
1800087BE: mov     rcx, [rbp+Block]
1800087C2: test    rcx, rcx
1800087C5: jz      loc_1800089F7
1800087CB: mov     rdx, [rbp+var_40]
1800087CF: sub     rdx, rcx
1800087D2: mov     rax, rcx
1800087D5: cmp     rdx, 1000h
1800087DC: jb      short loc_1800087FA
1800087DE: add     rdx, 27h ; '''
1800087E2: mov     rcx, [rcx-8]
1800087E6: sub     rax, rcx
1800087E9: add     rax, 0FFFFFFFFFFFFFFF8h
1800087ED: cmp     rax, 1Fh
1800087F1: jbe     short loc_1800087FA
1800087F3: call    cs:_invalid_parameter_noinfo_noreturn
1800087F9: int     3; Trap to Debugger
1800087FA: call    j_j_free
1800087FF: jmp     loc_1800089F7
180008804: cmp     r14b, 6Fh ; 'o'
180008808: jnz     loc_1800089F7
18000880E: mov     rax, [rdi]
180008811: movzx   ebx, byte ptr [rax+8]
180008815: mov     qword ptr [rbp+var_28], rsi
180008819: mov     qword ptr [rbp+var_28+8], 0Fh
180008821: mov     byte ptr [rbp+Src], 0
180008825: xor     r8d, r8d; Size
180008828: lea     rdx, unk_18000FDE8; Src
18000882F: lea     rcx, [rbp+Src]; void *
180008833: call    sub_180002610
180008838: nop
180008839: lea     eax, [rbx-61h]; switch 9 cases
18000883C: cmp     eax, 8
18000883F: ja      def_180008858; jumptable 0000000180008858 default case
180008845: cdqe
180008847: lea     rdx, cs:180000000h
18000884E: mov     ecx, ds:(jpt_180008858 - 180000000h)[rdx+rax*4]
180008855: add     rcx, rdx
180008858: jmp     rcx; switch jump
18000885A: lea     rdx, qword_180015180; jumptable 0000000180008858 case 97
180008861: cmp     cs:qword_180015198, 10h
180008869: cmovnb  rdx, cs:qword_180015180
180008871: mov     r8, cs:qword_180015190
180008878: jmp     loc_180008987
18000887D: lea     rdx, qword_1800150E0; jumptable 0000000180008858 case 98
180008884: cmp     cs:qword_1800150F8, 10h
18000888C: cmovnb  rdx, cs:qword_1800150E0
180008894: mov     r8, cs:qword_1800150F0
18000889B: jmp     loc_180008987
1800088A0: lea     rdx, qword_180015160; jumptable 0000000180008858 case 99
1800088A7: cmp     cs:qword_180015178, 10h
1800088AF: cmovnb  rdx, cs:qword_180015160
1800088B7: mov     r8, cs:qword_180015170
1800088BE: jmp     loc_180008987
1800088C3: lea     rdx, qword_1800151C0; jumptable 0000000180008858 case 100
1800088CA: cmp     cs:qword_1800151D8, 10h
1800088D2: cmovnb  rdx, cs:qword_1800151C0
1800088DA: mov     r8, cs:qword_1800151D0
1800088E1: jmp     loc_180008987
1800088E6: lea     rdx, qword_180015120; jumptable 0000000180008858 case 101
1800088ED: cmp     cs:qword_180015138, 10h
1800088F5: cmovnb  rdx, cs:qword_180015120
1800088FD: mov     r8, cs:qword_180015130
180008904: jmp     loc_180008987
180008909: lea     rdx, qword_1800150C0; jumptable 0000000180008858 case 102
180008910: cmp     cs:qword_1800150D8, 10h
180008918: cmovnb  rdx, cs:qword_1800150C0
180008920: mov     r8, cs:qword_1800150D0
180008927: jmp     short loc_180008987
180008929: lea     rdx, qword_180015140; jumptable 0000000180008858 case 103
180008930: cmp     cs:qword_180015158, 10h
180008938: cmovnb  rdx, cs:qword_180015140
180008940: mov     r8, cs:qword_180015150
180008947: jmp     short loc_180008987
180008949: lea     rdx, qword_1800151A0; jumptable 0000000180008858 case 105
180008950: cmp     cs:qword_1800151B8, 10h
180008958: cmovnb  rdx, cs:qword_1800151A0
180008960: mov     r8, cs:qword_1800151B0
180008967: jmp     short loc_180008987
180008969: lea     rdx, qword_180015080; jumptable 0000000180008858 case 104
180008970: cmp     cs:qword_180015098, 10h
180008978: cmovnb  rdx, cs:qword_180015080; Src
180008980: mov     r8, cs:Size; Size
180008987: lea     rcx, [rbp+Src]; void *
18000898B: call    sub_180002610
180008990: nop
180008991: mov     rdx, qword ptr [rbp+var_28+8]; jumptable 0000000180008858 default case
180008995: cmp     rdx, 10h
180008999: jb      short loc_1800089F7
18000899B: inc     rdx
18000899E: mov     rcx, [rbp+Src]
1800089A2: mov     rax, rcx
1800089A5: cmp     rdx, 1000h
1800089AC: jb      loc_1800087FA
1800089B2: add     rdx, 27h ; '''
1800089B6: mov     rcx, [rcx-8]
1800089BA: sub     rax, rcx
1800089BD: add     rax, 0FFFFFFFFFFFFFFF8h
1800089C1: cmp     rax, 1Fh
1800089C5: jbe     loc_1800087FA
1800089CB: call    cs:_invalid_parameter_noinfo_noreturn
1800089D1: int     3; Trap to Debugger
1800089D2: mov     rax, [rdi]
1800089D5: cmp     byte ptr [rax+8], 1
1800089D9: setz    al
1800089DC: mov     [r15+30h], al
1800089E0: lea     rcx, [r15+38h]; _Cnd_t
1800089E4: call    cs:_Cnd_broadcast
1800089EA: test    eax, eax
1800089EC: jz      short loc_1800089F7
1800089EE: mov     ecx, eax
1800089F0: call    cs:?_Throw_C_error@std@@YAXH@Z; std::_Throw_C_error(int)
1800089F6: nop
1800089F7: mov     rcx, [rbp+var_10]
1800089FB: xor     rcx, rsp; StackCookie
1800089FE: call    __security_check_cookie
180008A03: lea     r11, [rsp+80h+var_s0]
180008A0B: mov     rbx, [r11+38h]
180008A0F: mov     rsi, [r11+40h]
180008A13: mov     rdi, [r11+48h]
180008A17: mov     rsp, r11
180008A1A: pop     r15
180008A1C: pop     r14
180008A1E: pop     r13
180008A20: pop     r12
180008A22: pop     rbp
180008A23: retn
180008A24: dd offset loc_18000885A - 180000000h; jump table for switch statement

### FUNC 180008A50 - 180008BDD (397 bytes) name=sub_180008A50
180008A50: mov     [rsp+arg_10], rbx
180008A55: mov     [rsp+arg_18], rbp
180008A5A: push    rsi
180008A5B: push    rdi
180008A5C: push    r14
180008A5E: sub     rsp, 50h
180008A62: mov     rbp, rcx
180008A65: xorps   xmm0, xmm0
180008A68: movdqu  xmmword ptr [rsp+68h+Block], xmm0
180008A6E: xor     r14d, r14d
180008A71: mov     [rsp+68h+var_38], r14
180008A76: mov     rsi, [rdx]
180008A79: mov     rdi, [rdx+8]
180008A7D: cmp     rsi, rdi
180008A80: jz      short loc_180008AF2
180008A82: sub     rdi, rsi
180008A85: cmp     rdi, 1000h
180008A8C: jb      short loc_180008ABA
180008A8E: lea     rcx, [rdi+27h]; Size
180008A92: cmp     rcx, rdi
180008A95: jbe     loc_180008BD7
180008A9B: call    ??2@YAPEAX_K@Z; operator new(unsigned __int64)
180008AA0: mov     rcx, rax
180008AA3: test    rax, rax
180008AA6: jz      loc_180008BB6
180008AAC: add     rax, 27h ; '''
180008AB0: and     rax, 0FFFFFFFFFFFFFFE0h
180008AB4: mov     [rax-8], rcx
180008AB8: jmp     short loc_180008ACC
180008ABA: test    rdi, rdi
180008ABD: jz      short loc_180008AC9
180008ABF: mov     rcx, rdi; Size
180008AC2: call    ??2@YAPEAX_K@Z; operator new(unsigned __int64)
180008AC7: jmp     short loc_180008ACC
180008AC9: mov     rax, r14
180008ACC: mov     [rsp+68h+Block], rax
180008AD1: mov     [rsp+68h+Block+8], rax
180008AD6: lea     rbx, [rax+rdi]
180008ADA: mov     [rsp+68h+var_38], rbx
180008ADF: mov     r8, rdi; Size
180008AE2: mov     rdx, rsi; Src
180008AE5: mov     rcx, rax; void *
180008AE8: call    memmove
180008AED: mov     [rsp+68h+Block+8], rbx
180008AF2: lea     rax, [rsp+68h+Block]
180008AF7: mov     [rsp+68h+var_30], rax
180008AFC: cmp     cs:byte_180015FF0, 0
180008B03: jz      short loc_180008B11
180008B05: lea     rcx, aTransmitdata; "transmitData\n"
180008B0C: call    sub_180007960
180008B11: mov     ecx, 28h ; '('; Size
180008B16: call    ??2@YAPEAX_K@Z; operator new(unsigned __int64)
180008B1B: mov     rbx, rax
180008B1E: mov     [rsp+68h+var_28], rax
180008B23: xorps   xmm0, xmm0
180008B26: xor     eax, eax
180008B28: movups  xmmword ptr [rbx], xmm0
180008B2B: movups  xmmword ptr [rbx+10h], xmm0
180008B2F: mov     [rbx+20h], rax
180008B33: lea     rax, off_1800100F8
180008B3A: mov     [rbx], rax
180008B3D: mov     [rbx+8], r14
180008B41: mov     [rbx+10h], r14
180008B45: mov     [rbx+18h], r14
180008B49: lea     r9, [rsp+68h+Block]
180008B4E: mov     r8b, 0Bh
180008B51: mov     rcx, rbx
180008B54: call    sub_180009D70
180008B59: nop
180008B5A: mov     rcx, [rbp-8]
180008B5E: test    rcx, rcx
180008B61: jz      short loc_180008B75
180008B63: mov     rdx, [rbx+8]
180008B67: mov     r8, [rbx+10h]
180008B6B: sub     r8, rdx
180008B6E: mov     r9, [rcx]
180008B71: call    qword ptr [r9+8]
180008B75: mov     rax, [rbx]
180008B78: mov     edx, 1
180008B7D: mov     rcx, rbx
180008B80: call    qword ptr [rax]
180008B82: nop
180008B83: mov     rcx, [rsp+68h+Block]; Block
180008B88: test    rcx, rcx
180008B8B: jz      short loc_180008BC2
180008B8D: mov     rdx, [rsp+68h+var_38]
180008B92: sub     rdx, rcx
180008B95: mov     rax, rcx
180008B98: cmp     rdx, 1000h
180008B9F: jb      short loc_180008BBD
180008BA1: add     rdx, 27h ; '''
180008BA5: mov     rcx, [rcx-8]
180008BA9: sub     rax, rcx
180008BAC: add     rax, 0FFFFFFFFFFFFFFF8h
180008BB0: cmp     rax, 1Fh
180008BB4: jbe     short loc_180008BBD
180008BB6: call    cs:_invalid_parameter_noinfo_noreturn
180008BBC: int     3; Trap to Debugger
180008BBD: call    j_j_free
180008BC2: lea     r11, [rsp+68h+var_18]
180008BC7: mov     rbx, [r11+30h]
180008BCB: mov     rbp, [r11+38h]
180008BCF: mov     rsp, r11
180008BD2: pop     r14
180008BD4: pop     rdi
180008BD5: pop     rsi
180008BD6: retn
180008BD7: call    ?cancel_current_task@Concurrency@@YAXXZ; Concurrency::cancel_current_task(void)
180008BDC: db 0CCh

### FUNC 180008BE0 - 180008CC8 (232 bytes) name=sub_180008BE0
180008BE0: mov     [rsp+arg_10], rbp
180008BE5: mov     [rsp+arg_18], rsi
180008BEA: push    rdi
180008BEB: sub     rsp, 20h
180008BEF: lea     rax, off_180010058
180008BF6: mov     rdi, rcx
180008BF9: mov     [rcx], rax
180008BFC: xor     ebp, ebp
180008BFE: mov     rcx, [rcx+0E0h]
180008C05: mov     esi, edx
180008C07: test    rcx, rcx
180008C0A: jz      short loc_180008C55
180008C0C: mov     rdx, [rdi+0F0h]
180008C13: sub     rdx, rcx
180008C16: cmp     rdx, 1000h
180008C1D: jb      short loc_180008C3B
180008C1F: mov     r8, [rcx-8]
180008C23: add     rdx, 27h ; '''
180008C27: sub     rcx, r8
180008C2A: lea     rax, [rcx-8]
180008C2E: cmp     rax, 1Fh
180008C32: ja      loc_180008CC1
180008C38: mov     rcx, r8; Block
180008C3B: call    j_j_free
180008C40: mov     [rdi+0E0h], rbp
180008C47: mov     [rdi+0E8h], rbp
180008C4E: mov     [rdi+0F0h], rbp
180008C55: lea     rax, off_1800101B8
180008C5C: mov     [rsp+28h+arg_8], rbx
180008C61: lea     rcx, [rdi+80h]; _Mtx_t
180008C68: mov     [rdi], rax
180008C6B: call    cs:_Mtx_destroy_in_situ
180008C71: lea     rcx, [rdi+38h]; _Cnd_t
180008C75: call    cs:_Cnd_destroy_in_situ
180008C7B: lea     rcx, [rdi+8]
180008C7F: call    sub_180002550
180008C84: mov     rcx, [rdi+8]; Block
180008C88: mov     edx, 10h
180008C8D: mov     [rdi+8], rbp
180008C91: call    j_j_free
180008C96: mov     rbx, [rsp+28h+arg_8]
180008C9B: test    sil, 1
180008C9F: jz      short loc_180008CAE
180008CA1: mov     edx, 0F8h
180008CA6: mov     rcx, rdi; Block
180008CA9: call    j_j_free
180008CAE: mov     rbp, [rsp+28h+arg_10]
180008CB3: mov     rax, rdi
180008CB6: mov     rsi, [rsp+28h+arg_18]
180008CBB: add     rsp, 20h
180008CBF: pop     rdi
180008CC0: retn
180008CC1: call    cs:_invalid_parameter_noinfo_noreturn
180008CC7: db 0CCh

### FUNC 180008CD0 - 180008CE5 (21 bytes) name=sub_180008CD0
180008CD0: cmp     dl, 2
180008CD3: jnz     short loc_180008CE2
180008CD5: sub     r8b, 21h ; '!'
180008CD9: cmp     r8b, 5
180008CDD: ja      short loc_180008CE2
180008CDF: mov     al, 1
180008CE1: retn
180008CE2: xor     al, al
180008CE4: retn

### FUNC 180008CF0 - 180008E9E (430 bytes) name=sub_180008CF0
180008CF0: mov     [rsp+arg_0], rbx
180008CF5: mov     [rsp+arg_8], rbp
180008CFA: mov     [rsp+arg_10], rsi
180008CFF: mov     [rsp+arg_18], rdi
180008D04: push    r14
180008D06: sub     rsp, 20h
180008D0A: mov     r14, rdx
180008D0D: mov     rsi, rcx
180008D10: mov     r8, [rdx]
180008D13: movzx   eax, byte ptr [r8+5]
180008D18: cmp     byte ptr [r8+4], 2
180008D1D: jnz     loc_180008E83
180008D23: cmp     al, 21h ; '!'
180008D25: jnz     short loc_180008D4D
180008D27: cmp     byte ptr [r8+8], 1
180008D2C: setz    al
180008D2F: mov     [rcx+30h], al
180008D32: add     rcx, 38h ; '8'; _Cnd_t
180008D36: call    cs:_Cnd_broadcast
180008D3C: test    eax, eax
180008D3E: jz      loc_180008E83
180008D44: mov     ecx, eax
180008D46: call    cs:?_Throw_C_error@std@@YAXH@Z; std::_Throw_C_error(int)
180008D4C: nop
180008D4D: cmp     al, 22h ; '"'
180008D4F: jnz     short loc_180008D99
180008D51: movzx   ecx, byte ptr [r8+8]
180008D56: shl     ecx, 8
180008D59: movzx   eax, byte ptr [r8+9]
180008D5E: or      ecx, eax
180008D60: shl     ecx, 8
180008D63: movzx   eax, byte ptr [r8+0Ah]
180008D68: or      ecx, eax
180008D6A: shl     ecx, 8
180008D6D: movzx   eax, byte ptr [r8+0Bh]
180008D72: or      ecx, eax
180008D74: mov     [rsi+0D8h], ecx
180008D7A: mov     byte ptr [rsi+30h], 1
180008D7E: lea     rcx, [rsi+38h]; _Cnd_t
180008D82: call    cs:_Cnd_broadcast
180008D88: test    eax, eax
180008D8A: jz      loc_180008E83
180008D90: mov     ecx, eax
180008D92: call    cs:?_Throw_C_error@std@@YAXH@Z; std::_Throw_C_error(int)
180008D98: nop
180008D99: cmp     al, 23h ; '#'
180008D9B: jnz     short loc_180008DC3
180008D9D: cmp     byte ptr [r8+8], 1
180008DA2: setz    al
180008DA5: mov     [rcx+30h], al
180008DA8: add     rcx, 38h ; '8'; _Cnd_t
180008DAC: call    cs:_Cnd_broadcast
180008DB2: test    eax, eax
180008DB4: jz      loc_180008E83
180008DBA: mov     ecx, eax
180008DBC: call    cs:?_Throw_C_error@std@@YAXH@Z; std::_Throw_C_error(int)
180008DC2: nop
180008DC3: cmp     al, 24h ; '$'
180008DC5: jnz     short loc_180008DED
180008DC7: cmp     byte ptr [r8+8], 1
180008DCC: setz    al
180008DCF: mov     [rcx+30h], al
180008DD2: add     rcx, 38h ; '8'; _Cnd_t
180008DD6: call    cs:_Cnd_broadcast
180008DDC: test    eax, eax
180008DDE: jz      loc_180008E83
180008DE4: mov     ecx, eax
180008DE6: call    cs:?_Throw_C_error@std@@YAXH@Z; std::_Throw_C_error(int)
180008DEC: nop
180008DED: cmp     al, 25h ; '%'
180008DEF: jnz     short loc_180008E5D
180008DF1: mov     rcx, [rdx+8]
180008DF5: sub     rcx, r8
180008DF8: add     ecx, 0FFFFFFF7h
180008DFB: lea     rbx, [rsi+0E0h]
180008E02: mov     rax, [rbx]
180008E05: mov     [rbx+8], rax
180008E09: movsxd  rbp, ecx
180008E0C: test    ecx, ecx
180008E0E: jle     short loc_180008E42
180008E10: xor     edi, edi
180008E12: mov     r8, [r14]
180008E15: add     r8, 8
180008E19: add     r8, rdi
180008E1C: mov     rdx, [rbx+8]
180008E20: cmp     rdx, [rbx+10h]
180008E24: jz      short loc_180008E32
180008E26: movzx   eax, byte ptr [r8]
180008E2A: mov     [rdx], al
180008E2C: inc     qword ptr [rbx+8]
180008E30: jmp     short loc_180008E3A
180008E32: mov     rcx, rbx
180008E35: call    sub_180007D30
180008E3A: inc     rdi
180008E3D: cmp     rdi, rbp
180008E40: jl      short loc_180008E12
180008E42: mov     byte ptr [rsi+30h], 1
180008E46: lea     rcx, [rsi+38h]; _Cnd_t
180008E4A: call    cs:_Cnd_broadcast
180008E50: test    eax, eax
180008E52: jz      short loc_180008E83
180008E54: mov     ecx, eax
180008E56: call    cs:?_Throw_C_error@std@@YAXH@Z; std::_Throw_C_error(int)
180008E5C: nop
180008E5D: cmp     al, 26h ; '&'
180008E5F: jnz     short loc_180008E83
180008E61: cmp     byte ptr [r8+8], 1
180008E66: setz    al
180008E69: mov     [rcx+30h], al
180008E6C: add     rcx, 38h ; '8'; _Cnd_t
180008E70: call    cs:_Cnd_broadcast
180008E76: test    eax, eax
180008E78: jz      short loc_180008E83
180008E7A: mov     ecx, eax
180008E7C: call    cs:?_Throw_C_error@std@@YAXH@Z; std::_Throw_C_error(int)
180008E82: nop
180008E83: mov     rbx, [rsp+28h+arg_0]
180008E88: mov     rbp, [rsp+28h+arg_8]
180008E8D: mov     rsi, [rsp+28h+arg_10]
180008E92: mov     rdi, [rsp+28h+arg_18]
180008E97: add     rsp, 20h
180008E9B: pop     r14
180008E9D: retn

### FUNC 180008EA0 - 180008FF2 (338 bytes) name=sub_180008EA0
180008EA0: mov     [rsp+arg_18], rsi
180008EA5: push    rdi
180008EA6: sub     rsp, 20h
180008EAA: cmp     dword ptr [rcx+120h], 0
180008EB1: lea     rax, off_1800100D8
180008EB8: mov     [rcx], rax
180008EBB: mov     esi, edx
180008EBD: mov     rdi, rcx
180008EC0: jz      short loc_180008EC9
180008EC2: call    cs:terminate
180008EC8: int     3; Trap to Debugger
180008EC9: mov     rcx, [rcx+100h]
180008ED0: mov     [rsp+28h+arg_10], rbp
180008ED5: xor     ebp, ebp
180008ED7: test    rcx, rcx
180008EDA: jz      short loc_180008F25
180008EDC: mov     rdx, [rdi+110h]
180008EE3: sub     rdx, rcx
180008EE6: cmp     rdx, 1000h
180008EED: jb      short loc_180008F0B
180008EEF: mov     r8, [rcx-8]
180008EF3: add     rdx, 27h ; '''
180008EF7: sub     rcx, r8
180008EFA: lea     rax, [rcx-8]
180008EFE: cmp     rax, 1Fh
180008F02: ja      loc_180008FEB
180008F08: mov     rcx, r8; Block
180008F0B: call    j_j_free
180008F10: mov     [rdi+100h], rbp
180008F17: mov     [rdi+108h], rbp
180008F1E: mov     [rdi+110h], rbp
180008F25: mov     rdx, [rdi+0F8h]
180008F2C: cmp     rdx, 10h
180008F30: jb      short loc_180008F66
180008F32: mov     rcx, [rdi+0E0h]
180008F39: inc     rdx
180008F3C: cmp     rdx, 1000h
180008F43: jb      short loc_180008F61
180008F45: mov     r8, [rcx-8]
180008F49: add     rdx, 27h ; '''
180008F4D: sub     rcx, r8
180008F50: lea     rax, [rcx-8]
180008F54: cmp     rax, 1Fh
180008F58: ja      loc_180008FEB
180008F5E: mov     rcx, r8; Block
180008F61: call    j_j_free
180008F66: lea     rax, off_1800101B8
180008F6D: mov     [rdi+0F0h], rbp
180008F74: mov     qword ptr [rdi+0F8h], 0Fh
180008F7F: lea     rcx, [rdi+80h]; _Mtx_t
180008F86: mov     [rdi+0E0h], bpl
180008F8D: mov     [rdi], rax
180008F90: mov     [rsp+28h+arg_8], rbx
180008F95: call    cs:_Mtx_destroy_in_situ
180008F9B: lea     rcx, [rdi+38h]; _Cnd_t
180008F9F: call    cs:_Cnd_destroy_in_situ
180008FA5: lea     rcx, [rdi+8]
180008FA9: call    sub_180002550
180008FAE: mov     rcx, [rdi+8]; Block
180008FB2: mov     edx, 10h
180008FB7: mov     [rdi+8], rbp
180008FBB: call    j_j_free
180008FC0: mov     rbx, [rsp+28h+arg_8]
180008FC5: test    sil, 1
180008FC9: jz      short loc_180008FD8
180008FCB: mov     edx, 128h
180008FD0: mov     rcx, rdi; Block
180008FD3: call    j_j_free
180008FD8: mov     rbp, [rsp+28h+arg_10]
180008FDD: mov     rax, rdi
180008FE0: mov     rsi, [rsp+28h+arg_18]
180008FE5: add     rsp, 20h
180008FE9: pop     rdi
180008FEA: retn
180008FEB: call    cs:_invalid_parameter_noinfo_noreturn
180008FF1: db 0CCh

### FUNC 180009000 - 1800091D3 (467 bytes) name=sub_180009000
180009000: mov     [rsp+arg_10], rbx
180009005: push    rbp
180009006: push    rsi
180009007: push    rdi
180009008: sub     rsp, 50h
18000900C: mov     rax, cs:__security_cookie
180009013: xor     rax, rsp
180009016: mov     [rsp+68h+var_28], rax
18000901B: mov     rsi, rdx
18000901E: mov     rbp, rcx
180009021: mov     qword ptr [rsp+68h+var_48], rdx
180009026: cmp     cs:byte_180015FF0, 0
18000902D: jz      short loc_18000903B
18000902F: lea     rcx, aAskversion; "askVersion\n"
180009036: call    sub_180007960
18000903B: xor     r8d, r8d; Size
18000903E: lea     rdx, unk_18000FDE8; Src
180009045: lea     rcx, [rbp+0E0h]; void *
18000904C: call    sub_180002610
180009051: mov     ecx, 28h ; '('; Size
180009056: call    ??2@YAPEAX_K@Z; operator new(unsigned __int64)
18000905B: mov     qword ptr [rsp+68h+var_48], rax
180009060: xorps   xmm0, xmm0
180009063: xor     ecx, ecx
180009065: movups  xmmword ptr [rax], xmm0
180009068: movups  xmmword ptr [rax+10h], xmm0
18000906C: mov     [rax+20h], rcx
180009070: mov     r8b, 4
180009073: mov     rcx, rax
180009076: call    sub_18000A240
18000907B: mov     rdi, rax
18000907E: test    rax, rax
180009081: jz      short loc_1800090AE
180009083: mov     rcx, [rbp+0D0h]
18000908A: test    rcx, rcx
18000908D: jz      short loc_1800090A1
18000908F: mov     rdx, [rax+8]
180009093: mov     r8, [rax+10h]
180009097: sub     r8, rdx
18000909A: mov     r9, [rcx]
18000909D: call    qword ptr [r9+8]
1800090A1: mov     rax, [rdi]
1800090A4: mov     edx, 1
1800090A9: mov     rcx, rdi
1800090AC: call    qword ptr [rax]
1800090AE: xorps   xmm0, xmm0
1800090B1: movups  [rsp+68h+var_48], xmm0
1800090B6: lea     rdi, [rbp+80h]
1800090BD: mov     qword ptr [rsp+68h+var_48], rdi
1800090C2: mov     byte ptr [rsp+68h+var_48+8], 0
1800090C7: mov     rcx, rdi; _Mtx_t
1800090CA: call    cs:_Mtx_lock
1800090D0: test    eax, eax
1800090D2: jz      short loc_1800090DD
1800090D4: mov     ecx, eax
1800090D6: call    cs:?_Throw_C_error@std@@YAXH@Z; std::_Throw_C_error(int)
1800090DC: int     3; Trap to Debugger
1800090DD: mov     byte ptr [rsp+68h+var_48+8], 1
1800090E2: call    cs:_Xtime_get_ticks
1800090E8: add     rax, 0F4240h
1800090EE: imul    rcx, rax, 64h ; 'd'
1800090F2: mov     rax, 112E0BE826D694B3h
1800090FC: imul    rcx
1800090FF: sar     rdx, 1Ah
180009103: mov     rax, rdx
180009106: shr     rax, 3Fh
18000910A: add     rdx, rax
18000910D: mov     [rsp+68h+var_38.sec], rdx
180009112: imul    rax, rdx, 3B9ACA00h
180009119: sub     rcx, rax
18000911C: mov     [rsp+68h+var_38.nsec], ecx
180009120: mov     rcx, rdi; _Mtx_t
180009123: call    cs:_Mtx_current_owns
180009129: test    eax, eax
18000912B: jnz     short loc_180009137
18000912D: lea     ecx, [rax+4]
180009130: call    cs:?_Throw_Cpp_error@std@@YAXH@Z; std::_Throw_Cpp_error(int)
180009136: int     3; Trap to Debugger
180009137: lea     rcx, [rbp+38h]; _Cnd_t
18000913B: lea     r8, [rsp+68h+var_38]; xtime *
180009140: mov     rdx, rdi; _Mtx_t
180009143: call    cs:_Cnd_timedwait
180009149: test    eax, eax
18000914B: jz      short loc_180009169
18000914D: cmp     eax, 2
180009150: jz      short loc_18000915B
180009152: mov     ecx, eax
180009154: call    cs:?_Throw_C_error@std@@YAXH@Z; std::_Throw_C_error(int)
18000915A: int     3; Trap to Debugger
18000915B: lea     rcx, aAskversionTime; "askVersion timeout\n"
180009162: call    sub_180007960
180009167: jmp     short loc_18000918D
180009169: lea     rdx, [rbp+0E0h]
180009170: cmp     qword ptr [rbp+0F8h], 10h
180009178: jb      short loc_180009181
18000917A: mov     rdx, [rbp+0E0h]
180009181: lea     rcx, aAskversionS; "askVersion:%s\n"
180009188: call    sub_180007960
18000918D: lea     rdx, [rbp+0E0h]
180009194: mov     rcx, rsi
180009197: call    sub_180002E60
18000919C: nop
18000919D: mov     rcx, rdi; _Mtx_t
1800091A0: call    cs:_Mtx_unlock
1800091A6: test    eax, eax
1800091A8: jz      short loc_1800091B3
1800091AA: mov     ecx, eax
1800091AC: call    cs:?_Throw_C_error@std@@YAXH@Z; std::_Throw_C_error(int)
1800091B2: nop
1800091B3: mov     rax, rsi
1800091B6: mov     rcx, [rsp+68h+var_28]
1800091BB: xor     rcx, rsp; StackCookie
1800091BE: call    __security_check_cookie
1800091C3: mov     rbx, [rsp+68h+arg_10]
1800091CB: add     rsp, 50h
1800091CF: pop     rdi
1800091D0: pop     rsi
1800091D1: pop     rbp
1800091D2: retn

### FUNC 1800091E0 - 180009502 (802 bytes) name=sub_1800091E0
1800091E0: mov     [rsp+arg_8], rbx
1800091E5: mov     [rsp+arg_10], rbp
1800091EA: mov     [rsp+arg_18], rsi
1800091EF: push    rdi
1800091F0: push    r12
1800091F2: push    r13
1800091F4: push    r14
1800091F6: push    r15
1800091F8: sub     rsp, 70h
1800091FC: mov     rax, cs:__security_cookie
180009203: xor     rax, rsp
180009206: mov     [rsp+98h+var_38], rax
18000920B: mov     r14, rcx
18000920E: mov     rax, [rcx+108h]
180009215: cmp     rax, [rcx+100h]
18000921C: jnz     short loc_180009237
18000921E: mov     rax, [rcx+0D8h]
180009225: test    rax, rax
180009228: jz      loc_1800094D1
18000922E: xor     edx, edx
180009230: xor     ecx, ecx
180009232: jmp     loc_1800094CF
180009237: call    sub_180009510
18000923C: test    al, al
18000923E: jnz     short loc_180009268
180009240: lea     rcx, aBeginupdateFai; "beginUpdate fail\n"
180009247: call    sub_180007960
18000924C: mov     rax, [r14+0D8h]
180009253: test    rax, rax
180009256: jz      loc_1800094D1
18000925C: mov     edx, 1
180009261: xor     ecx, ecx
180009263: jmp     loc_1800094CF
180009268: mov     rax, [r14+0D8h]
18000926F: test    rax, rax
180009272: jz      short loc_18000927E
180009274: mov     edx, 1
180009279: movzx   ecx, dl
18000927C: call    rax
18000927E: mov     rax, [r14+108h]
180009285: sub     rax, [r14+100h]
18000928C: add     rax, 7Fh
180009290: shr     rax, 7
180009294: mov     [rsp+98h+var_78], rax
180009299: xor     r15d, r15d
18000929C: test    eax, eax
18000929E: jle     loc_180009423
1800092A4: xor     r12d, r12d
1800092A7: mov     edx, 80h
1800092AC: lea     r13d, [r15+62h]
1800092B0: mov     rcx, [r14+100h]
1800092B7: mov     rax, [r14+108h]
1800092BE: sub     rax, rcx
1800092C1: sub     eax, r12d
1800092C4: cmp     eax, edx
1800092C6: cmovg   eax, edx
1800092C9: xorps   xmm1, xmm1
1800092CC: movdqu  xmmword ptr [rsp+98h+Src], xmm1
1800092D2: xor     ebp, ebp
1800092D4: mov     [rsp+98h+var_40], rbp
1800092D9: movsxd  rsi, eax
1800092DC: movsxd  rbx, r12d
1800092DF: add     rbx, rcx
1800092E2: test    eax, eax
1800092E4: jz      short loc_1800092F8
1800092E6: mov     rdx, rsi
1800092E9: lea     rcx, [rsp+98h+Src]
1800092EE: call    sub_180002BA0
1800092F3: mov     rbp, [rsp+98h+var_40]
1800092F8: mov     r8, rsi; Size
1800092FB: mov     rdx, rbx; Src
1800092FE: mov     rbx, [rsp+98h+Src]
180009303: mov     rcx, rbx; void *
180009306: call    memmove
18000930B: lea     rax, [rbx+rsi]
18000930F: mov     [rsp+98h+Src+8], rax
180009314: xorps   xmm0, xmm0
180009317: movdqu  [rsp+98h+var_70], xmm0
18000931D: mov     [rsp+98h+var_60], 0
180009326: cmp     rbx, rax
180009329: jz      short loc_180009397
18000932B: cmp     rsi, 1000h
180009332: jb      short loc_180009360
180009334: lea     rcx, [rsi+27h]; Size
180009338: cmp     rcx, rsi
18000933B: jbe     loc_1800094FC
180009341: call    ??2@YAPEAX_K@Z; operator new(unsigned __int64)
180009346: mov     rcx, rax
180009349: test    rax, rax
18000934C: jz      loc_180009458
180009352: add     rax, 27h ; '''
180009356: and     rax, 0FFFFFFFFFFFFFFE0h
18000935A: mov     [rax-8], rcx
18000935E: jmp     short loc_180009371
180009360: test    rsi, rsi
180009363: jz      short loc_18000936F
180009365: mov     rcx, rsi; Size
180009368: call    ??2@YAPEAX_K@Z; operator new(unsigned __int64)
18000936D: jmp     short loc_180009371
18000936F: xor     eax, eax
180009371: mov     qword ptr [rsp+98h+var_70], rax
180009376: mov     qword ptr [rsp+98h+var_70+8], rax
18000937B: lea     rdi, [rax+rsi]
18000937F: mov     [rsp+98h+var_60], rdi
180009384: mov     r8, rsi; Size
180009387: mov     rdx, rbx; Src
18000938A: mov     rcx, rax; void *
18000938D: call    memmove
180009392: mov     qword ptr [rsp+98h+var_70+8], rdi
180009397: mov     r8d, r15d
18000939A: lea     rdx, [rsp+98h+var_70]
18000939F: mov     rcx, r14
1800093A2: call    sub_180009850
1800093A7: movzx   ecx, al
1800093AA: mov     eax, r13d
1800093AD: cdq
1800093AE: mov     rsi, [rsp+98h+var_78]
1800093B3: idiv    esi
1800093B5: mov     edi, eax
1800093B7: test    cl, cl
1800093B9: jz      loc_18000945F
1800093BF: mov     rax, [r14+0D8h]
1800093C6: test    rax, rax
1800093C9: jz      short loc_1800093D3
1800093CB: lea     edx, [rdi+1]
1800093CE: mov     cl, 1
1800093D0: call    rax
1800093D2: nop
1800093D3: test    rbx, rbx
1800093D6: jz      short loc_18000940B
1800093D8: sub     rbp, rbx
1800093DB: mov     rax, rbx
1800093DE: cmp     rbp, 1000h
1800093E5: jb      short loc_180009400
1800093E7: add     rbp, 27h ; '''
1800093EB: mov     rbx, [rbx-8]
1800093EF: sub     rax, rbx
1800093F2: add     rax, 0FFFFFFFFFFFFFFF8h
1800093F6: cmp     rax, 1Fh
1800093FA: ja      loc_1800094A8
180009400: mov     rdx, rbp
180009403: mov     rcx, rbx; Block
180009406: call    j_j_free
18000940B: inc     r15d
18000940E: mov     edx, 80h
180009413: add     r12d, edx
180009416: add     r13d, 62h ; 'b'
18000941A: cmp     r15d, esi
18000941D: jl      loc_1800092B0
180009423: mov     rcx, r14
180009426: call    sub_1800096B0
18000942B: test    al, al
18000942D: jnz     loc_1800094BC
180009433: lea     rcx, aCompleteupdate; "completeUpdate fail\n"
18000943A: call    sub_180007960
18000943F: mov     rax, [r14+0D8h]
180009446: test    rax, rax
180009449: jz      loc_1800094D1
18000944F: mov     edx, 63h ; 'c'
180009454: xor     ecx, ecx
180009456: jmp     short loc_1800094CF
180009458: call    cs:_invalid_parameter_noinfo_noreturn
18000945E: int     3; Trap to Debugger
18000945F: lea     rcx, aTransmitdataFa; "transmitData fail\n"
180009466: call    sub_180007960
18000946B: mov     rax, [r14+0D8h]
180009472: test    rax, rax
180009475: jz      short loc_18000947F
180009477: lea     edx, [rdi+1]
18000947A: xor     ecx, ecx
18000947C: call    rax
18000947E: nop
18000947F: test    rbx, rbx
180009482: jz      short loc_1800094D1
180009484: sub     rbp, rbx
180009487: mov     rax, rbx
18000948A: cmp     rbp, 1000h
180009491: jb      short loc_1800094AF
180009493: add     rbp, 27h ; '''
180009497: mov     rbx, [rbx-8]
18000949B: sub     rax, rbx
18000949E: add     rax, 0FFFFFFFFFFFFFFF8h
1800094A2: cmp     rax, 1Fh
1800094A6: jbe     short loc_1800094AF
1800094A8: call    cs:_invalid_parameter_noinfo_noreturn
1800094AE: int     3; Trap to Debugger
1800094AF: mov     rdx, rbp
1800094B2: mov     rcx, rbx; Block
1800094B5: call    j_j_free
1800094BA: jmp     short loc_1800094D1
1800094BC: mov     rax, [r14+0D8h]
1800094C3: test    rax, rax
1800094C6: jz      short loc_1800094D1
1800094C8: mov     edx, 64h ; 'd'
1800094CD: mov     cl, 1
1800094CF: call    rax
1800094D1: mov     rcx, [rsp+98h+var_38]
1800094D6: xor     rcx, rsp; StackCookie
1800094D9: call    __security_check_cookie
1800094DE: lea     r11, [rsp+98h+var_28]
1800094E3: mov     rbx, [r11+38h]
1800094E7: mov     rbp, [r11+40h]
1800094EB: mov     rsi, [r11+48h]
1800094EF: mov     rsp, r11
1800094F2: pop     r15
1800094F4: pop     r14
1800094F6: pop     r13
1800094F8: pop     r12
1800094FA: pop     rdi
1800094FB: retn
1800094FC: call    ?cancel_current_task@Concurrency@@YAXXZ; Concurrency::cancel_current_task(void)
180009501: align 2

### FUNC 180009510 - 1800096A2 (402 bytes) name=sub_180009510
180009510: mov     [rsp+arg_8], rbx
180009515: push    rdi
180009516: sub     rsp, 50h
18000951A: mov     rax, cs:__security_cookie
180009521: xor     rax, rsp
180009524: mov     [rsp+58h+var_18], rax
180009529: mov     rbx, rcx
18000952C: cmp     cs:byte_180015FF0, 0
180009533: jz      short loc_180009541
180009535: lea     rcx, aBeginupdate; "beginUpdate\n"
18000953C: call    sub_180007960
180009541: mov     byte ptr [rbx+30h], 0
180009545: mov     ecx, 28h ; '('; Size
18000954A: call    ??2@YAPEAX_K@Z; operator new(unsigned __int64)
18000954F: mov     qword ptr [rsp+58h+var_38], rax
180009554: xorps   xmm0, xmm0
180009557: xor     ecx, ecx
180009559: movups  xmmword ptr [rax], xmm0
18000955C: movups  xmmword ptr [rax+10h], xmm0
180009560: mov     [rax+20h], rcx
180009564: mov     r8b, 5
180009567: mov     rcx, rax
18000956A: call    sub_18000A240
18000956F: mov     rdi, rax
180009572: test    rax, rax
180009575: jz      short loc_1800095A2
180009577: mov     rcx, [rbx+0D0h]
18000957E: test    rcx, rcx
180009581: jz      short loc_180009595
180009583: mov     rdx, [rax+8]
180009587: mov     r8, [rax+10h]
18000958B: sub     r8, rdx
18000958E: mov     r9, [rcx]
180009591: call    qword ptr [r9+8]
180009595: mov     rax, [rdi]
180009598: mov     edx, 1
18000959D: mov     rcx, rdi
1800095A0: call    qword ptr [rax]
1800095A2: xorps   xmm0, xmm0
1800095A5: movups  [rsp+58h+var_38], xmm0
1800095AA: lea     rdi, [rbx+80h]
1800095B1: mov     qword ptr [rsp+58h+var_38], rdi
1800095B6: mov     byte ptr [rsp+58h+var_38+8], 0
1800095BB: mov     rcx, rdi; _Mtx_t
1800095BE: call    cs:_Mtx_lock
1800095C4: test    eax, eax
1800095C6: jz      short loc_1800095D1
1800095C8: mov     ecx, eax
1800095CA: call    cs:?_Throw_C_error@std@@YAXH@Z; std::_Throw_C_error(int)
1800095D0: int     3; Trap to Debugger
1800095D1: mov     byte ptr [rsp+58h+var_38+8], 1
1800095D6: call    cs:_Xtime_get_ticks
1800095DC: add     rax, 1C9C380h
1800095E2: imul    rcx, rax, 64h ; 'd'
1800095E6: mov     rax, 112E0BE826D694B3h
1800095F0: imul    rcx
1800095F3: sar     rdx, 1Ah
1800095F7: mov     rax, rdx
1800095FA: shr     rax, 3Fh
1800095FE: add     rdx, rax
180009601: mov     [rsp+58h+var_28.sec], rdx
180009606: imul    rax, rdx, 3B9ACA00h
18000960D: sub     rcx, rax
180009610: mov     [rsp+58h+var_28.nsec], ecx
180009614: mov     rcx, rdi; _Mtx_t
180009617: call    cs:_Mtx_current_owns
18000961D: test    eax, eax
18000961F: jnz     short loc_18000962B
180009621: lea     ecx, [rax+4]
180009624: call    cs:?_Throw_Cpp_error@std@@YAXH@Z; std::_Throw_Cpp_error(int)
18000962A: int     3; Trap to Debugger
18000962B: lea     rcx, [rbx+38h]; _Cnd_t
18000962F: lea     r8, [rsp+58h+var_28]; xtime *
180009634: mov     rdx, rdi; _Mtx_t
180009637: call    cs:_Cnd_timedwait
18000963D: test    eax, eax
18000963F: jz      short loc_18000965D
180009641: cmp     eax, 2
180009644: jz      short loc_18000964F
180009646: mov     ecx, eax
180009648: call    cs:?_Throw_C_error@std@@YAXH@Z; std::_Throw_C_error(int)
18000964E: int     3; Trap to Debugger
18000964F: lea     rcx, aBeginupdateTim; "beginUpdate timeout\n"
180009656: call    sub_180007960
18000965B: jmp     short loc_18000966D
18000965D: movzx   edx, byte ptr [rbx+30h]
180009661: lea     rcx, aBeginupdateD; "beginUpdate:%d\n"
180009668: call    sub_180007960
18000966D: movzx   ebx, byte ptr [rbx+30h]
180009671: mov     rcx, rdi; _Mtx_t
180009674: call    cs:_Mtx_unlock
18000967A: test    eax, eax
18000967C: jz      short loc_180009687
18000967E: mov     ecx, eax
180009680: call    cs:?_Throw_C_error@std@@YAXH@Z; std::_Throw_C_error(int)
180009686: nop
180009687: movzx   eax, bl
18000968A: mov     rcx, [rsp+58h+var_18]
18000968F: xor     rcx, rsp; StackCookie
180009692: call    __security_check_cookie
180009697: mov     rbx, [rsp+58h+arg_8]
18000969C: add     rsp, 50h
1800096A0: pop     rdi
1800096A1: retn

### FUNC 1800096B0 - 180009842 (402 bytes) name=sub_1800096B0
1800096B0: mov     [rsp+arg_8], rbx
1800096B5: push    rdi
1800096B6: sub     rsp, 50h
1800096BA: mov     rax, cs:__security_cookie
1800096C1: xor     rax, rsp
1800096C4: mov     [rsp+58h+var_18], rax
1800096C9: mov     rbx, rcx
1800096CC: cmp     cs:byte_180015FF0, 0
1800096D3: jz      short loc_1800096E1
1800096D5: lea     rcx, aCompleteupdate_0; "completeUpdate\n"
1800096DC: call    sub_180007960
1800096E1: mov     byte ptr [rbx+30h], 0
1800096E5: mov     ecx, 28h ; '('; Size
1800096EA: call    ??2@YAPEAX_K@Z; operator new(unsigned __int64)
1800096EF: mov     qword ptr [rsp+58h+var_38], rax
1800096F4: xorps   xmm0, xmm0
1800096F7: xor     ecx, ecx
1800096F9: movups  xmmword ptr [rax], xmm0
1800096FC: movups  xmmword ptr [rax+10h], xmm0
180009700: mov     [rax+20h], rcx
180009704: mov     r8b, 6
180009707: mov     rcx, rax
18000970A: call    sub_18000A240
18000970F: mov     rdi, rax
180009712: test    rax, rax
180009715: jz      short loc_180009742
180009717: mov     rcx, [rbx+0D0h]
18000971E: test    rcx, rcx
180009721: jz      short loc_180009735
180009723: mov     rdx, [rax+8]
180009727: mov     r8, [rax+10h]
18000972B: sub     r8, rdx
18000972E: mov     r9, [rcx]
180009731: call    qword ptr [r9+8]
180009735: mov     rax, [rdi]
180009738: mov     edx, 1
18000973D: mov     rcx, rdi
180009740: call    qword ptr [rax]
180009742: xorps   xmm0, xmm0
180009745: movups  [rsp+58h+var_38], xmm0
18000974A: lea     rdi, [rbx+80h]
180009751: mov     qword ptr [rsp+58h+var_38], rdi
180009756: mov     byte ptr [rsp+58h+var_38+8], 0
18000975B: mov     rcx, rdi; _Mtx_t
18000975E: call    cs:_Mtx_lock
180009764: test    eax, eax
180009766: jz      short loc_180009771
180009768: mov     ecx, eax
18000976A: call    cs:?_Throw_C_error@std@@YAXH@Z; std::_Throw_C_error(int)
180009770: int     3; Trap to Debugger
180009771: mov     byte ptr [rsp+58h+var_38+8], 1
180009776: call    cs:_Xtime_get_ticks
18000977C: add     rax, 8F0D180h
180009782: imul    rcx, rax, 64h ; 'd'
180009786: mov     rax, 112E0BE826D694B3h
180009790: imul    rcx
180009793: sar     rdx, 1Ah
180009797: mov     rax, rdx
18000979A: shr     rax, 3Fh
18000979E: add     rdx, rax
1800097A1: mov     [rsp+58h+var_28.sec], rdx
1800097A6: imul    rax, rdx, 3B9ACA00h
1800097AD: sub     rcx, rax
1800097B0: mov     [rsp+58h+var_28.nsec], ecx
1800097B4: mov     rcx, rdi; _Mtx_t
1800097B7: call    cs:_Mtx_current_owns
1800097BD: test    eax, eax
1800097BF: jnz     short loc_1800097CB
1800097C1: lea     ecx, [rax+4]
1800097C4: call    cs:?_Throw_Cpp_error@std@@YAXH@Z; std::_Throw_Cpp_error(int)
1800097CA: int     3; Trap to Debugger
1800097CB: lea     rcx, [rbx+38h]; _Cnd_t
1800097CF: lea     r8, [rsp+58h+var_28]; xtime *
1800097D4: mov     rdx, rdi; _Mtx_t
1800097D7: call    cs:_Cnd_timedwait
1800097DD: test    eax, eax
1800097DF: jz      short loc_1800097FD
1800097E1: cmp     eax, 2
1800097E4: jz      short loc_1800097EF
1800097E6: mov     ecx, eax
1800097E8: call    cs:?_Throw_C_error@std@@YAXH@Z; std::_Throw_C_error(int)
1800097EE: int     3; Trap to Debugger
1800097EF: lea     rcx, aCompleteupdate_1; "completeUpdate timeout\n"
1800097F6: call    sub_180007960
1800097FB: jmp     short loc_18000980D
1800097FD: movzx   edx, byte ptr [rbx+30h]
180009801: lea     rcx, aCompleteupdate_2; "completeUpdate:%d\n"
180009808: call    sub_180007960
18000980D: movzx   ebx, byte ptr [rbx+30h]
180009811: mov     rcx, rdi; _Mtx_t
180009814: call    cs:_Mtx_unlock
18000981A: test    eax, eax
18000981C: jz      short loc_180009827
18000981E: mov     ecx, eax
180009820: call    cs:?_Throw_C_error@std@@YAXH@Z; std::_Throw_C_error(int)
180009826: nop
180009827: movzx   eax, bl
18000982A: mov     rcx, [rsp+58h+var_18]
18000982F: xor     rcx, rsp; StackCookie
180009832: call    __security_check_cookie
180009837: mov     rbx, [rsp+58h+arg_8]
18000983C: add     rsp, 50h
180009840: pop     rdi
180009841: retn

### FUNC 180009850 - 180009A3F (495 bytes) name=sub_180009850
180009850: push    rbx
180009852: push    rsi
180009853: push    rdi
180009854: sub     rsp, 60h
180009858: mov     rax, cs:__security_cookie
18000985F: xor     rax, rsp
180009862: mov     [rsp+78h+var_20], rax
180009867: mov     esi, r8d
18000986A: mov     rbx, rdx
18000986D: mov     rdi, rcx
180009870: mov     [rsp+78h+var_48], rdx
180009875: cmp     cs:byte_180015FF0, 0
18000987C: jz      short loc_18000988D
18000987E: mov     edx, r8d
180009881: lea     rcx, aTransmitdataD; "transmitData %d\n"
180009888: call    sub_180007960
18000988D: mov     byte ptr [rdi+30h], 0
180009891: mov     ecx, 28h ; '('; Size
180009896: call    ??2@YAPEAX_K@Z; operator new(unsigned __int64)
18000989B: mov     qword ptr [rsp+78h+var_40], rax
1800098A0: xorps   xmm0, xmm0
1800098A3: xor     ecx, ecx
1800098A5: movups  xmmword ptr [rax], xmm0
1800098A8: movups  xmmword ptr [rax+10h], xmm0
1800098AC: mov     [rax+20h], rcx
1800098B0: lea     ecx, [rsi+8001h]
1800098B6: mov     [rsp+78h+var_58], ecx
1800098BA: mov     r9, rbx
1800098BD: mov     rcx, rax
1800098C0: call    sub_180009FA0
1800098C5: mov     rsi, rax
1800098C8: test    rax, rax
1800098CB: jz      short loc_1800098F8
1800098CD: mov     rcx, [rdi+0D0h]
1800098D4: test    rcx, rcx
1800098D7: jz      short loc_1800098EB
1800098D9: mov     rdx, [rax+8]
1800098DD: mov     r8, [rax+10h]
1800098E1: sub     r8, rdx
1800098E4: mov     r9, [rcx]
1800098E7: call    qword ptr [r9+8]
1800098EB: mov     rax, [rsi]
1800098EE: mov     edx, 1
1800098F3: mov     rcx, rsi
1800098F6: call    qword ptr [rax]
1800098F8: xorps   xmm0, xmm0
1800098FB: movups  [rsp+78h+var_40], xmm0
180009900: lea     rsi, [rdi+80h]
180009907: mov     qword ptr [rsp+78h+var_40], rsi
18000990C: mov     byte ptr [rsp+78h+var_40+8], 0
180009911: mov     rcx, rsi; _Mtx_t
180009914: call    cs:_Mtx_lock
18000991A: test    eax, eax
18000991C: jz      short loc_180009927
18000991E: mov     ecx, eax
180009920: call    cs:?_Throw_C_error@std@@YAXH@Z; std::_Throw_C_error(int)
180009926: int     3; Trap to Debugger
180009927: mov     byte ptr [rsp+78h+var_40+8], 1
18000992C: call    cs:_Xtime_get_ticks
180009932: add     rax, 4C4B40h
180009938: imul    rcx, rax, 64h ; 'd'
18000993C: mov     rax, 112E0BE826D694B3h
180009946: imul    rcx
180009949: sar     rdx, 1Ah
18000994D: mov     rax, rdx
180009950: shr     rax, 3Fh
180009954: add     rdx, rax
180009957: mov     [rsp+78h+var_30.sec], rdx
18000995C: imul    rax, rdx, 3B9ACA00h
180009963: sub     rcx, rax
180009966: mov     [rsp+78h+var_30.nsec], ecx
18000996A: mov     rcx, rsi; _Mtx_t
18000996D: call    cs:_Mtx_current_owns
180009973: test    eax, eax
180009975: jnz     short loc_180009981
180009977: lea     ecx, [rax+4]
18000997A: call    cs:?_Throw_Cpp_error@std@@YAXH@Z; std::_Throw_Cpp_error(int)
180009980: int     3; Trap to Debugger
180009981: lea     rcx, [rdi+38h]; _Cnd_t
180009985: lea     r8, [rsp+78h+var_30]; xtime *
18000998A: mov     rdx, rsi; _Mtx_t
18000998D: call    cs:_Cnd_timedwait
180009993: test    eax, eax
180009995: jz      short loc_1800099B3
180009997: cmp     eax, 2
18000999A: jz      short loc_1800099A5
18000999C: mov     ecx, eax
18000999E: call    cs:?_Throw_C_error@std@@YAXH@Z; std::_Throw_C_error(int)
1800099A4: int     3; Trap to Debugger
1800099A5: lea     rcx, aTransmitdataTi; "transmitData timeout\n"
1800099AC: call    sub_180007960
1800099B1: jmp     short loc_1800099C3
1800099B3: movzx   edx, byte ptr [rdi+30h]
1800099B7: lea     rcx, aTransmitdataD_0; "transmitData:%d\n"
1800099BE: call    sub_180007960
1800099C3: movzx   edi, byte ptr [rdi+30h]
1800099C7: mov     rcx, rsi; _Mtx_t
1800099CA: call    cs:_Mtx_unlock
1800099D0: test    eax, eax
1800099D2: jz      short loc_1800099DD
1800099D4: mov     ecx, eax
1800099D6: call    cs:?_Throw_C_error@std@@YAXH@Z; std::_Throw_C_error(int)
1800099DC: nop
1800099DD: mov     rcx, [rbx]
1800099E0: test    rcx, rcx
1800099E3: jz      short loc_180009A1F
1800099E5: mov     rdx, [rbx+10h]
1800099E9: sub     rdx, rcx
1800099EC: cmp     rdx, 1000h
1800099F3: jb      short loc_180009A0D
1800099F5: add     rdx, 27h ; '''
1800099F9: mov     r8, [rcx-8]
1800099FD: sub     rcx, r8
180009A00: lea     rax, [rcx-8]
180009A04: cmp     rax, 1Fh
180009A08: ja      short loc_180009A38
180009A0A: mov     rcx, r8; Block
180009A0D: call    j_j_free
180009A12: xor     eax, eax
180009A14: mov     [rbx], rax
180009A17: mov     [rbx+8], rax
180009A1B: mov     [rbx+10h], rax
180009A1F: movzx   eax, dil
180009A23: mov     rcx, [rsp+78h+var_20]
180009A28: xor     rcx, rsp; StackCookie
180009A2B: call    __security_check_cookie
180009A30: add     rsp, 60h
180009A34: pop     rdi
180009A35: pop     rsi
180009A36: pop     rbx
180009A37: retn
180009A38: call    cs:_invalid_parameter_noinfo_noreturn
180009A3E: db 0CCh

### FUNC 180009A40 - 180009A64 (36 bytes) name=sub_180009A40
180009A40: cmp     dl, 2
180009A43: jnz     short loc_180009A4F
180009A45: sub     r8b, 4
180009A49: cmp     r8b, 3
180009A4D: jmp     short loc_180009A5C
180009A4F: cmp     dl, 81h
180009A52: jnz     short loc_180009A61
180009A54: sub     r8b, 0Ah
180009A58: cmp     r8b, 2
180009A5C: ja      short loc_180009A61
180009A5E: mov     al, 1
180009A60: retn
180009A61: xor     al, al
180009A63: retn

### FUNC 180009A70 - 180009D65 (757 bytes) name=??$common_mktime@_J@@YA_JQEAUtm@@_N@Z
180009A70: mov     [rsp-18h+arg_8], rbx
180009A75: mov     [rsp-18h+arg_10], rsi
180009A7A: mov     [rsp-18h+arg_18], rdi
180009A7F: push    rbp
180009A80: push    r14
180009A82: push    r15
180009A84: mov     rbp, rsp
180009A87: sub     rsp, 70h
180009A8B: mov     rax, cs:__security_cookie
180009A92: xor     rax, rsp
180009A95: mov     [rbp+var_10], rax
180009A99: mov     rsi, rcx
180009A9C: mov     rbx, [rdx]
180009A9F: movzx   ecx, byte ptr [rbx+4]
180009AA3: movzx   eax, byte ptr [rbx+5]
180009AA7: cmp     cl, 2
180009AAA: jnz     loc_180009CCB
180009AB0: cmp     al, 4
180009AB2: jnz     loc_180009C56
180009AB8: xorps   xmm0, xmm0
180009ABB: xor     r8d, r8d
180009ABE: movups  xmmword ptr [rbp+var_38], xmm0
180009AC2: movups  [rbp+var_28], xmm0
180009AC6: mov     [rbp+var_18], r8
180009ACA: lea     r8, off_1800100F8
180009AD1: mov     [rbp+var_38], r8
180009AD5: movdqu  xmmword ptr [rbp+var_38+8], xmm0
180009ADA: xor     r15d, r15d
180009ADD: mov     qword ptr [rbp+var_28+8], r15
180009AE1: mov     byte ptr [rbp+var_18+4], cl
180009AE4: mov     byte ptr [rbp+var_18+5], al
180009AE7: mov     rdi, [rdx+8]
180009AEB: sub     rdi, rbx
180009AEE: lea     eax, [rdi-9]
180009AF1: test    eax, eax
180009AF3: cmovs   eax, r15d
180009AF7: mov     dword ptr [rbp+var_18], eax
180009AFA: test    rdi, rdi
180009AFD: jz      short loc_180009B0B
180009AFF: mov     rdx, rdi
180009B02: lea     rcx, [rbp+var_38+8]
180009B06: call    sub_180002BA0
180009B0B: mov     r8, rdi; Size
180009B0E: mov     rdx, rbx; Src
180009B11: mov     rbx, [rbp+var_38+8]
180009B15: mov     rcx, rbx; void *
180009B18: call    memmove
180009B1D: lea     rax, [rbx+rdi]
180009B21: mov     qword ptr [rbp+var_28], rax
180009B25: xorps   xmm0, xmm0
180009B28: xor     eax, eax
180009B2A: movups  xmmword ptr [rbp+Block], xmm0
180009B2E: mov     [rbp+var_40], rax
180009B32: lea     rdx, [rbp+Block]
180009B36: lea     rcx, [rbp+var_38]
180009B3A: call    sub_18000A360
180009B3F: nop
180009B40: lea     rbx, [rsi+0E0h]
180009B47: mov     [rbx+10h], r15
180009B4B: mov     rax, rbx
180009B4E: cmp     qword ptr [rbx+18h], 10h
180009B53: jb      short loc_180009B58
180009B55: mov     rax, [rbx]
180009B58: mov     byte ptr [rax], 0
180009B5B: mov     r14, [rbp+Block+8]
180009B5F: mov     rdi, [rbp+Block]
180009B63: cmp     rdi, r14
180009B66: jz      short loc_180009BB0
180009B68: nop     dword ptr [rax+rax+00000000h]
180009B70: movzx   r9d, byte ptr [rdi]
180009B74: mov     rcx, [rbx+10h]
180009B78: mov     rdx, [rbx+18h]
180009B7C: cmp     rcx, rdx
180009B7F: jnb     short loc_180009BA0
180009B81: lea     rax, [rcx+1]
180009B85: mov     [rbx+10h], rax
180009B89: mov     rax, rbx
180009B8C: cmp     rdx, 10h
180009B90: jb      short loc_180009B95
180009B92: mov     rax, [rbx]
180009B95: mov     [rax+rcx], r9b
180009B99: mov     byte ptr [rax+rcx+1], 0
180009B9E: jmp     short loc_180009BA8
180009BA0: mov     rcx, rbx; Src
180009BA3: call    sub_180002770
180009BA8: inc     rdi
180009BAB: cmp     rdi, r14
180009BAE: jnz     short loc_180009B70
180009BB0: lea     rcx, [rsi+38h]; _Cnd_t
180009BB4: call    cs:_Cnd_broadcast
180009BBA: test    eax, eax
180009BBC: jz      short loc_180009BC7
180009BBE: mov     ecx, eax
180009BC0: call    cs:?_Throw_C_error@std@@YAXH@Z
180009BC6: nop
180009BC7: mov     rcx, [rbp+Block]; Block
180009BCB: test    rcx, rcx
180009BCE: jz      short loc_180009C10
180009BD0: mov     rdx, [rbp+var_40]
180009BD4: sub     rdx, rcx
180009BD7: mov     rax, rcx
180009BDA: cmp     rdx, 1000h
180009BE1: jb      short loc_180009BFF
180009BE3: add     rdx, 27h ; '''
180009BE7: mov     rcx, [rcx-8]
180009BEB: sub     rax, rcx
180009BEE: add     rax, 0FFFFFFFFFFFFFFF8h
180009BF2: cmp     rax, 1Fh
180009BF6: jbe     short loc_180009BFF
180009BF8: call    cs:_invalid_parameter_noinfo_noreturn
180009BFE: int     3; Trap to Debugger
180009BFF: call    j_j_free
180009C04: xorps   xmm0, xmm0
180009C07: movdqu  xmmword ptr [rbp+Block], xmm0
180009C0C: mov     [rbp+var_40], r15
180009C10: mov     rcx, [rbp+var_38+8]; Block
180009C14: test    rcx, rcx
180009C17: jz      loc_180009D3F
180009C1D: mov     rdx, qword ptr [rbp+var_28+8]
180009C21: sub     rdx, rcx
180009C24: mov     rax, rcx
180009C27: cmp     rdx, 1000h
180009C2E: jb      short loc_180009C4C
180009C30: add     rdx, 27h ; '''
180009C34: mov     rcx, [rcx-8]
180009C38: sub     rax, rcx
180009C3B: add     rax, 0FFFFFFFFFFFFFFF8h
180009C3F: cmp     rax, 1Fh
180009C43: jbe     short loc_180009C4C
180009C45: call    cs:_invalid_parameter_noinfo_noreturn
180009C4B: int     3; Trap to Debugger
180009C4C: call    j_j_free
180009C51: jmp     loc_180009D3F
180009C56: cmp     al, 5
180009C58: jnz     short loc_180009C7B
180009C5A: cmp     byte ptr [rbx+8], 1
180009C5E: setz    al
180009C61: mov     [rsi+30h], al
180009C64: lea     rcx, [rsi+38h]; _Cnd_t
180009C68: call    cs:_Cnd_broadcast
180009C6E: test    eax, eax
180009C70: jz      short loc_180009CC9
180009C72: mov     ecx, eax
180009C74: call    cs:?_Throw_C_error@std@@YAXH@Z
180009C7A: nop
180009C7B: cmp     al, 6
180009C7D: jnz     short loc_180009CA0
180009C7F: cmp     byte ptr [rbx+8], 1
180009C83: setz    al
180009C86: mov     [rsi+30h], al
180009C89: lea     rcx, [rsi+38h]; _Cnd_t
180009C8D: call    cs:_Cnd_broadcast
180009C93: test    eax, eax
180009C95: jz      short loc_180009CC9
180009C97: mov     ecx, eax
180009C99: call    cs:?_Throw_C_error@std@@YAXH@Z
180009C9F: nop
180009CA0: cmp     al, 7
180009CA2: jnz     loc_180009D3F
180009CA8: cmp     byte ptr [rbx+8], 1
180009CAC: setz    al
180009CAF: mov     [rsi+30h], al
180009CB2: lea     rcx, [rsi+38h]; _Cnd_t
180009CB6: call    cs:_Cnd_broadcast
180009CBC: test    eax, eax
180009CBE: jz      short loc_180009CC9
180009CC0: mov     ecx, eax
180009CC2: call    cs:?_Throw_C_error@std@@YAXH@Z
180009CC8: nop
180009CC9: jmp     short loc_180009D3F
180009CCB: cmp     cl, 81h
180009CCE: jnz     short loc_180009D3F
180009CD0: cmp     al, 0Ch
180009CD2: jnz     short loc_180009CF5
180009CD4: cmp     byte ptr [rbx+8], 1
180009CD8: setz    al
180009CDB: mov     [rsi+30h], al
180009CDE: lea     rcx, [rsi+38h]; _Cnd_t
180009CE2: call    cs:_Cnd_broadcast
180009CE8: test    eax, eax
180009CEA: jz      short loc_180009D3F
180009CEC: mov     ecx, eax
180009CEE: call    cs:?_Throw_C_error@std@@YAXH@Z
180009CF4: nop
180009CF5: cmp     al, 0Ah
180009CF7: jnz     short loc_180009D1A
180009CF9: cmp     byte ptr [rbx+8], 1
180009CFD: setz    al
180009D00: mov     [rsi+30h], al
180009D03: lea     rcx, [rsi+38h]; _Cnd_t
180009D07: call    cs:_Cnd_broadcast
180009D0D: test    eax, eax
180009D0F: jz      short loc_180009D3F
180009D11: mov     ecx, eax
180009D13: call    cs:?_Throw_C_error@std@@YAXH@Z
180009D19: nop
180009D1A: cmp     al, 0Bh
180009D1C: jnz     short loc_180009D3F
180009D1E: cmp     byte ptr [rbx+8], 1
180009D22: setz    al
180009D25: mov     [rsi+30h], al
180009D28: lea     rcx, [rsi+38h]; _Cnd_t
180009D2C: call    cs:_Cnd_broadcast
180009D32: test    eax, eax
180009D34: jz      short loc_180009D3F
180009D36: mov     ecx, eax
180009D38: call    cs:?_Throw_C_error@std@@YAXH@Z
180009D3E: nop
180009D3F: mov     rcx, [rbp+var_10]
180009D43: xor     rcx, rsp; StackCookie
180009D46: call    __security_check_cookie
180009D4B: lea     r11, [rsp+70h+var_s0]
180009D50: mov     rbx, [r11+28h]
180009D54: mov     rsi, [r11+30h]
180009D58: mov     rdi, [r11+38h]
180009D5C: mov     rsp, r11
180009D5F: pop     r15
180009D61: pop     r14
180009D63: pop     rbp
180009D64: retn

### FUNC 180009D70 - 180009F95 (549 bytes) name=sub_180009D70
180009D70: mov     [rsp+arg_0], rbx
180009D75: mov     [rsp+arg_8], rbp
180009D7A: mov     [rsp+arg_10], rsi
180009D7F: mov     [rsp+arg_18], rdi
180009D84: push    r13
180009D86: push    r14
180009D88: push    r15
180009D8A: sub     rsp, 20h
180009D8E: mov     eax, [r9+8]
180009D92: lea     rbx, [rcx+8]
180009D96: sub     eax, [r9]
180009D99: mov     rdi, r9
180009D9C: mov     [rcx+20h], eax
180009D9F: movzx   r15d, r8b
180009DA3: mov     byte ptr [rcx+24h], 2
180009DA7: mov     [rcx+25h], r8b
180009DAB: mov     rbp, [rbx+8]
180009DAF: lea     r14d, [rax+5]
180009DB3: mov     rdx, [rbx]
180009DB6: lea     r13d, [r14+4]
180009DBA: mov     rcx, rbp
180009DBD: movsxd  rsi, r13d
180009DC0: sub     rcx, rdx
180009DC3: cmp     rsi, rcx
180009DC6: jnb     short loc_180009DCE
180009DC8: lea     rax, [rdx+rsi]
180009DCC: jmp     short loc_180009DFD
180009DCE: jbe     short loc_180009E01
180009DD0: mov     rax, [rbx+10h]
180009DD4: sub     rax, rdx
180009DD7: cmp     rsi, rax
180009DDA: jbe     short loc_180009DE9
180009DDC: mov     rdx, rsi
180009DDF: mov     rcx, rbx
180009DE2: call    sub_18000A400
180009DE7: jmp     short loc_180009E01
180009DE9: sub     rsi, rcx
180009DEC: xor     edx, edx; Val
180009DEE: mov     r8, rsi; Size
180009DF1: mov     rcx, rbp; void *
180009DF4: call    memset
180009DF9: lea     rax, [rsi+rbp]
180009DFD: mov     [rbx+8], rax
180009E01: mov     rax, [rbx]
180009E04: mov     ecx, r14d
180009E07: sar     ecx, 8
180009E0A: xor     sil, sil
180009E0D: mov     r8d, 3
180009E13: mov     byte ptr [rax], 7Eh ; '~'
180009E16: mov     rax, [rbx]
180009E19: mov     [rax+1], cl
180009E1C: mov     rax, [rbx]
180009E1F: mov     [rax+2], r14b
180009E23: mov     rcx, [rbx+8]
180009E27: mov     rdx, [rbx]
180009E2A: mov     rax, rcx
180009E2D: sub     rax, rdx
180009E30: cmp     rax, r8
180009E33: jnb     short loc_180009E3B
180009E35: mov     r8d, ecx
180009E38: sub     r8d, edx
180009E3B: movsxd  r11, r8d
180009E3E: xor     cl, cl
180009E40: xor     r8d, r8d
180009E43: xor     r9b, r9b
180009E46: test    r11, r11
180009E49: jle     short loc_180009E8A
180009E4B: mov     eax, r8d
180009E4E: cmp     r11, 2
180009E52: jl      short loc_180009E80
180009E54: lea     r10, [r11-1]
180009E58: nop     dword ptr [rax+rax+00000000h]
180009E60: add     cl, [rax+rdx]
180009E63: add     r9b, [rax+rdx+1]
180009E68: add     rax, 2
180009E6C: cmp     rax, r10
180009E6F: jl      short loc_180009E60
180009E71: cmp     rax, r11
180009E74: jge     short loc_180009E84
180009E76: nop     word ptr [rax+rax+00000000h]
180009E80: movzx   esi, byte ptr [rax+rdx]
180009E84: add     cl, r9b
180009E87: add     sil, cl
180009E8A: mov     [rdx+3], sil
180009E8E: mov     rax, [rbx]
180009E91: mov     esi, cs:dword_180015038
180009E97: mov     ecx, esi
180009E99: sar     ecx, 8
180009E9C: mov     byte ptr [rax+4], 2
180009EA0: mov     rax, [rbx]
180009EA3: mov     [rax+5], r15b
180009EA7: mov     rax, [rbx]
180009EAA: mov     [rax+6], cl
180009EAD: mov     rax, [rbx]
180009EB0: mov     [rax+7], sil
180009EB4: mov     rax, [rdi+8]
180009EB8: cmp     rax, [rdi]
180009EBB: jz      short loc_180009EE5
180009EBD: mov     rdx, r8
180009EC0: mov     rax, [rdi]
180009EC3: lea     rdx, [rdx+1]
180009EC7: mov     rcx, [rbx]
180009ECA: inc     r8d
180009ECD: movzx   eax, byte ptr [rdx+rax-1]
180009ED2: mov     [rdx+rcx+7], al
180009ED6: mov     rcx, [rdi+8]
180009EDA: sub     rcx, [rdi]
180009EDD: movsxd  rax, r8d
180009EE0: cmp     rax, rcx
180009EE3: jb      short loc_180009EC0
180009EE5: mov     rcx, [rbx+8]
180009EE9: lea     r9d, [r13-1]
180009EED: mov     rdx, [rbx]
180009EF0: mov     rax, rcx
180009EF3: sub     rax, rdx
180009EF6: movsxd  rdi, r9d
180009EF9: xor     r10b, r10b
180009EFC: cmp     rdi, rax
180009EFF: jbe     short loc_180009F07
180009F01: mov     r9d, ecx
180009F04: sub     r9d, edx
180009F07: xor     cl, cl
180009F09: movsxd  r11, r9d
180009F0C: xor     r8b, r8b
180009F0F: cmp     r11, 4
180009F13: jle     short loc_180009F5B
180009F15: mov     eax, 4
180009F1A: cmp     r11, 6
180009F1E: jl      short loc_180009F50
180009F20: lea     r9, [r11-1]
180009F24: nop     dword ptr [rax+00h]
180009F28: nop     dword ptr [rax+rax+00000000h]
180009F30: add     cl, [rdx+rax]
180009F33: add     r8b, [rdx+rax+1]
180009F38: add     rax, 2
180009F3C: cmp     rax, r9
180009F3F: jl      short loc_180009F30
180009F41: cmp     rax, r11
180009F44: jge     short loc_180009F55
180009F46: nop     word ptr [rax+rax+00000000h]
180009F50: movzx   r10d, byte ptr [rdx+rax]
180009F55: add     cl, r8b
180009F58: add     r10b, cl
180009F5B: mov     rbx, [rsp+38h+arg_0]
180009F60: lea     ecx, [rsi+1]
180009F63: mov     rbp, [rsp+38h+arg_8]
180009F68: cmp     ecx, 8000h
180009F6E: mov     rsi, [rsp+38h+arg_10]
180009F73: mov     eax, 1
180009F78: cmovl   eax, ecx
180009F7B: mov     [rdi+rdx], r10b
180009F7F: mov     rdi, [rsp+38h+arg_18]
180009F84: mov     cs:dword_180015038, eax
180009F8A: add     rsp, 20h
180009F8E: pop     r15
180009F90: pop     r14
180009F92: pop     r13
180009F94: retn

### FUNC 180009FA0 - 18000A1AF (527 bytes) name=sub_180009FA0
180009FA0: mov     [rsp+arg_8], rbx
180009FA5: mov     [rsp+arg_10], rbp
180009FAA: mov     [rsp+arg_18], rsi
180009FAF: mov     [rsp+arg_0], rcx
180009FB4: push    rdi
180009FB5: push    r12
180009FB7: push    r13
180009FB9: push    r14
180009FBB: push    r15
180009FBD: sub     rsp, 20h
180009FC1: mov     rsi, r9
180009FC4: mov     r15, rcx
180009FC7: lea     rax, off_1800100F8
180009FCE: mov     [rcx], rax
180009FD1: xor     edi, edi
180009FD3: mov     [rcx+8], rdi
180009FD7: mov     [rcx+10h], rdi
180009FDB: mov     [rcx+18h], rdi
180009FDF: mov     rax, [r9+8]
180009FE3: sub     rax, [r9]
180009FE6: mov     [rcx+20h], eax
180009FE9: mov     word ptr [rcx+24h], 702h
180009FEF: lea     r13d, [rax+5]
180009FF3: lea     r12d, [r13+4]
180009FF7: movsxd  rbp, r12d
180009FFA: mov     r14, [rcx+10h]
180009FFE: cmp     rbp, r14
18000A001: jnb     short loc_18000A009
18000A003: mov     [rcx+10h], rbp
18000A007: jmp     short loc_18000A036
18000A009: jbe     short loc_18000A036
18000A00B: test    r12d, r12d
18000A00E: jz      short loc_18000A01E
18000A010: mov     rdx, rbp
18000A013: add     rcx, 8
18000A017: call    sub_18000A400
18000A01C: jmp     short loc_18000A036
18000A01E: sub     rbp, r14
18000A021: mov     r8, rbp; Size
18000A024: xor     edx, edx; Val
18000A026: mov     rcx, r14; void *
18000A029: call    memset
18000A02E: lea     rax, [r14+rbp]
18000A032: mov     [r15+10h], rax
18000A036: mov     rax, [r15+8]
18000A03A: mov     byte ptr [rax], 7Eh ; '~'
18000A03D: mov     rcx, [r15+8]
18000A041: mov     eax, r13d
18000A044: sar     eax, 8
18000A047: mov     [rcx+1], al
18000A04A: mov     rax, [r15+8]
18000A04E: mov     [rax+2], r13b
18000A052: mov     ecx, 3
18000A057: xor     r10b, r10b
18000A05A: mov     r8, [r15+8]
18000A05E: mov     rax, [r15+10h]
18000A062: sub     rax, r8
18000A065: cmp     rax, rcx
18000A068: cmovb   ecx, eax
18000A06B: xor     dl, dl
18000A06D: xor     r9b, r9b
18000A070: movsxd  r11, ecx
18000A073: test    ecx, ecx
18000A075: jle     short loc_18000A0BB
18000A077: mov     rax, rdi
18000A07A: cmp     r11, 2
18000A07E: jl      short loc_18000A0B0
18000A080: lea     rcx, [r11-1]
18000A084: nop     dword ptr [rax+00h]
18000A088: nop     dword ptr [rax+rax+00000000h]
18000A090: add     dl, [rax+r8]
18000A094: add     r9b, [rax+r8+1]
18000A099: add     rax, 2
18000A09D: cmp     rax, rcx
18000A0A0: jl      short loc_18000A090
18000A0A2: cmp     rax, r11
18000A0A5: jge     short loc_18000A0B5
18000A0A7: nop     word ptr [rax+rax+00000000h]
18000A0B0: movzx   r10d, byte ptr [rax+r8]
18000A0B5: add     dl, r9b
18000A0B8: add     r10b, dl
18000A0BB: mov     [r8+3], r10b
18000A0BF: mov     rax, [r15+8]
18000A0C3: mov     byte ptr [rax+4], 2
18000A0C7: mov     rax, [r15+8]
18000A0CB: mov     byte ptr [rax+5], 7
18000A0CF: mov     rcx, [r15+8]
18000A0D3: mov     edx, [rsp+48h+arg_20]
18000A0D7: mov     eax, edx
18000A0D9: sar     eax, 8
18000A0DC: mov     [rcx+6], al
18000A0DF: mov     rax, [r15+8]
18000A0E3: mov     [rax+7], dl
18000A0E6: mov     rax, [rsi+8]
18000A0EA: cmp     rax, [rsi]
18000A0ED: jz      short loc_18000A118
18000A0EF: mov     r8, rdi
18000A0F2: mov     rdx, [r15+8]
18000A0F6: mov     rax, [rsi]
18000A0F9: movzx   ecx, byte ptr [r8+rax]
18000A0FE: mov     [rdx+r8+8], cl
18000A103: inc     edi
18000A105: lea     r8, [r8+1]
18000A109: mov     rcx, [rsi+8]
18000A10D: sub     rcx, [rsi]
18000A110: movsxd  rax, edi
18000A113: cmp     rax, rcx
18000A116: jb      short loc_18000A0F2
18000A118: lea     ecx, [r12-1]
18000A11D: xor     r10b, r10b
18000A120: mov     r8, [r15+8]
18000A124: mov     rax, [r15+10h]
18000A128: sub     rax, r8
18000A12B: movsxd  rdi, ecx
18000A12E: xor     dl, dl
18000A130: xor     r9b, r9b
18000A133: cmp     rdi, rax
18000A136: cmovbe  eax, ecx
18000A139: movsxd  r11, eax
18000A13C: cmp     r11, 4
18000A140: jle     short loc_18000A18B
18000A142: mov     eax, 4
18000A147: cmp     r11, 6
18000A14B: jl      short loc_18000A180
18000A14D: lea     rcx, [r11-1]
18000A151: nop     dword ptr [rax+00h]
18000A155: nop     word ptr [rax+rax+00000000h]
18000A160: add     dl, [rax+r8]
18000A164: add     r9b, [rax+r8+1]
18000A169: add     rax, 2
18000A16D: cmp     rax, rcx
18000A170: jl      short loc_18000A160
18000A172: cmp     rax, r11
18000A175: jge     short loc_18000A185
18000A177: nop     word ptr [rax+rax+00000000h]
18000A180: movzx   r10d, byte ptr [rax+r8]
18000A185: add     dl, r9b
18000A188: add     r10b, dl
18000A18B: mov     [rdi+r8], r10b
18000A18F: mov     rax, r15
18000A192: mov     rbx, [rsp+48h+arg_8]
18000A197: mov     rbp, [rsp+48h+arg_10]
18000A19C: mov     rsi, [rsp+48h+arg_18]
18000A1A1: add     rsp, 20h
18000A1A5: pop     r15
18000A1A7: pop     r14
18000A1A9: pop     r13
18000A1AB: pop     r12
18000A1AD: pop     rdi
18000A1AE: retn

### FUNC 18000A1B0 - 18000A235 (133 bytes) name=sub_18000A1B0
18000A1B0: mov     [rsp+arg_8], rbx
18000A1B5: push    rdi
18000A1B6: sub     rsp, 20h
18000A1BA: lea     rax, off_1800100F8
18000A1C1: mov     rbx, rcx
18000A1C4: mov     [rcx], rax
18000A1C7: mov     edi, edx
18000A1C9: mov     rcx, [rcx+8]
18000A1CD: test    rcx, rcx
18000A1D0: jz      short loc_18000A20D
18000A1D2: mov     rdx, [rbx+18h]
18000A1D6: sub     rdx, rcx
18000A1D9: cmp     rdx, 1000h
18000A1E0: jb      short loc_18000A1FA
18000A1E2: mov     r8, [rcx-8]
18000A1E6: add     rdx, 27h ; '''
18000A1EA: sub     rcx, r8
18000A1ED: lea     rax, [rcx-8]
18000A1F1: cmp     rax, 1Fh
18000A1F5: ja      short loc_18000A22E
18000A1F7: mov     rcx, r8; Block
18000A1FA: call    j_j_free
18000A1FF: xor     eax, eax
18000A201: mov     [rbx+8], rax
18000A205: mov     [rbx+10h], rax
18000A209: mov     [rbx+18h], rax
18000A20D: test    dil, 1
18000A211: jz      short loc_18000A220
18000A213: mov     edx, 28h ; '('
18000A218: mov     rcx, rbx; Block
18000A21B: call    j_j_free
18000A220: mov     rax, rbx
18000A223: mov     rbx, [rsp+28h+arg_8]
18000A228: add     rsp, 20h
18000A22C: pop     rdi
18000A22D: retn
18000A22E: call    cs:_invalid_parameter_noinfo_noreturn
18000A234: db 0CCh

### FUNC 18000A240 - 18000A2E7 (167 bytes) name=sub_18000A240
18000A240: push    rbx
18000A242: sub     rsp, 50h
18000A246: mov     rax, cs:__security_cookie
18000A24D: xor     rax, rsp
18000A250: mov     [rsp+58h+var_18], rax
18000A255: mov     rbx, rcx
18000A258: mov     [rsp+58h+var_38], rcx
18000A25D: lea     rax, off_1800100F8
18000A264: mov     [rcx], rax
18000A267: xor     ecx, ecx
18000A269: mov     [rbx+8], rcx
18000A26D: mov     [rbx+10h], rcx
18000A271: mov     [rbx+18h], rcx
18000A275: xorps   xmm1, xmm1
18000A278: movdqu  xmmword ptr [rsp+58h+Block], xmm1
18000A27E: mov     [rsp+58h+var_20], rcx
18000A283: lea     r9, [rsp+58h+Block]
18000A288: mov     rcx, rbx
18000A28B: call    sub_180009D70
18000A290: nop
18000A291: mov     rcx, [rsp+58h+Block]; Block
18000A296: test    rcx, rcx
18000A299: jz      short loc_18000A2D1
18000A29B: mov     rdx, [rsp+58h+var_20]
18000A2A0: sub     rdx, rcx
18000A2A3: mov     rax, rcx
18000A2A6: cmp     rdx, 1000h
18000A2AD: jb      short loc_18000A2CB
18000A2AF: add     rdx, 27h ; '''
18000A2B3: mov     rcx, [rcx-8]
18000A2B7: sub     rax, rcx
18000A2BA: add     rax, 0FFFFFFFFFFFFFFF8h
18000A2BE: cmp     rax, 1Fh
18000A2C2: jbe     short loc_18000A2CB
18000A2C4: call    cs:_invalid_parameter_noinfo_noreturn
18000A2CA: int     3; Trap to Debugger
18000A2CB: call    j_j_free
18000A2D0: nop
18000A2D1: mov     rax, rbx
18000A2D4: mov     rcx, [rsp+58h+var_18]
18000A2D9: xor     rcx, rsp; StackCookie
18000A2DC: call    __security_check_cookie
18000A2E1: add     rsp, 50h
18000A2E5: pop     rbx
18000A2E6: retn

### FUNC 18000A2F0 - 18000A354 (100 bytes) name=sub_18000A2F0
18000A2F0: push    rbx
18000A2F2: sub     rsp, 20h
18000A2F6: lea     rax, off_1800100F8
18000A2FD: mov     rbx, rcx
18000A300: mov     [rcx], rax
18000A303: mov     rcx, [rcx+8]
18000A307: test    rcx, rcx
18000A30A: jz      short loc_18000A347
18000A30C: mov     rdx, [rbx+18h]
18000A310: sub     rdx, rcx
18000A313: cmp     rdx, 1000h
18000A31A: jb      short loc_18000A334
18000A31C: mov     r8, [rcx-8]
18000A320: add     rdx, 27h ; '''
18000A324: sub     rcx, r8
18000A327: lea     rax, [rcx-8]
18000A32B: cmp     rax, 1Fh
18000A32F: ja      short loc_18000A34D
18000A331: mov     rcx, r8; Block
18000A334: call    j_j_free
18000A339: xor     eax, eax
18000A33B: mov     [rbx+8], rax
18000A33F: mov     [rbx+10h], rax
18000A343: mov     [rbx+18h], rax
18000A347: add     rsp, 20h
18000A34B: pop     rbx
18000A34C: retn
18000A34D: call    cs:_invalid_parameter_noinfo_noreturn
18000A353: db 0CCh

### FUNC 18000A360 - 18000A3FC (156 bytes) name=sub_18000A360
18000A360: mov     [rsp+arg_0], rbx
18000A365: mov     [rsp+arg_10], rbp
18000A36A: mov     [rsp+arg_18], rsi
18000A36F: mov     [rsp+arg_8], rdx
18000A374: push    rdi
18000A375: sub     rsp, 30h
18000A379: mov     rbx, rdx
18000A37C: mov     rbp, rcx
18000A37F: xor     edi, edi
18000A381: mov     [rsp+38h+var_18], edi
18000A385: xorps   xmm0, xmm0
18000A388: movups  xmmword ptr [rdx], xmm0
18000A38B: mov     [rdx], rdi
18000A38E: mov     [rdx+8], rdi
18000A392: mov     [rdx+10h], rdi
18000A396: mov     [rsp+38h+var_18], 1
18000A39E: cmp     [rcx+20h], edi
18000A3A1: jle     short loc_18000A3E3
18000A3A3: mov     esi, edi
18000A3A5: nop     word ptr [rax+rax+00000000h]
18000A3B0: mov     r8, [rbp+8]
18000A3B4: add     r8, 8
18000A3B8: add     r8, rsi
18000A3BB: mov     rdx, [rbx+8]
18000A3BF: cmp     rdx, [rbx+10h]
18000A3C3: jz      short loc_18000A3D1
18000A3C5: movzx   eax, byte ptr [r8]
18000A3C9: mov     [rdx], al
18000A3CB: inc     qword ptr [rbx+8]
18000A3CF: jmp     short loc_18000A3D9
18000A3D1: mov     rcx, rbx
18000A3D4: call    sub_180007D30
18000A3D9: inc     edi
18000A3DB: inc     rsi
18000A3DE: cmp     edi, [rbp+20h]
18000A3E1: jl      short loc_18000A3B0
18000A3E3: mov     rax, rbx
18000A3E6: mov     rbx, [rsp+38h+arg_0]
18000A3EB: mov     rbp, [rsp+38h+arg_10]
18000A3F0: mov     rsi, [rsp+38h+arg_18]
18000A3F5: add     rsp, 30h
18000A3F9: pop     rdi
18000A3FA: retn
18000A3FB: db 0CCh

### FUNC 18000A400 - 18000A502 (258 bytes) name=sub_18000A400
18000A400: mov     [rsp+arg_18], rsi
18000A405: push    r14
18000A407: sub     rsp, 20h
18000A40B: mov     rsi, rdx
18000A40E: mov     r14, rcx
18000A411: mov     rdx, 7FFFFFFFFFFFFFFFh
18000A41B: cmp     rsi, rdx
18000A41E: ja      loc_18000A4FC
18000A424: mov     [rsp+28h+arg_0], rbx
18000A429: mov     [rsp+28h+arg_8], rbp
18000A42E: mov     rbp, [rcx+8]
18000A432: sub     rbp, [rcx]
18000A435: mov     rcx, [rcx+10h]
18000A439: sub     rcx, [r14]
18000A43C: mov     rax, rcx
18000A43F: shr     rax, 1
18000A442: sub     rdx, rax
18000A445: cmp     rcx, rdx
18000A448: jbe     short loc_18000A44F
18000A44A: mov     rbx, rsi
18000A44D: jmp     short loc_18000A45A
18000A44F: lea     rbx, [rax+rcx]
18000A453: cmp     rbx, rsi
18000A456: cmovb   rbx, rsi
18000A45A: mov     [rsp+28h+arg_10], rdi
18000A45F: cmp     rbx, 1000h
18000A466: jb      short loc_18000A494
18000A468: lea     rcx, [rbx+27h]; Size
18000A46C: cmp     rcx, rbx
18000A46F: jbe     loc_18000A4F6
18000A475: call    ??2@YAPEAX_K@Z; operator new(unsigned __int64)
18000A47A: test    rax, rax
18000A47D: jz      short loc_18000A48D
18000A47F: lea     rdi, [rax+27h]
18000A483: and     rdi, 0FFFFFFFFFFFFFFE0h
18000A487: mov     [rdi-8], rax
18000A48B: jmp     short loc_18000A4A8
18000A48D: call    cs:_invalid_parameter_noinfo_noreturn
18000A493: int     3; Trap to Debugger
18000A494: test    rbx, rbx
18000A497: jz      short loc_18000A4A6
18000A499: mov     rcx, rbx; Size
18000A49C: call    ??2@YAPEAX_K@Z; operator new(unsigned __int64)
18000A4A1: mov     rdi, rax
18000A4A4: jmp     short loc_18000A4A8
18000A4A6: xor     edi, edi
18000A4A8: mov     r8, rsi
18000A4AB: lea     rcx, [rdi+rbp]; void *
18000A4AF: sub     r8, rbp; Size
18000A4B2: xor     edx, edx; Val
18000A4B4: call    memset
18000A4B9: mov     rdx, [r14]; Src
18000A4BC: mov     rcx, rdi; void *
18000A4BF: mov     r8, [r14+8]
18000A4C3: sub     r8, rdx; Size
18000A4C6: call    memmove
18000A4CB: mov     r9, rbx
18000A4CE: mov     r8, rsi
18000A4D1: mov     rdx, rdi
18000A4D4: mov     rcx, r14
18000A4D7: mov     rdi, [rsp+28h+arg_10]
18000A4DC: mov     rbx, [rsp+28h+arg_0]
18000A4E1: mov     rbp, [rsp+28h+arg_8]
18000A4E6: mov     rsi, [rsp+28h+arg_18]
18000A4EB: add     rsp, 20h
18000A4EF: pop     r14
18000A4F1: jmp     sub_180007280
18000A4F6: call    ?cancel_current_task@Concurrency@@YAXXZ; Concurrency::cancel_current_task(void)
18000A4FB: align 4
18000A4FC: call    sub_180002B80
18000A501: db 0CCh

### FUNC 18000A510 - 18000A95D (1101 bytes) name=sub_18000A510
18000A510: mov     [rsp-28h+arg_10], rbx
18000A515: mov     [rsp-28h+arg_0], rcx
18000A51A: push    rbp
18000A51B: push    rsi
18000A51C: push    rdi
18000A51D: push    r14
18000A51F: push    r15
18000A521: mov     rbp, rsp
18000A524: sub     rsp, 20h
18000A528: mov     r14, rcx
18000A52B: lea     rax, off_180010110
18000A532: mov     [rcx], rax
18000A535: lea     rsi, [rcx+8]
18000A539: lea     rax, off_18000FCE8
18000A540: mov     [rsi], rax
18000A543: xorps   xmm0, xmm0
18000A546: movups  xmmword ptr [rsi+8], xmm0
18000A54A: mov     byte ptr [rsi+18h], 0
18000A54E: xor     r15d, r15d
18000A551: mov     [rsi+20h], r15
18000A555: mov     [rsi+28h], r15
18000A559: lea     rbx, [rcx+38h]
18000A55D: mov     [rbx], r15
18000A560: mov     [rbx+8], r15
18000A564: mov     [rbx+10h], r15
18000A568: mov     [rbx+18h], r15
18000A56C: mov     [rbx+20h], r15
18000A570: lea     ecx, [r15+10h]; Size
18000A574: call    ??2@YAPEAX_K@Z; operator new(unsigned __int64)
18000A579: mov     [rax+8], r15
18000A57D: mov     [rbx], rax
18000A580: mov     [rax], rbx
18000A583: mov     [r14+60h], r15
18000A587: mov     [r14+68h], r15
18000A58B: mov     [r14+70h], r15
18000A58F: mov     ecx, 0D8h; Size
18000A594: call    ??2@YAPEAX_K@Z; operator new(unsigned __int64)
18000A599: mov     rdi, rax
18000A59C: mov     [rbp+arg_8], rax
18000A5A0: xor     edx, edx; Val
18000A5A2: mov     r8d, 0D8h; Size
18000A5A8: mov     rcx, rax; void *
18000A5AB: call    memset
18000A5B0: mov     rcx, rdi
18000A5B3: call    sub_18000B410
18000A5B8: lea     rax, off_18000FD90
18000A5BF: mov     [rdi], rax
18000A5C2: mov     [rdi+30h], r15b
18000A5C6: mov     [rbp+arg_8], rdi
18000A5CA: mov     rdx, [r14+68h]
18000A5CE: cmp     rdx, [r14+70h]
18000A5D2: jz      short loc_18000A5DE
18000A5D4: mov     [rdx], rdi
18000A5D7: add     qword ptr [r14+68h], 8
18000A5DC: jmp     short loc_18000A5EB
18000A5DE: lea     r8, [rbp+arg_8]
18000A5E2: lea     rcx, [r14+60h]
18000A5E6: call    sub_18000B280
18000A5EB: mov     ecx, 0D8h; Size
18000A5F0: call    ??2@YAPEAX_K@Z; operator new(unsigned __int64)
18000A5F5: mov     rdi, rax
18000A5F8: mov     [rbp+arg_8], rax
18000A5FC: xor     edx, edx; Val
18000A5FE: mov     r8d, 0D8h; Size
18000A604: mov     rcx, rax; void *
18000A607: call    memset
18000A60C: mov     rcx, rdi
18000A60F: call    sub_18000B410
18000A614: lea     rax, off_18000FDB0
18000A61B: mov     [rdi], rax
18000A61E: mov     byte ptr [rdi+30h], 0
18000A622: mov     [rbp+arg_8], rdi
18000A626: mov     rdx, [r14+68h]
18000A62A: cmp     rdx, [r14+70h]
18000A62E: jz      short loc_18000A63A
18000A630: mov     [rdx], rdi
18000A633: add     qword ptr [r14+68h], 8
18000A638: jmp     short loc_18000A647
18000A63A: lea     r8, [rbp+arg_8]
18000A63E: lea     rcx, [r14+60h]
18000A642: call    sub_18000B280
18000A647: mov     ecx, 0D8h; Size
18000A64C: call    ??2@YAPEAX_K@Z; operator new(unsigned __int64)
18000A651: mov     rdi, rax
18000A654: mov     [rbp+arg_8], rax
18000A658: xor     edx, edx; Val
18000A65A: mov     r8d, 0D8h; Size
18000A660: mov     rcx, rax; void *
18000A663: call    memset
18000A668: mov     rcx, rdi
18000A66B: call    sub_18000B410
18000A670: lea     rax, off_18000FDD0
18000A677: mov     [rdi], rax
18000A67A: mov     byte ptr [rdi+30h], 0
18000A67E: mov     [rbp+arg_8], rdi
18000A682: mov     rdx, [r14+68h]
18000A686: cmp     rdx, [r14+70h]
18000A68A: jz      short loc_18000A696
18000A68C: mov     [rdx], rdi
18000A68F: add     qword ptr [r14+68h], 8
18000A694: jmp     short loc_18000A6A3
18000A696: lea     r8, [rbp+arg_8]
18000A69A: lea     rcx, [r14+60h]
18000A69E: call    sub_18000B280
18000A6A3: mov     ecx, 138h; Size
18000A6A8: call    ??2@YAPEAX_K@Z; operator new(unsigned __int64)
18000A6AD: mov     rdi, rax
18000A6B0: mov     [rbp+arg_8], rax
18000A6B4: xor     edx, edx; Val
18000A6B6: mov     r8d, 138h; Size
18000A6BC: mov     rcx, rax; void *
18000A6BF: call    memset
18000A6C4: mov     rcx, rdi
18000A6C7: call    sub_18000B410
18000A6CC: lea     rax, off_180010028
18000A6D3: mov     [rdi], rax
18000A6D6: lea     rax, off_180010048
18000A6DD: mov     [rdi+0D8h], rax
18000A6E4: mov     [rdi+108h], r15
18000A6EB: mov     qword ptr [rdi+110h], 0Fh
18000A6F6: mov     byte ptr [rdi+0F8h], 0
18000A6FD: mov     [rdi+118h], r15
18000A704: mov     [rdi+120h], r15
18000A70B: mov     [rdi+128h], r15
18000A712: mov     [rdi+0E0h], r15
18000A719: mov     [rdi+0E8h], r15
18000A720: mov     [rdi+0F0h], r15
18000A727: mov     byte ptr [rdi+30h], 0
18000A72B: mov     byte ptr [rdi+130h], 0
18000A732: mov     [rbp+arg_8], rdi
18000A736: mov     rdx, [r14+68h]
18000A73A: cmp     rdx, [r14+70h]
18000A73E: jz      short loc_18000A74A
18000A740: mov     [rdx], rdi
18000A743: add     qword ptr [r14+68h], 8
18000A748: jmp     short loc_18000A757
18000A74A: lea     r8, [rbp+arg_8]
18000A74E: lea     rcx, [r14+60h]
18000A752: call    sub_18000B280
18000A757: mov     ecx, 0F8h; Size
18000A75C: call    ??2@YAPEAX_K@Z; operator new(unsigned __int64)
18000A761: mov     rdi, rax
18000A764: mov     [rbp+arg_8], rax
18000A768: xor     edx, edx; Val
18000A76A: mov     r8d, 0F8h; Size
18000A770: mov     rcx, rax; void *
18000A773: call    memset
18000A778: mov     rcx, rdi
18000A77B: call    sub_18000B410
18000A780: lea     rax, off_180010058
18000A787: mov     [rdi], rax
18000A78A: mov     [rdi+0E0h], r15
18000A791: mov     [rdi+0E8h], r15
18000A798: mov     [rdi+0F0h], r15
18000A79F: mov     byte ptr [rdi+30h], 0
18000A7A3: mov     [rdi+0D8h], r15d
18000A7AA: mov     [rbp+arg_8], rdi
18000A7AE: mov     rdx, [r14+68h]
18000A7B2: cmp     rdx, [r14+70h]
18000A7B6: jz      short loc_18000A7C2
18000A7B8: mov     [rdx], rdi
18000A7BB: add     qword ptr [r14+68h], 8
18000A7C0: jmp     short loc_18000A7CF
18000A7C2: lea     r8, [rbp+arg_8]
18000A7C6: lea     rcx, [r14+60h]
18000A7CA: call    sub_18000B280
18000A7CF: mov     ecx, 128h; Size
18000A7D4: call    ??2@YAPEAX_K@Z; operator new(unsigned __int64)
18000A7D9: mov     rdi, rax
18000A7DC: mov     [rbp+arg_8], rax
18000A7E0: xor     edx, edx; Val
18000A7E2: mov     r8d, 128h; Size
18000A7E8: mov     rcx, rax; void *
18000A7EB: call    memset
18000A7F0: mov     rcx, rdi
18000A7F3: call    sub_18000B410
18000A7F8: lea     rax, off_1800100D8
18000A7FF: mov     [rdi], rax
18000A802: mov     [rdi+0F0h], r15
18000A809: mov     qword ptr [rdi+0F8h], 0Fh
18000A814: mov     byte ptr [rdi+0E0h], 0
18000A81B: mov     [rdi+100h], r15
18000A822: mov     [rdi+108h], r15
18000A829: mov     [rdi+110h], r15
18000A830: xorps   xmm0, xmm0
18000A833: movups  xmmword ptr [rdi+118h], xmm0
18000A83A: mov     [rdi+0D8h], r15
18000A841: mov     [rbp+arg_8], rdi
18000A845: mov     rdx, [r14+68h]
18000A849: cmp     rdx, [r14+70h]
18000A84D: jz      short loc_18000A859
18000A84F: mov     [rdx], rdi
18000A852: add     qword ptr [r14+68h], 8
18000A857: jmp     short loc_18000A866
18000A859: lea     r8, [rbp+arg_8]
18000A85D: lea     rcx, [r14+60h]
18000A861: call    sub_18000B280
18000A866: mov     ecx, 0D8h; Size
18000A86B: call    ??2@YAPEAX_K@Z; operator new(unsigned __int64)
18000A870: mov     rdi, rax
18000A873: mov     [rbp+arg_8], rax
18000A877: xor     edx, edx; Val
18000A879: mov     r8d, 0D8h; Size
18000A87F: mov     rcx, rax; void *
18000A882: call    memset
18000A887: mov     rcx, rdi
18000A88A: call    sub_18000B410
18000A88F: lea     rax, off_18000FD50
18000A896: mov     [rdi], rax
18000A899: mov     byte ptr [rdi+30h], 0
18000A89D: mov     [rbp+arg_8], rdi
18000A8A1: mov     rdx, [r14+68h]
18000A8A5: cmp     rdx, [r14+70h]
18000A8A9: jz      short loc_18000A8B5
18000A8AB: mov     [rdx], rdi
18000A8AE: add     qword ptr [r14+68h], 8
18000A8B3: jmp     short loc_18000A8C2
18000A8B5: lea     r8, [rbp+arg_8]
18000A8B9: lea     rcx, [r14+60h]
18000A8BD: call    sub_18000B280
18000A8C2: mov     ecx, 0E0h; Size
18000A8C7: call    ??2@YAPEAX_K@Z; operator new(unsigned __int64)
18000A8CC: mov     rdi, rax
18000A8CF: mov     [rbp+arg_8], rax
18000A8D3: xor     edx, edx; Val
18000A8D5: mov     r8d, 0E0h; Size
18000A8DB: mov     rcx, rax; void *
18000A8DE: call    memset
18000A8E3: mov     rcx, rdi
18000A8E6: call    sub_18000B410
18000A8EB: lea     rax, off_18000FD70
18000A8F2: mov     [rdi], rax
18000A8F5: mov     byte ptr [rdi+30h], 0
18000A8F9: mov     [rdi+0D8h], r15
18000A900: mov     [rbp+arg_8], rdi
18000A904: mov     rdx, [r14+68h]
18000A908: cmp     rdx, [r14+70h]
18000A90C: jz      short loc_18000A918
18000A90E: mov     [rdx], rdi
18000A911: add     qword ptr [r14+68h], 8
18000A916: jmp     short loc_18000A925
18000A918: lea     r8, [rbp+arg_8]
18000A91C: lea     rcx, [r14+60h]
18000A920: call    sub_18000B280
18000A925: mov     rdx, [r14+68h]
18000A929: mov     rcx, [r14+60h]
18000A92D: cmp     rcx, rdx
18000A930: jz      short loc_18000A945
18000A932: mov     rax, [rcx]
18000A935: mov     [rax+0D0h], rsi
18000A93C: add     rcx, 8
18000A940: cmp     rcx, rdx
18000A943: jnz     short loc_18000A932
18000A945: mov     [r14+30h], r14
18000A949: mov     rax, r14
18000A94C: mov     rbx, [rsp+20h+arg_10]
18000A951: add     rsp, 20h
18000A955: pop     r15
18000A957: pop     r14
18000A959: pop     rdi
18000A95A: pop     rsi
18000A95B: pop     rbp
18000A95C: retn

### FUNC 18000A960 - 18000ABC7 (615 bytes) name=sub_18000A960
18000A960: mov     [rsp-8+arg_8], rbx
18000A965: mov     [rsp-8+arg_10], rsi
18000A96A: push    rbp
18000A96B: push    rdi
18000A96C: push    r13
18000A96E: push    r14
18000A970: push    r15
18000A972: lea     rbp, [rsp-10h]
18000A977: sub     rsp, 110h
18000A97E: mov     rax, cs:__security_cookie
18000A985: xor     rax, rsp
18000A988: mov     [rbp+30h+var_30], rax
18000A98C: mov     r13, rcx
18000A98F: xorps   xmm0, xmm0
18000A992: xor     eax, eax
18000A994: movups  xmmword ptr [rbp+30h+Block], xmm0
18000A998: mov     [rbp+30h+var_98], rax
18000A99C: lea     rcx, [rbp+30h+Block]
18000A9A0: call    sub_180002FD0
18000A9A5: nop
18000A9A6: mov     rdi, [rbp+30h+Block]
18000A9AA: mov     r15, [rbp+30h+Block+8]
18000A9AE: cmp     rdi, r15
18000A9B1: jz      loc_18000AACA
18000A9B7: nop     word ptr [rax+rax+00000000h]
18000A9C0: mov     rdx, rdi
18000A9C3: lea     rcx, [rbp+30h+var_90]
18000A9C7: call    sub_180002E60
18000A9CC: nop
18000A9CD: lea     rdx, [rdi+20h]
18000A9D1: lea     rcx, [rbp+30h+var_70]
18000A9D5: call    sub_180002E60
18000A9DA: nop
18000A9DB: lea     rdx, [rdi+40h]
18000A9DF: lea     rcx, [rbp+30h+var_50]
18000A9E3: call    sub_180002E60
18000A9E8: nop
18000A9E9: lea     rax, [rsp+130h+var_108]
18000A9EE: mov     [rsp+130h+var_110], rax
18000A9F3: lea     rdx, [rbp+30h+var_90]
18000A9F7: lea     rcx, [rsp+130h+var_108]
18000A9FC: call    sub_180002E60
18000AA01: nop
18000AA02: lea     rdx, [rbp+30h+var_70]
18000AA06: lea     rcx, [rsp+130h+var_E8]
18000AA0B: call    sub_180002E60
18000AA10: nop
18000AA11: lea     rdx, [rbp+30h+var_50]
18000AA15: lea     rcx, [rsp+130h+Buf]
18000AA1A: call    sub_180002E60
18000AA1F: nop
18000AA20: lea     r14, [rsp+130h+Buf]
18000AA25: cmp     [rbp+30h+var_B0], 10h
18000AA2A: cmovnb  r14, [rsp+130h+Buf]
18000AA30: mov     rax, [rsp+130h+var_B8]
18000AA35: cmp     rax, 21h ; '!'
18000AA39: jb      short loc_18000AA9C
18000AA3B: lea     rsi, [rax+r14]
18000AA3F: lea     r8, [rsi-20h]
18000AA43: sub     r8, r14; MaxCount
18000AA46: mov     edx, 46h ; 'F'; Val
18000AA4B: mov     rcx, r14; Buf
18000AA4E: call    memchr
18000AA53: mov     rbx, rax
18000AA56: test    rax, rax
18000AA59: jz      short loc_18000AA9C
18000AA5B: nop     dword ptr [rax+rax+00h]
18000AA60: mov     r8d, 21h ; '!'; Size
18000AA66: lea     rdx, aFtdibusComport; "FTDIBUS\\COMPORT&VID_0403&PID_6001"
18000AA6D: mov     rcx, rbx; Buf1
18000AA70: call    memcmp
18000AA75: test    eax, eax
18000AA77: jz      loc_18000AB47
18000AA7D: inc     rbx
18000AA80: lea     r8, [rsi-20h]
18000AA84: sub     r8, rbx; MaxCount
18000AA87: mov     edx, 46h ; 'F'; Val
18000AA8C: mov     rcx, rbx; Buf
18000AA8F: call    memchr
18000AA94: mov     rbx, rax
18000AA97: test    rax, rax
18000AA9A: jnz     short loc_18000AA60
18000AA9C: xor     bl, bl
18000AA9E: lea     rcx, [rsp+130h+var_108]
18000AAA3: call    sub_180002CA0
18000AAA8: test    bl, bl
18000AAAA: jnz     loc_18000AB5B
18000AAB0: lea     rcx, [rbp+30h+var_90]
18000AAB4: call    sub_180002CA0
18000AAB9: add     rdi, 60h ; '`'
18000AABD: cmp     rdi, r15
18000AAC0: jnz     loc_18000A9C0
18000AAC6: mov     rdi, [rbp+30h+Block]
18000AACA: xor     sil, sil
18000AACD: test    rdi, rdi
18000AAD0: jz      loc_18000AB9B
18000AAD6: mov     rbx, [rbp+30h+Block+8]
18000AADA: cmp     rdi, rbx
18000AADD: jz      short loc_18000AAF5
18000AADF: nop
18000AAE0: mov     rcx, rdi
18000AAE3: call    sub_180002CA0
18000AAE8: add     rdi, 60h ; '`'
18000AAEC: cmp     rdi, rbx
18000AAEF: jnz     short loc_18000AAE0
18000AAF1: mov     rdi, [rbp+30h+Block]
18000AAF5: mov     rcx, [rbp+30h+var_98]
18000AAF9: sub     rcx, rdi
18000AAFC: mov     rax, 2AAAAAAAAAAAAAABh
18000AB06: imul    rcx
18000AB09: sar     rdx, 4
18000AB0D: mov     rax, rdx
18000AB10: shr     rax, 3Fh
18000AB14: add     rdx, rax
18000AB17: lea     rdx, [rdx+rdx*2]
18000AB1B: shl     rdx, 5
18000AB1F: mov     rax, rdi
18000AB22: cmp     rdx, 1000h
18000AB29: jb      short loc_18000AB93
18000AB2B: add     rdx, 27h ; '''
18000AB2F: mov     rdi, [rdi-8]
18000AB33: sub     rax, rdi
18000AB36: add     rax, 0FFFFFFFFFFFFFFF8h
18000AB3A: cmp     rax, 1Fh
18000AB3E: jbe     short loc_18000AB93
18000AB40: call    cs:_invalid_parameter_noinfo_noreturn
18000AB46: nop
18000AB47: sub     rbx, r14
18000AB4A: cmp     rbx, 0FFFFFFFFFFFFFFFFh
18000AB4E: jz      loc_18000AA9C
18000AB54: mov     bl, 1
18000AB56: jmp     loc_18000AA9E
18000AB5B: lea     rcx, [r13+8]
18000AB5F: mov     rax, [rcx]
18000AB62: mov     r8d, 1C200h
18000AB68: lea     rdx, [rbp+30h+var_90]
18000AB6C: call    qword ptr [rax+18h]
18000AB6F: movzx   esi, al
18000AB72: mov     edx, esi
18000AB74: lea     rcx, aTcmOpenD; "TCM Open:%d\n"
18000AB7B: call    sub_180007960
18000AB80: nop
18000AB81: lea     rcx, [rbp+30h+var_90]
18000AB85: call    sub_180002CA0
18000AB8A: mov     rdi, [rbp+30h+Block]
18000AB8E: jmp     loc_18000AACD
18000AB93: mov     rcx, rdi; Block
18000AB96: call    j_j_free
18000AB9B: movzx   eax, sil
18000AB9F: mov     rcx, [rbp+30h+var_30]
18000ABA3: xor     rcx, rsp; StackCookie
18000ABA6: call    __security_check_cookie
18000ABAB: lea     r11, [rsp+130h+var_20]
18000ABB3: mov     rbx, [r11+38h]
18000ABB7: mov     rsi, [r11+40h]
18000ABBB: mov     rsp, r11
18000ABBE: pop     r15
18000ABC0: pop     r14
18000ABC2: pop     r13
18000ABC4: pop     rdi
18000ABC5: pop     rbp
18000ABC6: retn

### FUNC 18000ABD0 - 18000AC7D (173 bytes) name=sub_18000ABD0
18000ABD0: mov     [rsp+arg_0], rbx
18000ABD5: mov     [rsp+arg_10], rbp
18000ABDA: mov     [rsp+arg_18], rsi
18000ABDF: push    rdi
18000ABE0: sub     rsp, 30h
18000ABE4: mov     rbx, rdx
18000ABE7: mov     rbp, rcx
18000ABEA: mov     [rsp+38h+var_10], rdx
18000ABEF: xor     edi, edi
18000ABF1: mov     [rsp+38h+var_14], edi
18000ABF5: xorps   xmm0, xmm0
18000ABF8: movups  xmmword ptr [rdx], xmm0
18000ABFB: mov     [rdx], rdi
18000ABFE: mov     [rdx+8], rdi
18000AC02: mov     [rdx+10h], rdi
18000AC06: mov     [rsp+38h+var_14], 1
18000AC0E: lea     esi, [rdi+4]
18000AC11: mov     rdx, [rbp+50h]
18000AC15: add     rdx, rdi
18000AC18: mov     rcx, rdx
18000AC1B: shr     rcx, 4
18000AC1F: mov     rax, [rbp+48h]
18000AC23: dec     rax
18000AC26: and     rcx, rax
18000AC29: mov     rax, [rbp+40h]
18000AC2D: and     edx, 0Fh
18000AC30: mov     rax, [rax+rcx*8]
18000AC34: movzx   ecx, byte ptr [rdx+rax]
18000AC38: mov     [rsp+38h+var_18], cl
18000AC3C: mov     rdx, [rbx+8]
18000AC40: cmp     rdx, [rbx+10h]
18000AC44: jz      short loc_18000AC4E
18000AC46: mov     [rdx], cl
18000AC48: inc     qword ptr [rbx+8]
18000AC4C: jmp     short loc_18000AC5B
18000AC4E: lea     r8, [rsp+38h+var_18]
18000AC53: mov     rcx, rbx
18000AC56: call    sub_180007D30
18000AC5B: inc     rdi
18000AC5E: sub     rsi, 1
18000AC62: jnz     short loc_18000AC11
18000AC64: mov     rax, rbx
18000AC67: mov     rbx, [rsp+38h+arg_0]
18000AC6C: mov     rbp, [rsp+38h+arg_10]
18000AC71: mov     rsi, [rsp+38h+arg_18]
18000AC76: add     rsp, 30h
18000AC7A: pop     rdi
18000AC7B: retn
18000AC7C: db 0CCh

### FUNC 18000AC80 - 18000B212 (1426 bytes) name=sub_18000AC80
18000AC80: mov     [rsp-28h+arg_8], rbx
18000AC85: mov     [rsp-28h+arg_10], rsi
18000AC8A: mov     [rsp-28h+arg_18], rdi
18000AC8F: push    rbp
18000AC90: push    r12
18000AC92: push    r13
18000AC94: push    r14
18000AC96: push    r15
18000AC98: mov     rbp, rsp
18000AC9B: sub     rsp, 70h
18000AC9F: mov     rax, cs:__security_cookie
18000ACA6: xor     rax, rsp
18000ACA9: mov     [rbp+var_8], rax
18000ACAD: mov     rax, rdx
18000ACB0: mov     [rbp+var_48], rdx
18000ACB4: mov     rbx, rcx
18000ACB7: mov     [rbp+var_40], rcx
18000ACBB: movsxd  r13, r8d
18000ACBE: xor     r15d, r15d
18000ACC1: test    r8d, r8d
18000ACC4: jle     loc_18000AD78
18000ACCA: mov     r14d, r15d
18000ACCD: mov     rcx, [rcx+58h]
18000ACD1: movzx   r12d, byte ptr [r14+rax]
18000ACD6: mov     rdx, [rbx+50h]
18000ACDA: mov     r8, rcx
18000ACDD: lea     eax, [rcx+rdx]
18000ACE0: test    al, 0Fh
18000ACE2: jnz     short loc_18000AD03
18000ACE4: lea     rax, [rcx+10h]
18000ACE8: shr     rax, 4
18000ACEC: cmp     [rbx+48h], rax
18000ACF0: ja      short loc_18000AD03
18000ACF2: lea     rcx, [rbx+38h]
18000ACF6: call    sub_1800028D0
18000ACFB: mov     rdx, [rbx+50h]
18000ACFF: mov     r8, [rbx+58h]
18000AD03: mov     rcx, [rbx+48h]
18000AD07: mov     rax, rcx
18000AD0A: shl     rax, 4
18000AD0E: dec     rax
18000AD11: and     rax, rdx
18000AD14: mov     [rbx+50h], rax
18000AD18: lea     rsi, [rax+r8]
18000AD1C: dec     rcx
18000AD1F: mov     rax, rsi
18000AD22: shr     rax, 4
18000AD26: and     rcx, rax
18000AD29: mov     rax, [rbx+40h]
18000AD2D: lea     r15, ds:0[rcx*8]
18000AD35: cmp     qword ptr [r15+rax], 0
18000AD3A: jnz     short loc_18000AD52
18000AD3C: mov     ecx, 10h; Size
18000AD41: call    ??2@YAPEAX_K@Z; operator new(unsigned __int64)
18000AD46: mov     rcx, [rbx+40h]
18000AD4A: mov     [r15+rcx], rax
18000AD4E: mov     rax, [rbx+40h]
18000AD52: and     esi, 0Fh
18000AD55: mov     rax, [r15+rax]
18000AD59: mov     [rsi+rax], r12b
18000AD5D: inc     qword ptr [rbx+58h]
18000AD61: mov     rcx, [rbx+58h]
18000AD65: inc     r14
18000AD68: cmp     r14, r13
18000AD6B: mov     rax, [rbp+var_48]
18000AD6F: jl      loc_18000ACD1
18000AD75: xor     r15d, r15d
18000AD78: mov     esi, [rbx+58h]
18000AD7B: cmp     esi, 9
18000AD7E: jl      loc_18000B1E8
18000AD84: nop     dword ptr [rax+00h]
18000AD88: nop     dword ptr [rax+rax+00000000h]
18000AD90: xorps   xmm0, xmm0
18000AD93: xor     eax, eax
18000AD95: movups  xmmword ptr [rbp+Block], xmm0
18000AD99: mov     [rbp+var_10], rax
18000AD9D: lea     rdx, [rbp+Block]
18000ADA1: mov     rcx, rbx
18000ADA4: call    sub_18000ABD0
18000ADA9: nop
18000ADAA: mov     r8, [rbp+Block]
18000ADAE: movzx   eax, cs:byte_180010101
18000ADB5: cmp     [r8], al
18000ADB8: jnz     loc_18000AEE2
18000ADBE: mov     rdx, [rbp+Block+8]
18000ADC2: sub     rdx, r8
18000ADC5: lea     r14, [r8+rdx]
18000ADC9: lea     ecx, [rdx-1]
18000ADCC: xor     dil, dil
18000ADCF: movsxd  rax, ecx
18000ADD2: xor     r10b, r10b
18000ADD5: xor     r11b, r11b
18000ADD8: mov     r9, r15
18000ADDB: cmp     rax, rdx
18000ADDE: cmovbe  edx, ecx
18000ADE1: movsxd  rcx, edx
18000ADE4: test    edx, edx
18000ADE6: jle     short loc_18000AE22
18000ADE8: cmp     rcx, 2
18000ADEC: jl      short loc_18000AE17
18000ADEE: lea     rax, [rcx-1]
18000ADF2: nop     dword ptr [rax+00h]
18000ADF6: nop     word ptr [rax+rax+00000000h]
18000AE00: add     r10b, [r8+r9]
18000AE04: add     r11b, [r8+r9+1]
18000AE09: add     r9, 2
18000AE0D: cmp     r9, rax
18000AE10: jl      short loc_18000AE00
18000AE12: cmp     r9, rcx
18000AE15: jge     short loc_18000AE1C
18000AE17: movzx   edi, byte ptr [r8+r9]
18000AE1C: add     r10b, r11b
18000AE1F: add     dil, r10b
18000AE22: cmp     [r14-1], dil
18000AE26: jnz     loc_18000AEE2
18000AE2C: movzx   ecx, byte ptr [r8+1]
18000AE31: shl     ecx, 8
18000AE34: movzx   eax, byte ptr [r8+2]
18000AE39: or      ecx, eax
18000AE3B: lea     r14d, [rcx+4]
18000AE3F: cmp     esi, r14d
18000AE42: jb      loc_18000B1AF
18000AE48: mov     edx, 4
18000AE4D: xor     r10b, r10b
18000AE50: dec     ecx
18000AE52: test    ecx, ecx
18000AE54: jle     short loc_18000AE93
18000AE56: mov     r11, [rbx+50h]
18000AE5A: mov     rdi, [rbx+48h]
18000AE5E: dec     rdi
18000AE61: mov     rsi, [rbx+40h]
18000AE65: mov     r9d, ecx
18000AE68: nop     dword ptr [rax+rax+00000000h]
18000AE70: movsxd  rcx, edx
18000AE73: add     rcx, r11
18000AE76: mov     rax, rcx
18000AE79: shr     rax, 4
18000AE7D: and     rax, rdi
18000AE80: and     ecx, 0Fh
18000AE83: mov     rax, [rsi+rax*8]
18000AE87: add     r10b, [rcx+rax]
18000AE8B: inc     edx
18000AE8D: sub     r9, 1
18000AE91: jnz     short loc_18000AE70
18000AE93: mov     r9, [rbx+50h]
18000AE97: movsxd  rdx, edx
18000AE9A: add     rdx, r9
18000AE9D: mov     rcx, [rbx+48h]
18000AEA1: dec     rcx
18000AEA4: mov     rax, rdx
18000AEA7: shr     rax, 4
18000AEAB: and     rcx, rax
18000AEAE: and     edx, 0Fh
18000AEB1: mov     rax, [rbx+40h]
18000AEB5: mov     rcx, [rax+rcx*8]
18000AEB9: movzx   eax, byte ptr [rdx+rcx]
18000AEBD: cmp     r10b, al
18000AEC0: jz      short loc_18000AEF6
18000AEC2: cmp     cs:byte_180015FF0, 0
18000AEC9: jz      short loc_18000AEE2
18000AECB: mov     r8d, eax
18000AECE: movzx   edx, r10b
18000AED2: lea     rcx, aChecksumNotSam; "checksum not same:%.2x, %.2x"
18000AED9: call    sub_180007960
18000AEDE: mov     r8, [rbp+Block]
18000AEE2: sub     qword ptr [rbx+58h], 1
18000AEE7: jnz     loc_18000B15F
18000AEED: mov     [rbx+50h], r15
18000AEF1: jmp     loc_18000B163
18000AEF6: xorps   xmm1, xmm1
18000AEF9: movdqu  [rbp+var_38], xmm1
18000AEFE: mov     r8, r15
18000AF01: mov     [rbp+var_28], r15
18000AF05: test    r14d, r14d
18000AF08: jz      short loc_18000AF7F
18000AF0A: mov     edi, r14d
18000AF0D: mov     rdx, qword ptr [rbp+var_38+8]
18000AF11: mov     rcx, [rbx+48h]
18000AF15: dec     rcx
18000AF18: mov     rax, r9
18000AF1B: shr     rax, 4
18000AF1F: and     rcx, rax
18000AF22: and     r9d, 0Fh
18000AF26: mov     rax, [rbx+40h]
18000AF2A: mov     rcx, [rax+rcx*8]
18000AF2E: movzx   eax, byte ptr [r9+rcx]
18000AF33: mov     [rbp+var_50], al
18000AF36: cmp     rdx, r8
18000AF39: jz      short loc_18000AF4A
18000AF3B: mov     [rdx], al
18000AF3D: mov     rdx, qword ptr [rbp+var_38+8]
18000AF41: inc     rdx
18000AF44: mov     qword ptr [rbp+var_38+8], rdx
18000AF48: jmp     short loc_18000AF5B
18000AF4A: lea     r8, [rbp+var_50]
18000AF4E: lea     rcx, [rbp+var_38]
18000AF52: call    sub_180007D30
18000AF57: mov     rdx, qword ptr [rbp+var_38+8]
18000AF5B: sub     qword ptr [rbx+58h], 1
18000AF60: jnz     short loc_18000AF6B
18000AF62: mov     [rbx+50h], r15
18000AF66: mov     r9, r15
18000AF69: jmp     short loc_18000AF73
18000AF6B: inc     qword ptr [rbx+50h]
18000AF6F: mov     r9, [rbx+50h]
18000AF73: sub     rdi, 1
18000AF77: jz      short loc_18000AF7F
18000AF79: mov     r8, [rbp+var_28]
18000AF7D: jmp     short loc_18000AF11
18000AF7F: mov     rax, qword ptr [rbp+var_38]
18000AF83: movzx   r12d, byte ptr [rax+4]
18000AF88: movzx   r14d, byte ptr [rax+5]
18000AF8D: mov     [rbp+var_50], r14b
18000AF91: movzx   r13d, byte ptr [rax+6]
18000AF96: shl     r13d, 8
18000AF9A: movzx   eax, byte ptr [rax+7]
18000AF9E: or      r13d, eax
18000AFA1: cmp     cs:byte_180015FF0, 0
18000AFA8: jz      short loc_18000B00A
18000AFAA: lea     rcx, aRecv; "\nRecv:"
18000AFB1: call    sub_180007960
18000AFB6: mov     edi, r15d
18000AFB9: mov     rsi, r15
18000AFBC: mov     rax, qword ptr [rbp+var_38+8]
18000AFC0: mov     rcx, qword ptr [rbp+var_38]
18000AFC4: sub     rax, rcx
18000AFC7: test    eax, eax
18000AFC9: jle     short loc_18000AFF5
18000AFCB: nop     dword ptr [rax+rax+00h]
18000AFD0: movzx   edx, byte ptr [rcx+rsi]
18000AFD4: lea     rcx, a2x; "%.2X "
18000AFDB: call    sub_180007960
18000AFE0: inc     edi
18000AFE2: lea     rsi, [rsi+1]
18000AFE6: mov     rax, qword ptr [rbp+var_38+8]
18000AFEA: mov     rcx, qword ptr [rbp+var_38]
18000AFEE: sub     rax, rcx
18000AFF1: cmp     edi, eax
18000AFF3: jl      short loc_18000AFD0
18000AFF5: mov     r8d, r14d
18000AFF8: mov     edx, r12d
18000AFFB: mov     r9d, r13d
18000AFFE: lea     rcx, aMain2xSub2xFra; "Main:%.2X Sub:%.2X Frame:%d \n"
18000B005: call    sub_180007960
18000B00A: lea     ecx, [r13+1]
18000B00E: mov     eax, 1
18000B013: cmp     ecx, 8000h
18000B019: cmovb   eax, ecx
18000B01C: mov     cs:dword_180015038, eax
18000B022: xor     r15b, r15b
18000B025: mov     r14, [rbx+68h]
18000B029: mov     rdi, [rbx+60h]
18000B02D: cmp     rdi, r14
18000B030: jz      short loc_18000B079
18000B032: movzx   ebx, [rbp+var_50]
18000B036: nop     word ptr [rax+rax+00000000h]
18000B040: mov     rsi, [rdi]
18000B043: mov     rax, [rsi]
18000B046: movzx   r8d, bl
18000B04A: movzx   edx, r12b
18000B04E: mov     rcx, rsi
18000B051: call    qword ptr [rax]
18000B053: test    al, al
18000B055: jz      short loc_18000B067
18000B057: mov     r15b, 1
18000B05A: mov     rax, [rsi]
18000B05D: lea     rdx, [rbp+var_38]
18000B061: mov     rcx, rsi
18000B064: call    qword ptr [rax+8]
18000B067: add     rdi, 8
18000B06B: cmp     rdi, r14
18000B06E: jnz     short loc_18000B040
18000B070: mov     rbx, [rbp+var_40]
18000B074: test    r15b, r15b
18000B077: jnz     short loc_18000B0DD
18000B079: lea     rcx, aUnhandled; "Unhandled:"
18000B080: call    sub_180007960
18000B085: xor     edi, edi
18000B087: xor     esi, esi
18000B089: mov     rax, qword ptr [rbp+var_38+8]
18000B08D: mov     rcx, qword ptr [rbp+var_38]
18000B091: sub     rax, rcx
18000B094: test    eax, eax
18000B096: jle     short loc_18000B0C5
18000B098: nop     dword ptr [rax+rax+00000000h]
18000B0A0: movzx   edx, byte ptr [rcx+rsi]
18000B0A4: lea     rcx, a2x; "%.2X "
18000B0AB: call    sub_180007960
18000B0B0: inc     edi
18000B0B2: lea     rsi, [rsi+1]
18000B0B6: mov     rax, qword ptr [rbp+var_38+8]
18000B0BA: mov     rcx, qword ptr [rbp+var_38]
18000B0BE: sub     rax, rcx
18000B0C1: cmp     edi, eax
18000B0C3: jl      short loc_18000B0A0
18000B0C5: movzx   r8d, [rbp+var_50]
18000B0CA: mov     edx, r12d
18000B0CD: mov     r9d, r13d
18000B0D0: lea     rcx, aMain2xSub2xFra; "Main:%.2X Sub:%.2X Frame:%d \n"
18000B0D7: call    sub_180007960
18000B0DC: nop
18000B0DD: mov     rcx, qword ptr [rbp+var_38]
18000B0E1: test    rcx, rcx
18000B0E4: jz      short loc_18000B127
18000B0E6: mov     rdx, [rbp+var_28]
18000B0EA: sub     rdx, rcx
18000B0ED: mov     rax, rcx
18000B0F0: cmp     rdx, 1000h
18000B0F7: jb      short loc_18000B112
18000B0F9: add     rdx, 27h ; '''
18000B0FD: mov     rcx, [rcx-8]; Block
18000B101: sub     rax, rcx
18000B104: add     rax, 0FFFFFFFFFFFFFFF8h
18000B108: cmp     rax, 1Fh
18000B10C: ja      loc_18000B1A8
18000B112: call    j_j_free
18000B117: xorps   xmm0, xmm0
18000B11A: movdqu  [rbp+var_38], xmm0
18000B11F: mov     [rbp+var_28], 0
18000B127: mov     rcx, [rbp+Block]
18000B12B: test    rcx, rcx
18000B12E: jz      short loc_18000B198
18000B130: mov     rdx, [rbp+var_10]
18000B134: sub     rdx, rcx
18000B137: mov     rax, rcx
18000B13A: cmp     rdx, 1000h
18000B141: jb      short loc_18000B193
18000B143: add     rdx, 27h ; '''
18000B147: mov     rcx, [rcx-8]
18000B14B: sub     rax, rcx
18000B14E: add     rax, 0FFFFFFFFFFFFFFF8h
18000B152: cmp     rax, 1Fh
18000B156: jbe     short loc_18000B193
18000B158: call    cs:_invalid_parameter_noinfo_noreturn
18000B15E: nop
18000B15F: inc     qword ptr [rbx+50h]
18000B163: test    r8, r8
18000B166: jz      short loc_18000B198
18000B168: mov     rdx, [rbp+var_10]
18000B16C: sub     rdx, r8
18000B16F: cmp     rdx, 1000h
18000B176: mov     rax, r8
18000B179: jb      short loc_18000B190
18000B17B: mov     r8, [r8-8]
18000B17F: sub     rax, r8
18000B182: add     rdx, 27h ; '''
18000B186: add     rax, 0FFFFFFFFFFFFFFF8h
18000B18A: cmp     rax, 1Fh
18000B18E: ja      short loc_18000B158
18000B190: mov     rcx, r8; Block
18000B193: call    j_j_free
18000B198: mov     esi, [rbx+58h]
18000B19B: cmp     esi, 9
18000B19E: jl      short loc_18000B1E8
18000B1A0: xor     r15d, r15d
18000B1A3: jmp     loc_18000AD90
18000B1A8: call    cs:_invalid_parameter_noinfo_noreturn
18000B1AE: nop
18000B1AF: test    r8, r8
18000B1B2: jz      short loc_18000B1E8
18000B1B4: mov     rdx, [rbp+var_10]
18000B1B8: sub     rdx, r8
18000B1BB: mov     rax, r8
18000B1BE: cmp     rdx, 1000h
18000B1C5: jb      short loc_18000B1E0
18000B1C7: add     rdx, 27h ; '''
18000B1CB: mov     r8, [r8-8]
18000B1CF: sub     rax, r8
18000B1D2: add     rax, 0FFFFFFFFFFFFFFF8h
18000B1D6: cmp     rax, 1Fh
18000B1DA: ja      loc_18000B158
18000B1E0: mov     rcx, r8; Block
18000B1E3: call    j_j_free
18000B1E8: mov     rcx, [rbp+var_8]
18000B1EC: xor     rcx, rsp; StackCookie
18000B1EF: call    __security_check_cookie
18000B1F4: lea     r11, [rsp+70h+var_s0]
18000B1F9: mov     rbx, [r11+38h]
18000B1FD: mov     rsi, [r11+40h]
18000B201: mov     rdi, [r11+48h]
18000B205: mov     rsp, r11
18000B208: pop     r15
18000B20A: pop     r14
18000B20C: pop     r13
18000B20E: pop     r12
18000B210: pop     rbp
18000B211: retn

### FUNC 18000B220 - 18000B27C (92 bytes) name=sub_18000B220
18000B220: push    rbx
18000B222: sub     rsp, 20h
18000B226: mov     rbx, rcx
18000B229: mov     rcx, [rcx]
18000B22C: test    rcx, rcx
18000B22F: jz      short loc_18000B26F
18000B231: mov     rdx, [rbx+10h]
18000B235: sub     rdx, rcx
18000B238: and     rdx, 0FFFFFFFFFFFFFFF8h
18000B23C: cmp     rdx, 1000h
18000B243: jb      short loc_18000B25D
18000B245: mov     r8, [rcx-8]
18000B249: add     rdx, 27h ; '''
18000B24D: sub     rcx, r8
18000B250: lea     rax, [rcx-8]
18000B254: cmp     rax, 1Fh
18000B258: ja      short loc_18000B275
18000B25A: mov     rcx, r8; Block
18000B25D: call    j_j_free
18000B262: xor     eax, eax
18000B264: mov     [rbx], rax
18000B267: mov     [rbx+8], rax
18000B26B: mov     [rbx+10h], rax
18000B26F: add     rsp, 20h
18000B273: pop     rbx
18000B274: retn
18000B275: call    cs:_invalid_parameter_noinfo_noreturn
18000B27B: db 0CCh

### FUNC 18000B280 - 18000B410 (400 bytes) name=sub_18000B280
18000B280: push    rdi
18000B282: push    r12
18000B284: push    r14
18000B286: push    r15
18000B288: sub     rsp, 28h
18000B28C: mov     rax, [rcx+8]
18000B290: mov     r15, rdx
18000B293: mov     rdx, [rcx]
18000B296: mov     r14, r15
18000B299: sub     r14, rdx
18000B29C: sub     rax, rdx
18000B29F: mov     r12, r8
18000B2A2: sar     r14, 3
18000B2A6: sar     rax, 3
18000B2AA: mov     r8, 1FFFFFFFFFFFFFFFh
18000B2B4: mov     rdi, rcx
18000B2B7: cmp     rax, r8
18000B2BA: jz      loc_18000B404
18000B2C0: mov     rcx, [rcx+10h]
18000B2C4: sub     rcx, rdx
18000B2C7: mov     [rsp+48h+arg_18], rbp
18000B2CC: sar     rcx, 3
18000B2D0: lea     rbp, [rax+1]
18000B2D4: mov     rdx, rcx
18000B2D7: mov     rax, r8
18000B2DA: shr     rdx, 1
18000B2DD: sub     rax, rdx
18000B2E0: cmp     rcx, rax
18000B2E3: jbe     short loc_18000B2EA
18000B2E5: mov     rax, rbp
18000B2E8: jmp     short loc_18000B2F5
18000B2EA: lea     rax, [rdx+rcx]
18000B2EE: cmp     rax, rbp
18000B2F1: cmovb   rax, rbp
18000B2F5: mov     [rsp+48h+arg_10], rbx
18000B2FA: mov     [rsp+48h+var_28], rsi
18000B2FF: cmp     rax, r8
18000B302: ja      loc_18000B40A
18000B308: lea     rsi, ds:0[rax*8]
18000B310: cmp     rsi, 1000h
18000B317: jb      short loc_18000B342
18000B319: lea     rcx, [rsi+27h]; Size
18000B31D: cmp     rcx, rsi
18000B320: jbe     loc_18000B40A
18000B326: call    ??2@YAPEAX_K@Z; operator new(unsigned __int64)
18000B32B: test    rax, rax
18000B32E: jz      loc_18000B3FD
18000B334: lea     rbx, [rax+27h]
18000B338: and     rbx, 0FFFFFFFFFFFFFFE0h
18000B33C: mov     [rbx-8], rax
18000B340: jmp     short loc_18000B356
18000B342: test    rsi, rsi
18000B345: jz      short loc_18000B354
18000B347: mov     rcx, rsi; Size
18000B34A: call    ??2@YAPEAX_K@Z; operator new(unsigned __int64)
18000B34F: mov     rbx, rax
18000B352: jmp     short loc_18000B356
18000B354: xor     ebx, ebx
18000B356: mov     rax, [r12]
18000B35A: lea     r14, [rbx+r14*8]
18000B35E: mov     [r14], rax
18000B361: mov     rcx, rbx; void *
18000B364: mov     r8, [rdi+8]
18000B368: mov     rdx, [rdi]; Src
18000B36B: cmp     r15, r8
18000B36E: jnz     short loc_18000B375
18000B370: sub     r8, rdx
18000B373: jmp     short loc_18000B38E
18000B375: mov     r8, r15
18000B378: sub     r8, rdx; Size
18000B37B: call    memmove
18000B380: mov     r8, [rdi+8]
18000B384: lea     rcx, [r14+8]; void *
18000B388: sub     r8, r15; Size
18000B38B: mov     rdx, r15; Src
18000B38E: call    memmove
18000B393: mov     rcx, [rdi]
18000B396: test    rcx, rcx
18000B399: jz      short loc_18000B3CC
18000B39B: mov     rdx, [rdi+10h]
18000B39F: sub     rdx, rcx
18000B3A2: and     rdx, 0FFFFFFFFFFFFFFF8h
18000B3A6: cmp     rdx, 1000h
18000B3AD: jb      short loc_18000B3C7
18000B3AF: mov     r8, [rcx-8]
18000B3B3: add     rdx, 27h ; '''
18000B3B7: sub     rcx, r8
18000B3BA: lea     rax, [rcx-8]
18000B3BE: cmp     rax, 1Fh
18000B3C2: ja      short loc_18000B3FD
18000B3C4: mov     rcx, r8; Block
18000B3C7: call    j_j_free
18000B3CC: lea     rcx, [rbx+rbp*8]
18000B3D0: mov     [rdi], rbx
18000B3D3: mov     rbp, [rsp+48h+arg_18]
18000B3D8: mov     rax, r14
18000B3DB: mov     [rdi+8], rcx
18000B3DF: lea     rcx, [rsi+rbx]
18000B3E3: mov     rbx, [rsp+48h+arg_10]
18000B3E8: mov     rsi, [rsp+48h+var_28]
18000B3ED: mov     [rdi+10h], rcx
18000B3F1: add     rsp, 28h
18000B3F5: pop     r15
18000B3F7: pop     r14
18000B3F9: pop     r12
18000B3FB: pop     rdi
18000B3FC: retn
18000B3FD: call    cs:_invalid_parameter_noinfo_noreturn
18000B403: int     3; Trap to Debugger
18000B404: call    sub_180002B80
18000B409: align 2
18000B40A: call    ?cancel_current_task@Concurrency@@YAXXZ; Concurrency::cancel_current_task(void)
18000B40F: align 10h

### FUNC 18000B410 - 18000B48B (123 bytes) name=sub_18000B410
18000B410: mov     [rsp+arg_0], rbx
18000B415: mov     [rsp+arg_8], rsi
18000B41A: push    rdi
18000B41B: sub     rsp, 20h
18000B41F: lea     rbx, [rcx+8]
18000B423: xor     esi, esi
18000B425: lea     rax, off_1800101B8
18000B42C: mov     rdi, rcx
18000B42F: mov     [rcx], rax
18000B432: mov     [rbx], rsi
18000B435: lea     ecx, [rsi+10h]; Size
18000B438: mov     [rbx+8], rsi
18000B43C: mov     [rbx+10h], rsi
18000B440: mov     [rbx+18h], rsi
18000B444: mov     [rbx+20h], rsi
18000B448: call    ??2@YAPEAX_K@Z; operator new(unsigned __int64)
18000B44D: lea     rcx, [rdi+38h]; _Cnd_t
18000B451: mov     [rax+8], rsi
18000B455: mov     [rbx], rax
18000B458: mov     [rax], rbx
18000B45B: call    cs:_Cnd_init_in_situ
18000B461: lea     rcx, [rdi+80h]; _Mtx_t
18000B468: lea     edx, [rsi+2]; int
18000B46B: call    cs:_Mtx_init_in_situ
18000B471: mov     rbx, [rsp+28h+arg_0]
18000B476: mov     rax, rdi
18000B479: mov     [rdi+0D0h], rsi
18000B480: mov     rsi, [rsp+28h+arg_8]
18000B485: add     rsp, 20h
18000B489: pop     rdi
18000B48A: retn

### FUNC 18000B490 - 18000B493 (3 bytes) name=_guard_check_icall_nop
18000B490: retn    0

### FUNC 18000B4B0 - 18000B524 (116 bytes) name=sub_18000B4B0
18000B4B0: sub     rsp, 28h
18000B4B4: cmp     [rsp+28h+arg_20], 2
18000B4B9: jnz     short loc_18000B51F
18000B4BB: mov     [rsp+28h+var_8], rbx
18000B4C0: mov     r9d, 1
18000B4C6: mov     rbx, [rsp+28h+arg_28]
18000B4CB: mov     r8d, [rbx+218h]
18000B4D2: mov     ecx, [rbx+18h]
18000B4D5: mov     [rbx+240h], edx
18000B4DB: mov     rdx, [rbx+220h]
18000B4E2: call    cs:MAG_GetOutputBMPdataRGB24
18000B4E8: mov     rax, [rbx+228h]
18000B4EF: test    rax, rax
18000B4F2: jz      short loc_18000B51A
18000B4F4: mov     r8d, [rbx+20Ch]
18000B4FB: mov     r9d, 3
18000B501: mov     edx, [rbx+208h]
18000B507: mov     rcx, [rbx+220h]
18000B50E: mov     rbx, [rsp+28h+var_8]
18000B513: add     rsp, 28h
18000B517: jmp     rax
18000B51A: mov     rbx, [rsp+28h+var_8]
18000B51F: add     rsp, 28h
18000B523: retn

### FUNC 18000B530 - 18000B6EA (442 bytes) name=sub_18000B530
18000B530: mov     [rsp+arg_10], rbx
18000B535: push    rbp
18000B536: push    rsi
18000B537: push    rdi
18000B538: sub     rsp, 30h
18000B53C: mov     rax, cs:qword_180015FF8
18000B543: test    rax, rax
18000B546: jnz     loc_18000B6DD
18000B54C: mov     ecx, 2B0h; Size
18000B551: call    ??2@YAPEAX_K@Z; operator new(unsigned __int64)
18000B556: mov     rdi, rax
18000B559: mov     [rsp+48h+arg_0], rax
18000B55E: xor     edx, edx; Val
18000B560: mov     r8d, 2B0h; Size
18000B566: mov     rcx, rax; void *
18000B569: call    memset
18000B56E: lea     rax, off_1800101D8
18000B575: mov     [rdi], rax
18000B578: lea     rcx, [rdi+8]
18000B57C: xor     ebp, ebp
18000B57E: mov     [rcx], ebp
18000B580: mov     [rcx+8], rbp
18000B584: mov     dword ptr [rcx+10h], 0FFFFFFFFh
18000B58B: mov     [rcx+1E8h], rbp
18000B592: mov     [rcx+1F0h], ebp
18000B598: xorps   xmm0, xmm0
18000B59B: xor     eax, eax
18000B59D: movups  xmmword ptr [rcx+14h], xmm0
18000B5A1: movups  xmmword ptr [rcx+24h], xmm0
18000B5A5: movups  xmmword ptr [rcx+34h], xmm0
18000B5A9: movups  xmmword ptr [rcx+44h], xmm0
18000B5AD: mov     [rcx+54h], rax
18000B5B1: call    sub_1800015D0
18000B5B6: nop
18000B5B7: mov     [rdi+220h], rbp
18000B5BE: mov     [rdi+228h], rbp
18000B5C5: mov     [rdi+238h], rbp
18000B5CC: mov     [rdi+27Ch], ebp
18000B5D2: mov     [rdi+240h], rbp
18000B5D9: mov     rax, 3FEF5C28F5C28F5Ch
18000B5E3: mov     [rdi+248h], rax
18000B5EA: mov     [rdi+298h], rbp
18000B5F1: mov     qword ptr [rdi+2A0h], 0FFFFFFFFFFFFFFFFh
18000B5FC: mov     rax, 4040000000000000h
18000B606: mov     [rdi+288h], rax
18000B60D: mov     rax, 4044000000000000h
18000B617: mov     [rdi+290h], rax
18000B61E: mov     rax, 4042800000000000h
18000B628: mov     [rdi+280h], rax
18000B62F: mov     [rdi+2A8h], bp
18000B636: mov     rax, cs:qword_180015FE8
18000B63D: test    rax, rax
18000B640: jnz     short loc_18000B683
18000B642: lea     ecx, [rbp+78h]; Size
18000B645: call    ??2@YAPEAX_K@Z; operator new(unsigned __int64)
18000B64A: mov     [rsp+48h+arg_8], rax
18000B64F: xorps   xmm0, xmm0
18000B652: xor     ecx, ecx
18000B654: movups  xmmword ptr [rax], xmm0
18000B657: movups  xmmword ptr [rax+10h], xmm0
18000B65B: movups  xmmword ptr [rax+20h], xmm0
18000B65F: movups  xmmword ptr [rax+30h], xmm0
18000B663: movups  xmmword ptr [rax+40h], xmm0
18000B667: movups  xmmword ptr [rax+50h], xmm0
18000B66B: movups  xmmword ptr [rax+60h], xmm0
18000B66F: mov     [rax+70h], rcx
18000B673: mov     rcx, rax; int
18000B676: call    sub_18000A510
18000B67B: nop
18000B67C: mov     cs:qword_180015FE8, rax
18000B683: mov     [rdi+230h], rax
18000B68A: mov     rbx, [rax+60h]
18000B68E: mov     rsi, [rax+68h]
18000B692: cmp     rbx, rsi
18000B695: jz      short loc_18000B6D3
18000B697: nop     word ptr [rax+rax+00000000h]
18000B6A0: mov     [rsp+48h+var_28], ebp
18000B6A4: lea     r9, off_180015798
18000B6AB: lea     r8, off_180015718
18000B6B2: xor     edx, edx
18000B6B4: mov     rcx, [rbx]
18000B6B7: call    __RTDynamicCast
18000B6BC: test    rax, rax
18000B6BF: jnz     short loc_18000B6CC
18000B6C1: add     rbx, 8
18000B6C5: cmp     rbx, rsi
18000B6C8: jnz     short loc_18000B6A0
18000B6CA: jmp     short loc_18000B6D3
18000B6CC: mov     [rax+0D8h], rdi
18000B6D3: mov     cs:qword_180015FF8, rdi
18000B6DA: mov     rax, rdi
18000B6DD: mov     rbx, [rsp+48h+arg_10]
18000B6E2: add     rsp, 30h
18000B6E6: pop     rdi
18000B6E7: pop     rsi
18000B6E8: pop     rbp
18000B6E9: retn

### FUNC 18000B6F0 - 18000B899 (425 bytes) name=sub_18000B6F0
18000B6F0: sub     rsp, 38h
18000B6F4: cmp     dword ptr [rcx+8], 0
18000B6F8: mov     [rsp+38h+arg_0], rbx
18000B6FD: mov     [rsp+38h+arg_8], rsi
18000B702: mov     rsi, rcx
18000B705: jz      loc_18000B84B
18000B70B: mov     ecx, [rcx+18h]
18000B70E: call    cs:MAG_EnumCameras
18000B714: mov     ecx, 32h ; '2'; dwMilliseconds
18000B719: call    cs:Sleep
18000B71F: cmp     dword ptr [rsi+8], 0
18000B723: jz      loc_18000B84B
18000B729: xor     edx, edx
18000B72B: xor     ecx, ecx
18000B72D: call    cs:MAG_GetTerminalList
18000B733: test    eax, eax
18000B735: jz      loc_18000B84B
18000B73B: mov     ecx, [rsi+18h]
18000B73E: xor     edx, edx
18000B740: mov     r8d, 3E8h
18000B746: call    cs:MAG_LinkCamera
18000B74C: test    eax, eax
18000B74E: jz      loc_18000B84B
18000B754: mov     ecx, [rsi+18h]
18000B757: lea     rbx, [rsi+1Ch]
18000B75B: mov     rdx, rbx
18000B75E: mov     r8d, 48h ; 'H'
18000B764: call    cs:MAG_GetCamInfo
18000B76A: test    rbx, rbx
18000B76D: jz      loc_18000B84B
18000B773: mov     eax, [rbx]
18000B775: lea     rdx, [rsi+250h]
18000B77C: mov     ecx, [rsi+18h]
18000B77F: mov     [rsi+200h], eax
18000B785: mov     eax, [rbx+4]
18000B788: mov     [rsi+204h], eax
18000B78E: mov     eax, [rbx+40h]
18000B791: mov     [rsi+208h], eax
18000B797: mov     eax, [rbx+44h]
18000B79A: mov     [rsi+20Ch], eax
18000B7A0: mov     dword ptr [rsi+210h], 10h
18000B7AA: mov     eax, [rbx+44h]
18000B7AD: mov     [rsi+214h], eax
18000B7B3: mov     [rsp+38h+var_8], rdi
18000B7B8: call    cs:MAG_GetFixPara
18000B7BE: movsd   xmm0, qword ptr [rsi+248h]
18000B7C6: lea     rdx, [rsi+250h]
18000B7CD: mov     ecx, [rsi+18h]
18000B7D0: mov     r8d, 2
18000B7D6: cvtpd2ps xmm0, xmm0
18000B7DA: mov     dword ptr [rsi+250h], 3F266666h
18000B7E4: movss   dword ptr [rsi+254h], xmm0
18000B7EC: call    cs:MAG_SetFixPara
18000B7F2: mov     eax, [rsi+208h]
18000B7F8: imul    eax, [rsi+20Ch]
18000B7FF: lea     eax, [rax+rax*2]
18000B802: movsxd  rcx, eax; Size
18000B805: mov     [rsi+218h], eax
18000B80B: call    j_??2@YAPEAX_K@Z; operator new(unsigned __int64)
18000B810: mov     ecx, [rsi+18h]
18000B813: lea     r8, sub_18000B4B0
18000B81A: mov     r9d, 2
18000B820: mov     [rsi+220h], rax
18000B827: lea     rdx, [rsi+200h]
18000B82E: mov     [rsp+38h+var_18], rsi
18000B833: call    cs:MAG_StartProcessImage
18000B839: mov     ecx, [rsi+18h]
18000B83C: mov     rdi, [rsp+38h+var_8]
18000B841: test    eax, eax
18000B843: jnz     short loc_18000B883
18000B845: call    cs:MAG_DisLinkCamera
18000B84B: xor     al, al
18000B84D: mov     rcx, [rsi+230h]
18000B854: mov     [rsi+2A8h], al
18000B85A: call    sub_18000A960
18000B85F: cmp     byte ptr [rsi+2A8h], 0
18000B866: mov     rbx, [rsp+38h+arg_0]
18000B86B: mov     [rsi+2A9h], al
18000B871: mov     rsi, [rsp+38h+arg_8]
18000B876: jz      short loc_18000B892
18000B878: test    al, al
18000B87A: jz      short loc_18000B892
18000B87C: mov     al, 1
18000B87E: add     rsp, 38h
18000B882: retn
18000B883: mov     edx, 2
18000B888: call    cs:MAG_SetColorPalette
18000B88E: mov     al, 1
18000B890: jmp     short loc_18000B84D
18000B892: xor     al, al
18000B894: add     rsp, 38h
18000B898: retn

### FUNC 18000B8A0 - 18000B951 (177 bytes) name=sub_18000B8A0
18000B8A0: push    rbx
18000B8A2: sub     rsp, 30h
18000B8A6: mov     rax, [rcx+238h]
18000B8AD: mov     rbx, rcx
18000B8B0: mov     [rcx+2A0h], edx
18000B8B6: test    rax, rax
18000B8B9: jz      loc_18000B94B
18000B8BF: movaps  [rsp+38h+var_18], xmm6
18000B8C4: movd    xmm6, edx
18000B8C8: cvtdq2ps xmm6, xmm6
18000B8CB: test    edx, edx
18000B8CD: jns     short loc_18000B91D
18000B8CF: movaps  xmm0, xmm6
18000B8D2: call    rax
18000B8D4: call    cs:GetTickCount
18000B8DA: mov     ecx, eax
18000B8DC: sub     ecx, [rbx+244h]
18000B8E2: cmp     ecx, 0EA60h
18000B8E8: jbe     short loc_18000B946
18000B8EA: sub     eax, [rbx+2A4h]
18000B8F0: cmp     eax, 1388h
18000B8F5: jbe     short loc_18000B946
18000B8F7: cmp     dword ptr [rbx+8], 0
18000B8FB: jz      short loc_18000B906
18000B8FD: mov     ecx, [rbx+18h]
18000B900: call    cs:MAG_TriggerFFC
18000B906: call    cs:GetTickCount
18000B90C: movaps  xmm6, [rsp+38h+var_18]
18000B911: mov     [rbx+244h], eax
18000B917: add     rsp, 30h
18000B91B: pop     rbx
18000B91C: retn
18000B91D: call    cs:GetTickCount
18000B923: cmp     dword ptr [rbx+27Ch], 0
18000B92A: mov     [rbx+2A4h], eax
18000B930: mov     rax, [rbx+238h]
18000B937: jz      short loc_18000B941
18000B939: mulss   xmm6, cs:dword_1800101E0
18000B941: movaps  xmm0, xmm6
18000B944: call    rax
18000B946: movaps  xmm6, [rsp+38h+var_18]
18000B94B: add     rsp, 30h
18000B94F: pop     rbx
18000B950: retn

### FUNC 18000B960 - 18000BB2C (460 bytes) name=sub_18000B960
18000B960: mov     [rsp+arg_8], rbx
18000B965: mov     [rsp+arg_10], rsi
18000B96A: push    rdi
18000B96B: push    r14
18000B96D: push    r15
18000B96F: sub     rsp, 40h
18000B973: mov     r15d, 9Fh
18000B979: mov     esi, r9d
18000B97C: mov     r14d, r8d
18000B97F: mov     rbx, rdx
18000B982: mov     rdi, rcx
18000B985: cmp     r8d, r15d
18000B988: ja      loc_18000BAE2
18000B98E: cmp     r9d, 77h ; 'w'
18000B992: ja      loc_18000BAE2
18000B998: mov     ecx, [rcx+18h]
18000B99B: mov     r9d, 3
18000B9A1: mov     [rsp+58h+arg_0], rbp
18000B9A6: mov     r8d, esi
18000B9A9: mov     edx, r14d
18000B9AC: movaps  [rsp+58h+var_28], xmm7
18000B9B1: call    cs:MAG_GetTemperatureProbe
18000B9B7: movss   xmm2, dword ptr [rdi+254h]
18000B9BF: mov     r9d, r14d
18000B9C2: mov     ecx, [rdi+18h]
18000B9C5: mov     edx, eax
18000B9C7: mov     [rsp+58h+var_38], esi
18000B9CB: call    cs:MAG_FixTemperature
18000B9D1: xor     ebp, ebp
18000B9D3: lea     ecx, [r14-1]
18000B9D7: test    ecx, ecx
18000B9D9: mov     edx, ebp
18000B9DB: mov     r8d, ebp
18000B9DE: cmovns  edx, ecx
18000B9E1: movd    xmm7, eax
18000B9E5: lea     ecx, [r14+1]
18000B9E9: cmp     ecx, r15d
18000B9EC: lea     eax, [rsi+1]
18000B9EF: cvtdq2pd xmm7, xmm7
18000B9F3: cmovl   r15d, ecx
18000B9F7: lea     ecx, [rsi-1]
18000B9FA: test    ecx, ecx
18000B9FC: mov     r9d, r15d
18000B9FF: cmovns  r8d, ecx
18000BA03: mov     ecx, 77h ; 'w'
18000BA08: cmp     eax, ecx
18000BA0A: mulsd   xmm7, cs:qword_1800101E8
18000BA12: cmovl   ecx, eax
18000BA15: mov     [rsp+58h+var_38], ecx
18000BA19: mov     ecx, [rdi+18h]
18000BA1C: call    cs:MAG_EstimateUnderArmTempFromForeheadRect
18000BA22: movd    xmm2, eax
18000BA26: mov     eax, [rdi+27Ch]
18000BA2C: cvtdq2pd xmm2, xmm2
18000BA30: mulsd   xmm2, cs:qword_1800101E8
18000BA38: cmp     eax, 1
18000BA3B: jnz     short loc_18000BA5D
18000BA3D: mulsd   xmm7, cs:qword_1800101F0
18000BA45: mulsd   xmm2, cs:qword_1800101F0
18000BA4D: addsd   xmm7, cs:qword_1800101F8
18000BA55: addsd   xmm2, cs:qword_1800101F8
18000BA5D: movsd   xmm0, qword ptr [rdi+298h]
18000BA65: addsd   xmm2, xmm0
18000BA69: addsd   xmm7, xmm0
18000BA6D: comisd  xmm2, qword ptr [rdi+290h]
18000BA75: ja      short loc_18000BA93
18000BA77: movsd   xmm0, qword ptr [rdi+288h]
18000BA7F: comisd  xmm0, xmm2
18000BA83: ja      short loc_18000BA93
18000BA85: comisd  xmm2, qword ptr [rdi+280h]
18000BA8D: setnb   bpl
18000BA91: jmp     short loc_18000BA98
18000BA93: mov     ebp, 0FFFFFFFFh
18000BA98: movd    xmm0, r14d
18000BA9D: cvtdq2ps xmm0, xmm0
18000BAA0: mov     [rbx+24h], ebp
18000BAA3: mov     rbp, [rsp+58h+arg_0]
18000BAA8: mov     [rbx+20h], eax
18000BAAB: movd    xmm1, esi
18000BAAF: divss   xmm0, cs:dword_180010204
18000BAB7: cvtdq2ps xmm1, xmm1
18000BABA: cvtps2pd xmm0, xmm0
18000BABD: divss   xmm1, cs:dword_180010200
18000BAC5: movsd   qword ptr [rbx], xmm0
18000BAC9: cvtps2pd xmm0, xmm1
18000BACC: movsd   qword ptr [rbx+10h], xmm7
18000BAD1: movaps  xmm7, [rsp+58h+var_28]
18000BAD6: movsd   qword ptr [rbx+8], xmm0
18000BADB: movsd   qword ptr [rbx+18h], xmm2
18000BAE0: jmp     short loc_18000BB15
18000BAE2: mov     rax, 0BFF0000000000000h
18000BAEC: mov     dword ptr [rdx+24h], 0FA0A1F00h
18000BAF3: mov     [rdx], rax
18000BAF6: mov     [rdx+8], rax
18000BAFA: mov     rax, 0C197D78400000000h
18000BB04: mov     [rdx+18h], rax
18000BB08: mov     [rdx+10h], rax
18000BB0C: mov     eax, [rcx+27Ch]
18000BB12: mov     [rdx+20h], eax
18000BB15: mov     rsi, [rsp+58h+arg_10]
18000BB1A: mov     rax, rbx
18000BB1D: mov     rbx, [rsp+58h+arg_8]
18000BB22: add     rsp, 40h
18000BB26: pop     r15
18000BB28: pop     r14
18000BB2A: pop     rdi
18000BB2B: retn

### FUNC 18000BB30 - 18000BB36 (6 bytes) name=GetSDKVersion
18000BB30: mov     eax, 2710h
18000BB35: retn

### FUNC 18000BB40 - 18000BB55 (21 bytes) name=Start
18000BB40: sub     rsp, 28h
18000BB44: call    sub_18000B530
18000BB49: mov     rcx, rax
18000BB4C: add     rsp, 28h
18000BB50: jmp     sub_18000B6F0

### FUNC 18000BB60 - 18000BBF8 (152 bytes) name=Stop
18000BB60: push    rbx
18000BB62: sub     rsp, 20h
18000BB66: call    sub_18000B530
18000BB6B: mov     rbx, rax
18000BB6E: mov     ecx, [rax+18h]
18000BB71: call    cs:MAG_IsProcessingImage
18000BB77: test    eax, eax
18000BB79: jz      short loc_18000BBBD
18000BB7B: cmp     dword ptr [rbx+1F0h], 0
18000BB82: jz      short loc_18000BB97
18000BB84: mov     ecx, [rbx+18h]
18000BB87: call    cs:MAG_LocalStorageAviStop
18000BB8D: mov     dword ptr [rbx+1F0h], 0
18000BB97: cmp     dword ptr [rbx+1F4h], 0
18000BB9E: jz      short loc_18000BBB4
18000BBA0: mov     ecx, [rbx+18h]
18000BBA3: call    cs:MAG_LocalStorageMgsStop
18000BBA9: mov     qword ptr [rbx+1F4h], 0
18000BBB4: mov     ecx, [rbx+18h]
18000BBB7: call    cs:MAG_StopProcessImage
18000BBBD: mov     ecx, [rbx+18h]
18000BBC0: call    cs:MAG_IsLinked
18000BBC6: test    eax, eax
18000BBC8: jz      short loc_18000BBD3
18000BBCA: mov     ecx, [rbx+18h]
18000BBCD: call    cs:MAG_DisLinkCamera
18000BBD3: mov     rcx, [rbx+230h]
18000BBDA: add     rcx, 8
18000BBDE: mov     byte ptr [rbx+2A8h], 0
18000BBE5: mov     rax, [rcx]
18000BBE8: call    qword ptr [rax+20h]
18000BBEB: mov     byte ptr [rbx+2A9h], 0
18000BBF2: add     rsp, 20h
18000BBF6: pop     rbx
18000BBF7: retn

### FUNC 18000BC00 - 18000BC29 (41 bytes) name=IsWorking
18000BC00: sub     rsp, 28h
18000BC04: call    sub_18000B530
18000BC09: cmp     byte ptr [rax+2A8h], 0
18000BC10: jz      short loc_18000BC22
18000BC12: cmp     byte ptr [rax+2A9h], 0
18000BC19: jz      short loc_18000BC22
18000BC1B: mov     al, 1
18000BC1D: add     rsp, 28h
18000BC21: retn
18000BC22: xor     al, al
18000BC24: add     rsp, 28h
18000BC28: retn

### FUNC 18000BC30 - 18000BC4B (27 bytes) name=SetNewIRFrameDelegate
18000BC30: push    rbx
18000BC32: sub     rsp, 20h
18000BC36: mov     rbx, rcx
18000BC39: call    sub_18000B530
18000BC3E: mov     [rax+228h], rbx
18000BC45: add     rsp, 20h
18000BC49: pop     rbx
18000BC4A: retn

### FUNC 18000BC50 - 18000BC6B (27 bytes) name=SetNewDistanceDelegate
18000BC50: push    rbx
18000BC52: sub     rsp, 20h
18000BC56: mov     rbx, rcx
18000BC59: call    sub_18000B530
18000BC5E: mov     [rax+238h], rbx
18000BC65: add     rsp, 20h
18000BC69: pop     rbx
18000BC6A: retn

### FUNC 18000BC70 - 18000BCEA (122 bytes) name=ReadTemperatureAtPoint
18000BC70: mov     [rsp+arg_0], rbx
18000BC75: mov     [rsp+arg_8], rbp
18000BC7A: mov     [rsp+arg_10], rsi
18000BC7F: push    rdi
18000BC80: sub     rsp, 50h
18000BC84: mov     rbp, r8
18000BC87: mov     ebx, edx
18000BC89: mov     edi, ecx
18000BC8B: call    sub_18000B530
18000BC90: mov     rsi, rax
18000BC93: mov     ecx, [rax+18h]
18000BC96: call    cs:MAG_LockFrame
18000BC9C: mov     r9d, ebx
18000BC9F: lea     rdx, [rsp+58h+var_38]
18000BCA4: mov     r8d, edi
18000BCA7: mov     rcx, rsi
18000BCAA: call    sub_18000B960
18000BCAF: mov     ecx, [rsi+18h]
18000BCB2: call    cs:MAG_UnLockFrame
18000BCB8: movups  xmm0, [rsp+58h+var_38]
18000BCBD: mov     rbx, [rsp+58h+arg_0]
18000BCC2: movups  xmm1, [rsp+58h+var_28]
18000BCC7: mov     rsi, [rsp+58h+arg_10]
18000BCCC: movups  xmmword ptr [rbp+0], xmm0
18000BCD0: movsd   xmm0, [rsp+58h+var_18]
18000BCD6: movups  xmmword ptr [rbp+10h], xmm1
18000BCDA: movsd   qword ptr [rbp+20h], xmm0
18000BCDF: mov     rbp, [rsp+58h+arg_8]
18000BCE4: add     rsp, 50h
18000BCE8: pop     rdi
18000BCE9: retn

### FUNC 18000BCF0 - 18000BE59 (361 bytes) name=ReadTemperatureInRect
18000BCF0: push    rbx
18000BCF2: push    rbp
18000BCF3: push    rsi
18000BCF4: push    rdi
18000BCF5: push    r14
18000BCF7: push    r15
18000BCF9: sub     rsp, 98h
18000BD00: movaps  [rsp+0C8h+var_48], xmm6
18000BD08: mov     rax, cs:__security_cookie
18000BD0F: xor     rax, rsp
18000BD12: mov     [rsp+0C8h+var_58], rax
18000BD17: mov     r15, [rsp+0C8h+arg_20]
18000BD1F: mov     edi, r9d
18000BD22: mov     esi, r8d
18000BD25: mov     ebx, edx
18000BD27: mov     ebp, ecx
18000BD29: call    sub_18000B530
18000BD2E: mov     r14, rax
18000BD31: mov     ecx, [rax+18h]
18000BD34: call    cs:MAG_LockFrame
18000BD3A: xor     eax, eax
18000BD3C: xor     r9d, r9d
18000BD3F: mov     r8d, 77h ; 'w'
18000BD45: mov     [rsp+0C8h+var_60], eax
18000BD49: mov     eax, r8d
18000BD4C: test    ebx, ebx
18000BD4E: xorps   xmm0, xmm0
18000BD51: mov     edx, ebp
18000BD53: cmovns  r9d, ebx
18000BD57: movups  [rsp+0C8h+var_70], xmm0
18000BD5C: lea     ecx, [r9+rdi]
18000BD60: cmp     ecx, 78h ; 'x'
18000BD63: cmovge  ecx, r8d
18000BD67: sub     eax, r9d
18000BD6A: sub     r8d, ecx
18000BD6D: lea     r9d, [rsi+rbp]
18000BD71: lea     rcx, [rsp+0C8h+var_70]
18000BD76: mov     [rsp+0C8h+var_A0], rcx
18000BD7B: mov     ecx, [r14+18h]
18000BD7F: mov     [rsp+0C8h+var_A8], eax
18000BD83: call    cs:MAG_GetRectTemperatureInfo
18000BD89: test    al, al
18000BD8B: jz      short loc_18000BDEA
18000BD8D: mov     edi, [rsp+0C8h+var_60]
18000BD91: mov     eax, 66666667h
18000BD96: movss   xmm2, dword ptr [r14+254h]
18000BD9F: mov     ecx, [r14+18h]
18000BDA3: imul    edi
18000BDA5: mov     ebx, edx
18000BDA7: mov     edx, dword ptr [rsp+0C8h+var_70+4]
18000BDAB: sar     ebx, 6
18000BDAE: mov     eax, ebx
18000BDB0: shr     eax, 1Fh
18000BDB3: add     ebx, eax
18000BDB5: mov     [rsp+0C8h+var_A8], ebx
18000BDB9: lea     eax, [rbx+rbx*4]
18000BDBC: shl     eax, 5
18000BDBF: sub     edi, eax
18000BDC1: mov     r9d, edi
18000BDC4: call    cs:MAG_FixTemperature
18000BDCA: mov     r9d, 78h ; 'x'
18000BDD0: lea     rdx, [rsp+0C8h+var_98]
18000BDD5: sub     r9d, ebx
18000BDD8: mov     r8d, edi
18000BDDB: mov     rcx, r14
18000BDDE: call    sub_18000B960
18000BDE3: movups  xmm6, [rsp+0C8h+var_98]
18000BDE8: jmp     short loc_18000BE10
18000BDEA: movaps  xmm0, cs:xmmword_180010220
18000BDF1: mov     eax, [r14+27Ch]
18000BDF8: movaps  xmm6, cs:xmmword_180010210
18000BDFF: movups  [rsp+0C8h+var_88], xmm0
18000BE04: mov     dword ptr [rsp+0C8h+var_78], eax
18000BE08: mov     dword ptr [rsp+0C8h+var_78+4], 0FA0A1F00h
18000BE10: mov     ecx, [r14+18h]
18000BE14: call    cs:MAG_UnLockFrame
18000BE1A: movups  xmm0, [rsp+0C8h+var_88]
18000BE1F: movsd   xmm1, [rsp+0C8h+var_78]
18000BE25: movups  xmmword ptr [r15], xmm6
18000BE29: movups  xmmword ptr [r15+10h], xmm0
18000BE2E: movsd   qword ptr [r15+20h], xmm1
18000BE34: mov     rcx, [rsp+0C8h+var_58]
18000BE39: xor     rcx, rsp; StackCookie
18000BE3C: call    __security_check_cookie
18000BE41: movaps  xmm6, [rsp+0C8h+var_48]
18000BE49: add     rsp, 98h
18000BE50: pop     r15
18000BE52: pop     r14
18000BE54: pop     rdi
18000BE55: pop     rsi
18000BE56: pop     rbp
18000BE57: pop     rbx
18000BE58: retn

### FUNC 18000BE60 - 18000BEB1 (81 bytes) name=SetTempBoundary
18000BE60: sub     rsp, 58h
18000BE64: movaps  [rsp+58h+var_18], xmm6
18000BE69: movaps  xmm6, xmm0
18000BE6C: movaps  [rsp+58h+var_28], xmm7
18000BE71: movaps  xmm7, xmm1
18000BE74: movaps  [rsp+58h+var_38], xmm8
18000BE7A: movaps  xmm8, xmm2
18000BE7E: call    sub_18000B530
18000BE83: movsd   qword ptr [rax+288h], xmm6
18000BE8B: movaps  xmm6, [rsp+58h+var_18]
18000BE90: movsd   qword ptr [rax+290h], xmm7
18000BE98: movaps  xmm7, [rsp+58h+var_28]
18000BE9D: movsd   qword ptr [rax+280h], xmm8
18000BEA6: movaps  xmm8, [rsp+58h+var_38]
18000BEAC: add     rsp, 58h
18000BEB0: retn

### FUNC 18000BEC0 - 18000BEE3 (35 bytes) name=SetTempOffset
18000BEC0: sub     rsp, 38h
18000BEC4: movaps  [rsp+38h+var_18], xmm6
18000BEC9: movaps  xmm6, xmm0
18000BECC: call    sub_18000B530
18000BED1: movsd   qword ptr [rax+298h], xmm6
18000BED9: movaps  xmm6, [rsp+38h+var_18]
18000BEDE: add     rsp, 38h
18000BEE2: retn

### FUNC 18000BEF0 - 18000BF09 (25 bytes) name=SetUnitMode
18000BEF0: push    rbx
18000BEF2: sub     rsp, 20h
18000BEF6: mov     ebx, ecx
18000BEF8: call    sub_18000B530
18000BEFD: mov     [rax+27Ch], ebx
18000BF03: add     rsp, 20h
18000BF07: pop     rbx
18000BF08: retn

### FUNC 18000BF10 - 18000BF8C (124 bytes) name=Rotate
18000BF10: mov     [rsp+arg_8], rbx
18000BF15: mov     [rsp+arg_10], rsi
18000BF1A: push    rdi
18000BF1B: sub     rsp, 30h
18000BF1F: mov     esi, ecx
18000BF21: call    sub_18000B530
18000BF26: mov     rdx, [rax+230h]
18000BF2D: mov     rbx, [rdx+60h]
18000BF31: mov     rdi, [rdx+68h]
18000BF35: cmp     rbx, rdi
18000BF38: jz      short loc_18000BF7C
18000BF3A: mov     [rsp+38h+arg_0], rbp
18000BF3F: xor     ebp, ebp
18000BF41: mov     rcx, [rbx]
18000BF44: lea     r9, off_180015740
18000BF4B: lea     r8, off_180015718
18000BF52: mov     dword ptr [rsp+38h+var_18], ebp; void *
18000BF56: xor     edx, edx
18000BF58: call    __RTDynamicCast
18000BF5D: test    rax, rax
18000BF60: jnz     short loc_18000BF6D
18000BF62: add     rbx, 8
18000BF66: cmp     rbx, rdi
18000BF69: jnz     short loc_18000BF41
18000BF6B: jmp     short loc_18000BF77
18000BF6D: mov     edx, esi; int
18000BF6F: mov     rcx, rax; int
18000BF72: call    sub_180007A40
18000BF77: mov     rbp, [rsp+38h+arg_0]
18000BF7C: mov     rbx, [rsp+38h+arg_8]
18000BF81: mov     rsi, [rsp+38h+arg_10]
18000BF86: add     rsp, 30h
18000BF8A: pop     rdi
18000BF8B: retn

### FUNC 18000BF90 - 18000BFCB (59 bytes) name=GetInnerIRCameraTemp
18000BF90: sub     rsp, 28h
18000BF94: call    sub_18000B530
18000BF99: cmp     dword ptr [rax+27Ch], 1
18000BFA0: movd    xmm0, dword ptr [rax+240h]
18000BFA8: cvtdq2pd xmm0, xmm0
18000BFAC: mulsd   xmm0, cs:qword_1800101E8
18000BFB4: jnz     short loc_18000BFC6
18000BFB6: mulsd   xmm0, cs:qword_1800101F0
18000BFBE: addsd   xmm0, cs:qword_1800101F8
18000BFC6: add     rsp, 28h
18000BFCA: retn

### FUNC 18000BFD0 - 18000C028 (88 bytes) name=SetEmissivity
18000BFD0: sub     rsp, 38h
18000BFD4: movaps  [rsp+38h+var_18], xmm6
18000BFD9: movaps  xmm6, xmm0
18000BFDC: call    sub_18000B530
18000BFE1: cmp     dword ptr [rax+8], 0
18000BFE5: jnz     short loc_18000BFF9
18000BFE7: movsd   qword ptr [rax+248h], xmm6
18000BFEF: movaps  xmm6, [rsp+38h+var_18]
18000BFF4: add     rsp, 38h
18000BFF8: retn
18000BFF9: mov     ecx, [rax+18h]
18000BFFC: lea     rdx, [rax+250h]
18000C003: xorps   xmm0, xmm0
18000C006: mov     r8d, 2
18000C00C: cvtsd2ss xmm0, xmm6
18000C010: movss   dword ptr [rax+254h], xmm0
18000C018: movaps  xmm6, [rsp+38h+var_18]
18000C01D: add     rsp, 38h
18000C021: jmp     cs:MAG_SetFixPara

### FUNC 18000C030 - 18000C05F (47 bytes) name=Trigger
18000C030: push    rbx
18000C032: sub     rsp, 20h
18000C036: call    sub_18000B530
18000C03B: mov     rbx, rax
18000C03E: cmp     dword ptr [rax+8], 0
18000C042: jz      short loc_18000C04D
18000C044: mov     ecx, [rax+18h]
18000C047: call    cs:MAG_TriggerFFC
18000C04D: call    cs:GetTickCount
18000C053: mov     [rbx+244h], eax
18000C059: add     rsp, 20h
18000C05D: pop     rbx
18000C05E: retn

### FUNC 18000C060 - 18000C160 (256 bytes) name=GetTCMVersion
18000C060: mov     [rsp+arg_10], rbx
18000C065: mov     [rsp+arg_18], rsi
18000C06A: push    rdi
18000C06B: sub     rsp, 60h
18000C06F: mov     rax, cs:__security_cookie
18000C076: xor     rax, rsp
18000C079: mov     [rsp+68h+var_18], rax
18000C07E: mov     rsi, rcx
18000C081: call    sub_18000B530
18000C086: mov     rcx, [rax+230h]
18000C08D: mov     rbx, [rcx+60h]
18000C091: mov     rdi, [rcx+68h]
18000C095: cmp     rbx, rdi
18000C098: jz      loc_18000C141
18000C09E: mov     [rsp+68h+arg_8], rbp
18000C0A3: xor     ebp, ebp
18000C0A5: mov     rcx, [rbx]
18000C0A8: lea     r9, off_1800158D0
18000C0AF: lea     r8, off_180015718
18000C0B6: mov     [rsp+68h+var_48], ebp
18000C0BA: xor     edx, edx
18000C0BC: call    __RTDynamicCast
18000C0C1: test    rax, rax
18000C0C4: jnz     short loc_18000C0D1
18000C0C6: add     rbx, 8
18000C0CA: cmp     rbx, rdi
18000C0CD: jnz     short loc_18000C0A5
18000C0CF: jmp     short loc_18000C13C
18000C0D1: lea     rdx, [rsp+68h+Src]
18000C0D6: mov     rcx, rax
18000C0D9: call    sub_180009000
18000C0DE: mov     rdi, [rsp+68h+var_20]
18000C0E3: lea     rdx, [rsp+68h+Src]
18000C0E8: mov     rbx, [rsp+68h+Src]
18000C0ED: cmp     rdi, 10h
18000C0F1: movsxd  r8, [rsp+68h+var_28]; Size
18000C0F6: mov     rcx, rsi; void *
18000C0F9: cmovnb  rdx, rbx; Src
18000C0FD: call    memcpy
18000C102: cmp     rdi, 10h
18000C106: jb      short loc_18000C13C
18000C108: lea     rdx, [rdi+1]
18000C10C: mov     rax, rbx
18000C10F: cmp     rdx, 1000h
18000C116: jb      short loc_18000C134
18000C118: mov     rbx, [rbx-8]
18000C11C: add     rdx, 27h ; '''
18000C120: sub     rax, rbx
18000C123: add     rax, 0FFFFFFFFFFFFFFF8h
18000C127: cmp     rax, 1Fh
18000C12B: jbe     short loc_18000C134
18000C12D: call    cs:_invalid_parameter_noinfo_noreturn
18000C133: int     3; Trap to Debugger
18000C134: mov     rcx, rbx; Block
18000C137: call    j_j_free
18000C13C: mov     rbp, [rsp+68h+arg_8]
18000C141: mov     rcx, [rsp+68h+var_18]
18000C146: xor     rcx, rsp; StackCookie
18000C149: call    __security_check_cookie
18000C14E: lea     r11, [rsp+68h+var_8]
18000C153: mov     rbx, [r11+20h]
18000C157: mov     rsi, [r11+28h]
18000C15B: mov     rsp, r11
18000C15E: pop     rdi
18000C15F: retn

### FUNC 18000C160 - 18000C2F7 (407 bytes) name=SetFirmwareData
18000C160: push    rbx
18000C162: push    rbp
18000C163: push    rsi
18000C164: push    r15
18000C166: sub     rsp, 58h
18000C16A: mov     rax, cs:__security_cookie
18000C171: xor     rax, rsp
18000C174: mov     [rsp+78h+var_30], rax
18000C179: movsxd  rbp, edx
18000C17C: mov     r15, rcx
18000C17F: call    sub_18000B530
18000C184: mov     rcx, [rax+230h]
18000C18B: mov     rbx, [rcx+60h]
18000C18F: mov     rsi, [rcx+68h]
18000C193: cmp     rbx, rsi
18000C196: jz      loc_18000C2DA
18000C19C: mov     [rsp+78h+arg_10], rdi
18000C1A4: xor     edi, edi
18000C1A6: mov     [rsp+78h+var_28], r14
18000C1AB: nop     dword ptr [rax+rax+00h]
18000C1B0: mov     rcx, [rbx]
18000C1B3: lea     r9, off_1800158D0
18000C1BA: lea     r8, off_180015718
18000C1C1: mov     [rsp+78h+var_58], edi
18000C1C5: xor     edx, edx
18000C1C7: call    __RTDynamicCast
18000C1CC: mov     r14, rax
18000C1CF: test    rax, rax
18000C1D2: jnz     short loc_18000C1E2
18000C1D4: add     rbx, 8
18000C1D8: cmp     rbx, rsi
18000C1DB: jnz     short loc_18000C1B0
18000C1DD: jmp     loc_18000C2CD
18000C1E2: mov     [rsp+78h+var_38], rdi
18000C1E7: xorps   xmm0, xmm0
18000C1EA: movdqu  xmmword ptr [rsp+78h+Src], xmm0
18000C1F0: test    ebp, ebp
18000C1F2: jz      short loc_18000C219
18000C1F4: mov     rax, 7FFFFFFFFFFFFFFFh
18000C1FE: cmp     rbp, rax
18000C201: ja      loc_18000C2F1
18000C207: mov     rdx, rbp
18000C20A: lea     rcx, [rsp+78h+Src]
18000C20F: call    sub_18000C470
18000C214: mov     rdi, [rsp+78h+var_38]
18000C219: mov     rbx, [rsp+78h+Src]
18000C21E: mov     rax, rdi
18000C221: sub     rax, rbx
18000C224: cmp     rbp, rax
18000C227: jbe     short loc_18000C240
18000C229: mov     rdx, rbp
18000C22C: lea     rcx, [rsp+78h+Src]
18000C231: call    sub_180002BA0
18000C236: mov     rdi, [rsp+78h+var_38]
18000C23B: mov     rbx, [rsp+78h+Src]
18000C240: mov     r8, rbp; Size
18000C243: mov     rdx, r15; Src
18000C246: mov     rcx, rbx; void *
18000C249: call    memmove
18000C24E: lea     rax, [rsp+78h+Src]
18000C253: add     r14, 100h
18000C25A: cmp     r14, rax
18000C25D: jz      short loc_18000C292
18000C25F: mov     r15, [r14]
18000C262: mov     rax, [r14+10h]
18000C266: sub     rax, r15
18000C269: cmp     rbp, rax
18000C26C: jbe     short loc_18000C27C
18000C26E: mov     rdx, rbp
18000C271: mov     rcx, r14
18000C274: call    sub_180002BA0
18000C279: mov     r15, [r14]
18000C27C: mov     r8, rbp; Size
18000C27F: mov     rdx, rbx; Src
18000C282: mov     rcx, r15; void *
18000C285: call    memmove
18000C28A: lea     rax, [r15+rbp]
18000C28E: mov     [r14+8], rax
18000C292: test    rbx, rbx
18000C295: jz      short loc_18000C2CD
18000C297: sub     rdi, rbx
18000C29A: mov     rax, rbx
18000C29D: cmp     rdi, 1000h
18000C2A4: jb      short loc_18000C2C2
18000C2A6: mov     rbx, [rbx-8]
18000C2AA: add     rdi, 27h ; '''
18000C2AE: sub     rax, rbx
18000C2B1: add     rax, 0FFFFFFFFFFFFFFF8h
18000C2B5: cmp     rax, 1Fh
18000C2B9: jbe     short loc_18000C2C2
18000C2BB: call    cs:_invalid_parameter_noinfo_noreturn
18000C2C1: int     3; Trap to Debugger
18000C2C2: mov     rdx, rdi
18000C2C5: mov     rcx, rbx; Block
18000C2C8: call    j_j_free
18000C2CD: mov     rdi, [rsp+78h+arg_10]
18000C2D5: mov     r14, [rsp+78h+var_28]
18000C2DA: mov     rcx, [rsp+78h+var_30]
18000C2DF: xor     rcx, rsp; StackCookie
18000C2E2: call    __security_check_cookie
18000C2E7: add     rsp, 58h
18000C2EB: pop     r15
18000C2ED: pop     rsi
18000C2EE: pop     rbp
18000C2EF: pop     rbx
18000C2F0: retn
18000C2F1: call    sub_180002B80
18000C2F6: db 0CCh

### FUNC 18000C300 - 18000C37A (122 bytes) name=SetUpdateCallback
18000C300: mov     [rsp+arg_8], rbx
18000C305: mov     [rsp+arg_10], rsi
18000C30A: push    rdi
18000C30B: sub     rsp, 30h
18000C30F: mov     rsi, rcx
18000C312: call    sub_18000B530
18000C317: mov     rdx, [rax+230h]
18000C31E: mov     rbx, [rdx+60h]
18000C322: mov     rdi, [rdx+68h]
18000C326: cmp     rbx, rdi
18000C329: jz      short loc_18000C36A
18000C32B: mov     [rsp+38h+arg_0], rbp
18000C330: xor     ebp, ebp
18000C332: mov     rcx, [rbx]
18000C335: lea     r9, off_1800158D0
18000C33C: lea     r8, off_180015718
18000C343: mov     [rsp+38h+var_18], ebp
18000C347: xor     edx, edx
18000C349: call    __RTDynamicCast
18000C34E: test    rax, rax
18000C351: jnz     short loc_18000C35E
18000C353: add     rbx, 8
18000C357: cmp     rbx, rdi
18000C35A: jnz     short loc_18000C332
18000C35C: jmp     short loc_18000C365
18000C35E: mov     [rax+0D8h], rsi
18000C365: mov     rbp, [rsp+38h+arg_0]
18000C36A: mov     rbx, [rsp+38h+arg_8]
18000C36F: mov     rsi, [rsp+38h+arg_10]
18000C374: add     rsp, 30h
18000C378: pop     rdi
18000C379: retn

### FUNC 18000C380 - 18000C463 (227 bytes) name=StartUpdate
18000C380: mov     [rsp+arg_10], rbx
18000C385: push    rsi
18000C386: sub     rsp, 40h
18000C38A: call    sub_18000B530
18000C38F: mov     rcx, [rax+230h]
18000C396: mov     rbx, [rcx+60h]
18000C39A: mov     rsi, [rcx+68h]
18000C39E: cmp     rbx, rsi
18000C3A1: jz      short loc_18000C3E7
18000C3A3: mov     [rsp+48h+arg_0], rbp
18000C3A8: xor     ebp, ebp
18000C3AA: mov     [rsp+48h+arg_8], rdi
18000C3AF: nop
18000C3B0: mov     rcx, [rbx]
18000C3B3: lea     r9, off_1800158D0
18000C3BA: lea     r8, off_180015718
18000C3C1: mov     [rsp+48h+InitFlag], ebp
18000C3C5: xor     edx, edx
18000C3C7: call    __RTDynamicCast
18000C3CC: mov     rdi, rax
18000C3CF: test    rax, rax
18000C3D2: jnz     short loc_18000C3F2
18000C3D4: add     rbx, 8
18000C3D8: cmp     rbx, rsi
18000C3DB: jnz     short loc_18000C3B0
18000C3DD: mov     rbp, [rsp+48h+arg_0]
18000C3E2: mov     rdi, [rsp+48h+arg_8]
18000C3E7: mov     rbx, [rsp+48h+arg_10]
18000C3EC: add     rsp, 40h
18000C3F0: pop     rsi
18000C3F1: retn
18000C3F2: mov     ecx, 10h; Size
18000C3F7: call    ??2@YAPEAX_K@Z; operator new(unsigned __int64)
18000C3FC: lea     rcx, sub_1800091E0
18000C403: mov     r9, rax; ArgList
18000C406: lea     r8, StartAddress; StartAddress
18000C40D: xor     edx, edx; StackSize
18000C40F: mov     [rax+8], rcx
18000C413: lea     rcx, [rsp+48h+var_18+8]
18000C418: mov     [rsp+48h+ThrdAddr], rcx; ThrdAddr
18000C41D: xor     ecx, ecx; Security
18000C41F: mov     [rax], rdi
18000C422: mov     [rsp+48h+InitFlag], ebp; InitFlag
18000C426: call    cs:_beginthreadex
18000C42C: mov     qword ptr [rsp+48h+var_18], rax
18000C431: test    rax, rax
18000C434: jz      short loc_18000C453
18000C436: cmp     [rdi+120h], ebp
18000C43C: jnz     short loc_18000C44C
18000C43E: movaps  xmm0, xmmword ptr [rsp+48h+var_18]
18000C443: movups  xmmword ptr [rdi+118h], xmm0
18000C44A: jmp     short loc_18000C3DD
18000C44C: call    cs:terminate
18000C452: int     3; Trap to Debugger
18000C453: mov     ecx, 6
18000C458: mov     [rsp+48h+var_18+8], ebp
18000C45C: call    cs:?_Throw_Cpp_error@std@@YAXH@Z; std::_Throw_Cpp_error(int)
18000C462: db 0CCh

### FUNC 18000C470 - 18000C513 (163 bytes) name=sub_18000C470
18000C470: mov     [rsp+arg_0], rbx
18000C475: mov     [rsp+arg_8], rbp
18000C47A: mov     [rsp+arg_10], rsi
18000C47F: push    rdi
18000C480: sub     rsp, 20h
18000C484: mov     rbp, [rcx+8]
18000C488: mov     rdi, rdx
18000C48B: sub     rbp, [rcx]
18000C48E: mov     rsi, rcx
18000C491: cmp     rdx, 1000h
18000C498: jb      short loc_18000C4C2
18000C49A: lea     rcx, [rdx+27h]; Size
18000C49E: cmp     rcx, rdx
18000C4A1: jbe     short loc_18000C50D
18000C4A3: call    ??2@YAPEAX_K@Z; operator new(unsigned __int64)
18000C4A8: test    rax, rax
18000C4AB: jz      short loc_18000C4BB
18000C4AD: lea     rbx, [rax+27h]
18000C4B1: and     rbx, 0FFFFFFFFFFFFFFE0h
18000C4B5: mov     [rbx-8], rax
18000C4B9: jmp     short loc_18000C4D6
18000C4BB: call    cs:_invalid_parameter_noinfo_noreturn
18000C4C1: int     3; Trap to Debugger
18000C4C2: test    rdi, rdi
18000C4C5: jz      short loc_18000C4D4
18000C4C7: mov     rcx, rdi; Size
18000C4CA: call    ??2@YAPEAX_K@Z; operator new(unsigned __int64)
18000C4CF: mov     rbx, rax
18000C4D2: jmp     short loc_18000C4D6
18000C4D4: xor     ebx, ebx
18000C4D6: mov     rdx, [rsi]; Src
18000C4D9: mov     rcx, rbx; void *
18000C4DC: mov     r8, [rsi+8]
18000C4E0: sub     r8, rdx; Size
18000C4E3: call    memmove
18000C4E8: mov     r9, rdi
18000C4EB: mov     r8, rbp
18000C4EE: mov     rdx, rbx
18000C4F1: mov     rcx, rsi
18000C4F4: mov     rbx, [rsp+28h+arg_0]
18000C4F9: mov     rbp, [rsp+28h+arg_8]
18000C4FE: mov     rsi, [rsp+28h+arg_10]
18000C503: add     rsp, 20h
18000C507: pop     rdi
18000C508: jmp     sub_180007280
18000C50D: call    ?cancel_current_task@Concurrency@@YAXXZ; Concurrency::cancel_current_task(void)
18000C512: db 0CCh

### FUNC 18000C530 - 18000C551 (33 bytes) name=__security_check_cookie
18000C530: cmp     rcx, cs:__security_cookie
18000C537: bnd jnz short ReportFailure
18000C53A: rol     rcx, 10h
18000C53E: test    cx, 0FFFFh
18000C543: bnd jnz short RestoreRcx
18000C546: bnd retn
18000C548: ror     rcx, 10h; StackCookie
18000C54C: jmp     __report_gsfailure

### FUNC 18000C554 - 18000C590 (60 bytes) name=??2@YAPEAX_K@Z
18000C554: push    rbx
18000C556: sub     rsp, 20h
18000C55A: mov     rbx, rcx
18000C55D: jmp     short loc_18000C56E
18000C55F: mov     rcx, rbx; Size
18000C562: call    _callnewh
18000C567: test    eax, eax
18000C569: jz      short loc_18000C57E
18000C56B: mov     rcx, rbx; Size
18000C56E: call    malloc
18000C573: test    rax, rax
18000C576: jz      short loc_18000C55F
18000C578: add     rsp, 20h
18000C57C: pop     rbx
18000C57D: retn
18000C57E: cmp     rbx, 0FFFFFFFFFFFFFFFFh
18000C582: jz      short loc_18000C58A
18000C584: call    ?cancel_current_task@Concurrency@@YAXXZ_0
18000C589: align 2
18000C58A: call    ?cancel_current_task@Concurrency@@YAXXZ
18000C58F: align 10h

### FUNC 18000C590 - 18000C5C9 (57 bytes) name=__scrt_acquire_startup_lock
18000C590: sub     rsp, 28h
18000C594: call    ?__uncaught_exception@@YA_NXZ
18000C599: test    eax, eax
18000C59B: jz      short loc_18000C5BE
18000C59D: mov     rax, gs:30h
18000C5A6: mov     rcx, [rax+8]
18000C5AA: jmp     short loc_18000C5B1
18000C5AC: cmp     rcx, rax
18000C5AF: jz      short loc_18000C5C5
18000C5B1: xor     eax, eax
18000C5B3: lock cmpxchg cs:qword_1800159A8, rcx
18000C5BC: jnz     short loc_18000C5AC
18000C5BE: xor     al, al
18000C5C0: add     rsp, 28h
18000C5C4: retn
18000C5C5: mov     al, 1
18000C5C7: jmp     short loc_18000C5C0

### FUNC 18000C5CC - 18000C600 (52 bytes) name=__scrt_dllmain_after_initialize_c
18000C5CC: sub     rsp, 28h
18000C5D0: call    ?__uncaught_exception@@YA_NXZ
18000C5D5: test    eax, eax
18000C5D7: jz      short loc_18000C5E0
18000C5D9: call    __isa_available_init
18000C5DE: jmp     short loc_18000C5F9
18000C5E0: call    DllMain
18000C5E5: mov     ecx, eax; mode
18000C5E7: call    _configure_narrow_argv
18000C5EC: test    eax, eax
18000C5EE: jz      short loc_18000C5F4
18000C5F0: xor     al, al
18000C5F2: jmp     short loc_18000C5FB
18000C5F4: call    _initialize_narrow_environment
18000C5F9: mov     al, 1
18000C5FB: add     rsp, 28h
18000C5FF: retn

### FUNC 18000C600 - 18000C615 (21 bytes) name=__scrt_dllmain_before_initialize_c
18000C600: sub     rsp, 28h
18000C604: xor     ecx, ecx
18000C606: call    __scrt_initialize_onexit_tables
18000C60B: test    al, al
18000C60D: setnz   al
18000C610: add     rsp, 28h
18000C614: retn

### FUNC 18000C618 - 18000C640 (40 bytes) name=sub_18000C618
18000C618: sub     rsp, 28h
18000C61C: call    sub_18000D750
18000C621: test    al, al
18000C623: jnz     short loc_18000C629
18000C625: xor     al, al
18000C627: jmp     short loc_18000C63B
18000C629: call    sub_18000D750
18000C62E: test    al, al
18000C630: jnz     short loc_18000C639
18000C632: call    sub_18000D750
18000C637: jmp     short loc_18000C625
18000C639: mov     al, 1
18000C63B: add     rsp, 28h
18000C63F: retn

### FUNC 18000C640 - 18000C655 (21 bytes) name=__scrt_dllmain_crt_thread_detach
18000C640: sub     rsp, 28h
18000C644: call    sub_18000D750
18000C649: call    sub_18000D750
18000C64E: mov     al, 1
18000C650: add     rsp, 28h
18000C654: retn

### FUNC 18000C658 - 18000C6B8 (96 bytes) name=__scrt_dllmain_exception_filter
18000C658: mov     [rsp+arg_0], rbx
18000C65D: mov     [rsp+arg_8], rbp
18000C662: mov     [rsp+arg_10], rsi
18000C667: push    rdi
18000C668: sub     rsp, 20h
18000C66C: mov     rdi, r9
18000C66F: mov     rsi, r8
18000C672: mov     ebx, edx
18000C674: mov     rbp, rcx
18000C677: call    ?__uncaught_exception@@YA_NXZ
18000C67C: test    eax, eax
18000C67E: jnz     short loc_18000C696
18000C680: cmp     ebx, 1
18000C683: jnz     short loc_18000C696
18000C685: mov     r8, rsi
18000C688: xor     edx, edx
18000C68A: mov     rcx, rbp
18000C68D: mov     rax, rdi
18000C690: call    cs:__guard_dispatch_icall_fptr
18000C696: mov     rdx, [rsp+28h+ExceptionPtr]; ExceptionPtr
18000C69B: mov     ecx, [rsp+28h+ExceptionNum]; ExceptionNum
18000C69F: mov     rbx, [rsp+28h+arg_0]
18000C6A4: mov     rbp, [rsp+28h+arg_8]
18000C6A9: mov     rsi, [rsp+28h+arg_10]
18000C6AE: add     rsp, 20h
18000C6B2: pop     rdi
18000C6B3: jmp     _seh_filter_dll

### FUNC 18000C6B8 - 18000C6E8 (48 bytes) name=__scrt_dllmain_uninitialize_c
18000C6B8: sub     rsp, 28h
18000C6BC: call    ?__uncaught_exception@@YA_NXZ
18000C6C1: test    eax, eax
18000C6C3: jz      short loc_18000C6D5
18000C6C5: lea     rcx, Table; Table
18000C6CC: add     rsp, 28h
18000C6D0: jmp     _execute_onexit_table
18000C6D5: call    sub_18000D754
18000C6DA: test    eax, eax
18000C6DC: jnz     short loc_18000C6E3
18000C6DE: call    _cexit
18000C6E3: add     rsp, 28h
18000C6E7: retn

### FUNC 18000C6E8 - 18000C6FC (20 bytes) name=__scrt_dllmain_uninitialize_critical
18000C6E8: sub     rsp, 28h
18000C6EC: xor     ecx, ecx
18000C6EE: call    sub_18000D750
18000C6F3: add     rsp, 28h
18000C6F7: jmp     sub_18000D750

### FUNC 18000C6FC - 18000C745 (73 bytes) name=__scrt_initialize_crt
18000C6FC: push    rbx
18000C6FE: sub     rsp, 20h
18000C702: movzx   eax, cs:byte_1800159B0
18000C709: test    ecx, ecx
18000C70B: mov     ebx, 1
18000C710: cmovz   eax, ebx
18000C713: mov     cs:byte_1800159B0, al
18000C719: call    __isa_available_init
18000C71E: call    sub_18000D750
18000C723: test    al, al
18000C725: jnz     short loc_18000C72B
18000C727: xor     al, al
18000C729: jmp     short loc_18000C73F
18000C72B: call    sub_18000D750
18000C730: test    al, al
18000C732: jnz     short loc_18000C73D
18000C734: xor     ecx, ecx
18000C736: call    sub_18000D750
18000C73B: jmp     short loc_18000C727
18000C73D: mov     al, bl
18000C73F: add     rsp, 20h
18000C743: pop     rbx
18000C744: retn

### FUNC 18000C748 - 18000C7D3 (139 bytes) name=__scrt_initialize_onexit_tables
18000C748: push    rbx
18000C74A: sub     rsp, 20h
18000C74E: cmp     cs:byte_1800159B1, 0
18000C755: mov     ebx, ecx
18000C757: jnz     short loc_18000C7C0
18000C759: cmp     ecx, 1
18000C75C: ja      short loc_18000C7C8
18000C75E: call    ?__uncaught_exception@@YA_NXZ
18000C763: test    eax, eax
18000C765: jz      short loc_18000C78F
18000C767: test    ebx, ebx
18000C769: jnz     short loc_18000C78F
18000C76B: lea     rcx, Table; Table
18000C772: call    _initialize_onexit_table
18000C777: test    eax, eax
18000C779: jnz     short loc_18000C78B
18000C77B: lea     rcx, stru_1800159D0; Table
18000C782: call    _initialize_onexit_table
18000C787: test    eax, eax
18000C789: jz      short loc_18000C7B9
18000C78B: xor     al, al
18000C78D: jmp     short loc_18000C7C2
18000C78F: movdqa  xmm0, cs:xmmword_18000F5F0
18000C797: or      rax, 0FFFFFFFFFFFFFFFFh
18000C79B: movdqu  xmmword ptr cs:Table._first, xmm0
18000C7A3: mov     cs:Table._end, rax
18000C7AA: movdqu  xmmword ptr cs:stru_1800159D0._first, xmm0
18000C7B2: mov     cs:stru_1800159D0._end, rax
18000C7B9: mov     cs:byte_1800159B1, 1
18000C7C0: mov     al, 1
18000C7C2: add     rsp, 20h
18000C7C6: pop     rbx
18000C7C7: retn
18000C7C8: mov     ecx, 5
18000C7CD: call    __scrt_fastfail
18000C7D2: db 0CCh

### FUNC 18000C7D4 - 18000C86C (152 bytes) name=__scrt_is_nonwritable_in_current_image
18000C7D4: sub     rsp, 18h
18000C7D8: mov     r8, rcx
18000C7DB: mov     eax, 5A4Dh
18000C7E0: cmp     cs:180000000h, ax
18000C7E7: jnz     short loc_18000C861
18000C7E9: movsxd  rcx, dword ptr cs:18000003Ch
18000C7F0: lea     rdx, cs:180000000h
18000C7F7: add     rcx, rdx
18000C7FA: cmp     dword ptr [rcx], 4550h
18000C800: jnz     short loc_18000C861
18000C802: mov     eax, 20Bh
18000C807: cmp     [rcx+18h], ax
18000C80B: jnz     short loc_18000C861
18000C80D: sub     r8, rdx
18000C810: movzx   eax, word ptr [rcx+14h]
18000C814: lea     rdx, [rcx+18h]
18000C818: add     rdx, rax
18000C81B: movzx   eax, word ptr [rcx+6]
18000C81F: lea     rcx, [rax+rax*4]
18000C823: lea     r9, [rdx+rcx*8]
18000C827: mov     [rsp+18h+var_18], rdx
18000C82B: cmp     rdx, r9
18000C82E: jz      short loc_18000C848
18000C830: mov     ecx, [rdx+0Ch]
18000C833: cmp     r8, rcx
18000C836: jb      short loc_18000C842
18000C838: mov     eax, [rdx+8]
18000C83B: add     eax, ecx
18000C83D: cmp     r8, rax
18000C840: jb      short loc_18000C84A
18000C842: add     rdx, 28h ; '('
18000C846: jmp     short loc_18000C827
18000C848: xor     edx, edx
18000C84A: test    rdx, rdx
18000C84D: jnz     short loc_18000C853
18000C84F: xor     al, al
18000C851: jmp     short loc_18000C867
18000C853: cmp     dword ptr [rdx+24h], 0
18000C857: jge     short loc_18000C85D
18000C859: xor     al, al
18000C85B: jmp     short loc_18000C867
18000C85D: mov     al, 1
18000C85F: jmp     short loc_18000C867
18000C861: xor     al, al
18000C863: jmp     short loc_18000C867
18000C865: xor     al, al
18000C867: add     rsp, 18h
18000C86B: retn

### FUNC 18000C86C - 18000C890 (36 bytes) name=__scrt_release_startup_lock
18000C86C: push    rbx
18000C86E: sub     rsp, 20h
18000C872: mov     bl, cl
18000C874: call    ?__uncaught_exception@@YA_NXZ
18000C879: xor     edx, edx
18000C87B: test    eax, eax
18000C87D: jz      short loc_18000C88A
18000C87F: test    bl, bl
18000C881: jnz     short loc_18000C88A
18000C883: xchg    rdx, cs:qword_1800159A8
18000C88A: add     rsp, 20h
18000C88E: pop     rbx
18000C88F: retn

### FUNC 18000C890 - 18000C8B9 (41 bytes) name=__scrt_uninitialize_crt
18000C890: push    rbx
18000C892: sub     rsp, 20h
18000C896: cmp     cs:byte_1800159B0, 0
18000C89D: mov     bl, cl
18000C89F: jz      short loc_18000C8A5
18000C8A1: test    dl, dl
18000C8A3: jnz     short loc_18000C8B1
18000C8A5: call    sub_18000D750
18000C8AA: mov     cl, bl
18000C8AC: call    sub_18000D750
18000C8B1: mov     al, 1
18000C8B3: add     rsp, 20h
18000C8B7: pop     rbx
18000C8B8: retn

### FUNC 18000C8BC - 18000C8F6 (58 bytes) name=_onexit
18000C8BC: push    rbx
18000C8BE: sub     rsp, 20h
18000C8C2: cmp     cs:Table._first, 0FFFFFFFFFFFFFFFFh
18000C8CA: mov     rbx, rcx
18000C8CD: jnz     short loc_18000C8D6
18000C8CF: call    _crt_atexit
18000C8D4: jmp     short loc_18000C8E5
18000C8D6: mov     rdx, rbx; Function
18000C8D9: lea     rcx, Table; Table
18000C8E0: call    _register_onexit_function
18000C8E5: xor     edx, edx
18000C8E7: test    eax, eax
18000C8E9: cmovz   rdx, rbx
18000C8ED: mov     rax, rdx
18000C8F0: add     rsp, 20h
18000C8F4: pop     rbx
18000C8F5: retn

### FUNC 18000C8F8 - 18000C90F (23 bytes) name=atexit
18000C8F8: sub     rsp, 28h
18000C8FC: call    _onexit
18000C901: neg     rax
18000C904: sbb     eax, eax
18000C906: neg     eax
18000C908: dec     eax
18000C90A: add     rsp, 28h
18000C90E: retn

### FUNC 18000C910 - 18000C915 (5 bytes) name=j_j_free
18000C910: jmp     j_free

### FUNC 18000C918 - 18000C943 (43 bytes) name=sub_18000C918
18000C918: push    rbx
18000C91A: sub     rsp, 20h
18000C91E: lea     rax, off_18000F608
18000C925: mov     rbx, rcx
18000C928: mov     [rcx], rax
18000C92B: test    dl, 1
18000C92E: jz      short loc_18000C93A
18000C930: mov     edx, 18h
18000C935: call    j_j_free
18000C93A: mov     rax, rbx
18000C93D: add     rsp, 20h
18000C941: pop     rbx
18000C942: retn

### FUNC 18000C944 - 18000C978 (52 bytes) name=__raise_securityfailure
18000C944: push    rbx
18000C946: sub     rsp, 20h
18000C94A: mov     rbx, rcx
18000C94D: xor     ecx, ecx; lpTopLevelExceptionFilter
18000C94F: call    cs:SetUnhandledExceptionFilter
18000C955: mov     rcx, rbx; ExceptionInfo
18000C958: call    cs:UnhandledExceptionFilter
18000C95E: call    cs:GetCurrentProcess
18000C964: mov     rcx, rax
18000C967: mov     edx, 0C0000409h
18000C96C: add     rsp, 20h
18000C970: pop     rbx
18000C971: jmp     cs:TerminateProcess

### FUNC 18000C978 - 18000CA49 (209 bytes) name=__report_gsfailure
18000C978: mov     [rsp+arg_0], rcx
18000C97D: sub     rsp, 38h
18000C981: mov     ecx, 17h; ProcessorFeature
18000C986: call    IsProcessorFeaturePresent
18000C98B: test    eax, eax
18000C98D: jz      short loc_18000C996
18000C98F: mov     ecx, 2
18000C994: int     29h; Win8: RtlFailFast(ecx)
18000C996: lea     rcx, ContextRecord; ContextRecord
18000C99D: call    capture_previous_context
18000C9A2: mov     rax, [rsp+38h]
18000C9A7: mov     cs:ContextRecord.Rip, rax
18000C9AE: lea     rax, [rsp+38h]
18000C9B3: add     rax, 8
18000C9B7: mov     cs:ContextRecord.Rsp, rax
18000C9BE: mov     rax, cs:ContextRecord.Rip
18000C9C5: mov     cs:qword_180015A00, rax
18000C9CC: mov     rax, [rsp+38h+arg_0]
18000C9D1: mov     cs:ContextRecord.Rcx, rax
18000C9D8: mov     cs:dword_1800159F0, 0C0000409h
18000C9E2: mov     cs:dword_1800159F4, 1
18000C9EC: mov     cs:dword_180015A08, 1
18000C9F6: mov     eax, 8
18000C9FB: imul    rax, 0
18000C9FF: lea     rcx, unk_180015A10
18000CA06: mov     qword ptr [rcx+rax], 2
18000CA0E: mov     eax, 8
18000CA13: imul    rax, 0
18000CA17: mov     rcx, cs:__security_cookie
18000CA1E: mov     [rsp+rax+38h+var_18], rcx
18000CA23: mov     eax, 8
18000CA28: imul    rax, 1
18000CA2C: mov     rcx, cs:qword_180015008
18000CA33: mov     [rsp+rax+38h+var_18], rcx
18000CA38: lea     rcx, ExceptionInfo; ExceptionInfo
18000CA3F: call    __raise_securityfailure
18000CA44: add     rsp, 38h
18000CA48: retn

### FUNC 18000CA4C - 18000CA5F (19 bytes) name=__report_rangecheckfailure
18000CA4C: sub     rsp, 28h
18000CA50: mov     ecx, 8
18000CA55: call    __report_securityfailure
18000CA5A: add     rsp, 28h
18000CA5E: retn

### FUNC 18000CA60 - 18000CAFB (155 bytes) name=__report_securityfailure
18000CA60: mov     [rsp+arg_0], ecx
18000CA64: sub     rsp, 28h
18000CA68: mov     ecx, 17h; ProcessorFeature
18000CA6D: call    IsProcessorFeaturePresent
18000CA72: test    eax, eax
18000CA74: jz      short loc_18000CA7E
18000CA76: mov     eax, [rsp+28h+arg_0]
18000CA7A: mov     ecx, eax
18000CA7C: int     29h; Win8: RtlFailFast(ecx)
18000CA7E: lea     rcx, ContextRecord; ContextRecord
18000CA85: call    capture_current_context
18000CA8A: mov     rax, [rsp+28h]
18000CA8F: mov     cs:ContextRecord.Rip, rax
18000CA96: lea     rax, [rsp+28h]
18000CA9B: add     rax, 8
18000CA9F: mov     cs:ContextRecord.Rsp, rax
18000CAA6: mov     rax, cs:ContextRecord.Rip
18000CAAD: mov     cs:qword_180015A00, rax
18000CAB4: mov     cs:dword_1800159F0, 0C0000409h
18000CABE: mov     cs:dword_1800159F4, 1
18000CAC8: mov     cs:dword_180015A08, 1
18000CAD2: mov     eax, 8
18000CAD7: imul    rax, 0
18000CADB: lea     rcx, unk_180015A10
18000CAE2: mov     edx, [rsp+28h+arg_0]
18000CAE6: mov     [rcx+rax], rdx
18000CAEA: lea     rcx, ExceptionInfo; ExceptionInfo
18000CAF1: call    __raise_securityfailure
18000CAF6: add     rsp, 28h
18000CAFA: retn

### FUNC 18000CAFC - 18000CB69 (109 bytes) name=capture_current_context
18000CAFC: mov     [rsp+arg_18], rbx
18000CB01: push    rdi
18000CB02: sub     rsp, 40h
18000CB06: mov     rbx, rcx
18000CB09: call    cs:RtlCaptureContext
18000CB0F: mov     rdi, [rbx+0F8h]
18000CB16: lea     rdx, [rsp+48h+ImageBase]; ImageBase
18000CB1B: mov     rcx, rdi; ControlPc
18000CB1E: xor     r8d, r8d; HistoryTable
18000CB21: call    cs:RtlLookupFunctionEntry
18000CB27: test    rax, rax
18000CB2A: jz      short loc_18000CB5E
18000CB2C: and     [rsp+48h+var_10], 0
18000CB32: lea     rcx, [rsp+48h+arg_8]
18000CB37: mov     rdx, [rsp+48h+ImageBase]; ImageBase
18000CB3C: mov     r9, rax; FunctionEntry
18000CB3F: mov     [rsp+48h+EstablisherFrame], rcx; EstablisherFrame
18000CB44: mov     r8, rdi; ControlPc
18000CB47: lea     rcx, [rsp+48h+arg_10]
18000CB4C: mov     [rsp+48h+HandlerData], rcx; HandlerData
18000CB51: xor     ecx, ecx; HandlerType
18000CB53: mov     [rsp+48h+ContextRecord], rbx; ContextRecord
18000CB58: call    cs:RtlVirtualUnwind
18000CB5E: mov     rbx, [rsp+48h+arg_18]
18000CB63: add     rsp, 40h
18000CB67: pop     rdi
18000CB68: retn

### FUNC 18000CB6C - 18000CBDD (113 bytes) name=capture_previous_context
18000CB6C: push    rbx
18000CB6E: push    rsi
18000CB6F: push    rdi
18000CB70: sub     rsp, 40h
18000CB74: mov     rbx, rcx
18000CB77: call    cs:RtlCaptureContext
18000CB7D: mov     rsi, [rbx+0F8h]
18000CB84: xor     edi, edi
18000CB86: xor     r8d, r8d; HistoryTable
18000CB89: lea     rdx, [rsp+58h+ImageBase]; ImageBase
18000CB8E: mov     rcx, rsi; ControlPc
18000CB91: call    cs:RtlLookupFunctionEntry
18000CB97: test    rax, rax
18000CB9A: jz      short loc_18000CBD5
18000CB9C: and     [rsp+58h+var_20], 0
18000CBA2: lea     rcx, [rsp+58h+arg_8]
18000CBA7: mov     rdx, [rsp+58h+ImageBase]; ImageBase
18000CBAC: mov     r9, rax; FunctionEntry
18000CBAF: mov     [rsp+58h+EstablisherFrame], rcx; EstablisherFrame
18000CBB4: mov     r8, rsi; ControlPc
18000CBB7: lea     rcx, [rsp+58h+arg_10]
18000CBBC: mov     [rsp+58h+HandlerData], rcx; HandlerData
18000CBC1: xor     ecx, ecx; HandlerType
18000CBC3: mov     [rsp+58h+ContextRecord], rbx; ContextRecord
18000CBC8: call    cs:RtlVirtualUnwind
18000CBCE: inc     edi
18000CBD0: cmp     edi, 2
18000CBD3: jl      short loc_18000CB86
18000CBD5: add     rsp, 40h
18000CBD9: pop     rdi
18000CBDA: pop     rsi
18000CBDB: pop     rbx
18000CBDC: retn

### FUNC 18000CBE0 - 18000CCB0 (208 bytes) name=?__scrt_initialize_thread_safe_statics@@YAHXZ
18000CBE0: mov     [rsp+arg_0], rbx
18000CBE5: push    rdi
18000CBE6: sub     rsp, 20h
18000CBEA: mov     edx, 0FA0h; dwSpinCount
18000CBEF: lea     rcx, CriticalSection; lpCriticalSection
18000CBF6: call    cs:InitializeCriticalSectionAndSpinCount
18000CBFC: lea     rcx, ModuleName
18000CC03: call    cs:GetModuleHandleW
18000CC09: mov     rbx, rax
18000CC0C: test    rax, rax
18000CC0F: jnz     short loc_18000CC26
18000CC11: lea     rcx, aKernel32Dll_0
18000CC18: call    cs:GetModuleHandleW
18000CC1E: mov     rbx, rax
18000CC21: test    rax, rax
18000CC24: jz      short loc_18000CCA5
18000CC26: lea     rdx, ProcName
18000CC2D: mov     rcx, rbx; hModule
18000CC30: call    cs:GetProcAddress
18000CC36: lea     rdx, aWakeallconditi
18000CC3D: mov     rcx, rbx; hModule
18000CC40: mov     rdi, rax
18000CC43: call    cs:GetProcAddress
18000CC49: test    rdi, rdi
18000CC4C: jz      short loc_18000CC63
18000CC4E: test    rax, rax
18000CC51: jz      short loc_18000CC63
18000CC53: mov     cs:qword_180015F98, rdi
18000CC5A: mov     cs:qword_180015FA0, rax
18000CC61: jmp     short loc_18000CC81
18000CC63: xor     r9d, r9d; lpName
18000CC66: xor     r8d, r8d; bInitialState
18000CC69: xor     ecx, ecx; lpEventAttributes
18000CC6B: lea     edx, [r9+1]; bManualReset
18000CC6F: call    cs:CreateEventW
18000CC75: mov     cs:hHandle, rax
18000CC7C: test    rax, rax
18000CC7F: jz      short loc_18000CCA5
18000CC81: xor     ecx, ecx
18000CC83: call    __scrt_initialize_onexit_tables
18000CC88: test    al, al
18000CC8A: jz      short loc_18000CCA5
18000CC8C: lea     rcx, ?__scrt_uninitialize_thread_safe_statics@@YAXXZ; void (__cdecl *)()
18000CC93: call    atexit
18000CC98: mov     rbx, [rsp+28h+arg_0]
18000CC9D: xor     eax, eax
18000CC9F: add     rsp, 20h
18000CCA3: pop     rdi
18000CCA4: retn
18000CCA5: mov     ecx, 7
18000CCAA: call    __scrt_fastfail
18000CCAF: int     3; Trap to Debugger

### FUNC 18000CCB0 - 18000CCD8 (40 bytes) name=?__scrt_uninitialize_thread_safe_statics@@YAXXZ
18000CCB0: sub     rsp, 28h
18000CCB4: lea     rcx, CriticalSection; lpCriticalSection
18000CCBB: call    cs:DeleteCriticalSection
18000CCC1: mov     rcx, cs:hHandle; hObject
18000CCC8: test    rcx, rcx
18000CCCB: jz      short loc_18000CCD3
18000CCCD: call    cs:CloseHandle
18000CCD3: add     rsp, 28h
18000CCD7: retn

### FUNC 18000CCD8 - 18000CD08 (48 bytes) name=_Init_thread_abort
18000CCD8: push    rbx
18000CCDA: sub     rsp, 20h
18000CCDE: mov     rbx, rcx
18000CCE1: lea     rcx, CriticalSection; lpCriticalSection
18000CCE8: call    cs:EnterCriticalSection
18000CCEE: and     dword ptr [rbx], 0
18000CCF1: lea     rcx, CriticalSection; lpCriticalSection
18000CCF8: call    cs:LeaveCriticalSection
18000CCFE: add     rsp, 20h
18000CD02: pop     rbx
18000CD03: jmp     _Init_thread_notify

### FUNC 18000CD08 - 18000CD68 (96 bytes) name=_Init_thread_footer
18000CD08: push    rbx
18000CD0A: sub     rsp, 20h
18000CD0E: mov     rbx, rcx
18000CD11: lea     rcx, CriticalSection; lpCriticalSection
18000CD18: call    cs:EnterCriticalSection
18000CD1E: mov     eax, cs:dword_180015004
18000CD24: lea     rcx, CriticalSection; lpCriticalSection
18000CD2B: mov     edx, cs:TlsIndex
18000CD31: inc     eax
18000CD33: mov     cs:dword_180015004, eax
18000CD39: mov     [rbx], eax
18000CD3B: mov     rax, gs:58h
18000CD44: mov     r9d, 4
18000CD4A: mov     r8, [rax+rdx*8]
18000CD4E: mov     eax, cs:dword_180015004
18000CD54: mov     [r9+r8], eax
18000CD58: call    cs:LeaveCriticalSection
18000CD5E: add     rsp, 20h
18000CD62: pop     rbx
18000CD63: jmp     _Init_thread_notify

### FUNC 18000CD68 - 18000CDCF (103 bytes) name=_Init_thread_header
18000CD68: push    rbx
18000CD6A: sub     rsp, 20h
18000CD6E: mov     rbx, rcx
18000CD71: lea     rcx, CriticalSection; lpCriticalSection
18000CD78: call    cs:EnterCriticalSection
18000CD7E: cmp     dword ptr [rbx], 0
18000CD81: jnz     short loc_18000CD94
18000CD83: or      dword ptr [rbx], 0FFFFFFFFh
18000CD86: jmp     short loc_18000CDBC
18000CD88: mov     ecx, 64h ; 'd'; dwMilliseconds
18000CD8D: call    _Init_thread_wait
18000CD92: jmp     short loc_18000CD7E
18000CD94: cmp     dword ptr [rbx], 0FFFFFFFFh
18000CD97: jz      short loc_18000CD88
18000CD99: mov     rax, gs:58h
18000CDA2: mov     ecx, cs:TlsIndex
18000CDA8: mov     r8d, 4
18000CDAE: mov     rdx, [rax+rcx*8]
18000CDB2: mov     eax, cs:dword_180015004
18000CDB8: mov     [r8+rdx], eax
18000CDBC: lea     rcx, CriticalSection
18000CDC3: add     rsp, 20h
18000CDC7: pop     rbx
18000CDC8: jmp     cs:LeaveCriticalSection

### FUNC 18000CDD0 - 18000CE11 (65 bytes) name=_Init_thread_notify
18000CDD0: sub     rsp, 28h
18000CDD4: mov     rax, cs:qword_180015FA0
18000CDDB: test    rax, rax
18000CDDE: jz      short loc_18000CDF2
18000CDE0: lea     rcx, unk_180015F60
18000CDE7: add     rsp, 28h
18000CDEB: jmp     cs:__guard_dispatch_icall_fptr
18000CDF2: mov     rcx, cs:hHandle; hEvent
18000CDF9: call    cs:SetEvent
18000CDFF: mov     rcx, cs:hHandle
18000CE06: add     rsp, 28h
18000CE0A: jmp     cs:ResetEvent

### FUNC 18000CE14 - 18000CE77 (99 bytes) name=_Init_thread_wait
18000CE14: push    rbx
18000CE16: sub     rsp, 20h
18000CE1A: mov     rax, cs:qword_180015F98
18000CE21: mov     ebx, ecx
18000CE23: test    rax, rax
18000CE26: jz      short loc_18000CE45
18000CE28: mov     r8d, ecx
18000CE2B: lea     rdx, CriticalSection
18000CE32: lea     rcx, unk_180015F60
18000CE39: add     rsp, 20h
18000CE3D: pop     rbx
18000CE3E: jmp     cs:__guard_dispatch_icall_fptr
18000CE45: lea     rcx, CriticalSection; lpCriticalSection
18000CE4C: call    cs:LeaveCriticalSection
18000CE52: mov     rcx, cs:hHandle; hHandle
18000CE59: xor     r8d, r8d; bAlertable
18000CE5C: mov     edx, ebx; dwMilliseconds
18000CE5E: call    cs:WaitForSingleObjectEx
18000CE64: lea     rcx, CriticalSection
18000CE6B: add     rsp, 20h
18000CE6F: pop     rbx
18000CE70: jmp     cs:EnterCriticalSection

### FUNC 18000CE78 - 18000CE7D (5 bytes) name=j_??2@YAPEAX_K@Z
18000CE78: jmp     ??2@YAPEAX_K@Z

### FUNC 18000CE80 - 18000CED0 (80 bytes) name=?dllmain_crt_dispatch@@YAHQEAUHINSTANCE__@@KQEAX@Z
18000CE80: sub     rsp, 28h
18000CE84: test    edx, edx
18000CE86: jz      short loc_18000CEC1
18000CE88: sub     edx, 1
18000CE8B: jz      short loc_18000CEB5
18000CE8D: sub     edx, 1
18000CE90: jz      short loc_18000CEA8
18000CE92: cmp     edx, 1
18000CE95: jz      short loc_18000CEA1
18000CE97: mov     eax, 1
18000CE9C: add     rsp, 28h
18000CEA0: retn
18000CEA1: call    __scrt_dllmain_crt_thread_detach
18000CEA6: jmp     short loc_18000CEAD
18000CEA8: call    sub_18000C618
18000CEAD: movzx   eax, al
18000CEB0: add     rsp, 28h
18000CEB4: retn
18000CEB5: mov     rdx, r8; void *
18000CEB8: add     rsp, 28h
18000CEBC: jmp     ?dllmain_crt_process_attach@@YAHQEAUHINSTANCE__@@QEAX@Z
18000CEC1: test    r8, r8
18000CEC4: setnz   cl; bool
18000CEC7: add     rsp, 28h
18000CECB: jmp     ?dllmain_crt_process_detach@@YAH_N@Z

### FUNC 18000CED0 - 18000CFE6 (278 bytes) name=?dllmain_crt_process_attach@@YAHQEAUHINSTANCE__@@QEAX@Z
18000CED0: mov     [rsp+arg_0], rbx
18000CED5: mov     [rsp+arg_8], rsi
18000CEDA: mov     [rsp+arg_18], rdi
18000CEDF: push    r14
18000CEE1: sub     rsp, 20h
18000CEE5: mov     rsi, rdx
18000CEE8: mov     r14, rcx
18000CEEB: xor     ecx, ecx
18000CEED: call    __scrt_initialize_crt
18000CEF2: test    al, al
18000CEF4: jz      loc_18000CFC2
18000CEFA: call    __scrt_acquire_startup_lock
18000CEFF: mov     bl, al
18000CF01: mov     [rsp+28h+arg_10], al
18000CF05: mov     dil, 1
18000CF08: cmp     cs:dword_1800159A0, 0
18000CF0F: jnz     loc_18000CFDA
18000CF15: mov     cs:dword_1800159A0, 1
18000CF1F: call    __scrt_dllmain_before_initialize_c
18000CF24: test    al, al
18000CF26: jz      short loc_18000CF77
18000CF28: call    sub_18000D620
18000CF2D: call    sub_18000D5D8
18000CF32: call    __scrt_initialize_default_local_stdio_options
18000CF37: lea     rdx, Last; Last
18000CF3E: lea     rcx, First; First
18000CF45: call    _initterm_e
18000CF4A: test    eax, eax
18000CF4C: jnz     short loc_18000CF77
18000CF4E: call    __scrt_dllmain_after_initialize_c
18000CF53: test    al, al
18000CF55: jz      short loc_18000CF77
18000CF57: lea     rdx, qword_18000F598; Last
18000CF5E: lea     rcx, qword_18000F4E0; First
18000CF65: call    _initterm
18000CF6A: mov     cs:dword_1800159A0, 2
18000CF74: xor     dil, dil
18000CF77: mov     cl, bl
18000CF79: call    __scrt_release_startup_lock
18000CF7E: test    dil, dil
18000CF81: jnz     short loc_18000CFC2
18000CF83: call    sub_18000D618
18000CF88: mov     rbx, rax
18000CF8B: cmp     qword ptr [rax], 0
18000CF8F: jz      short loc_18000CFB5
18000CF91: mov     rcx, rax
18000CF94: call    __scrt_is_nonwritable_in_current_image
18000CF99: test    al, al
18000CF9B: jz      short loc_18000CFB5
18000CF9D: mov     r8, rsi
18000CFA0: mov     edx, 2
18000CFA5: mov     rcx, r14
18000CFA8: mov     rax, [rbx]
18000CFAB: mov     r9, cs:__guard_dispatch_icall_fptr
18000CFB2: call    r9 ; _guard_dispatch_icall_nop
18000CFB5: inc     cs:dword_180015FA8
18000CFBB: mov     eax, 1
18000CFC0: jmp     short loc_18000CFC4
18000CFC2: xor     eax, eax
18000CFC4: mov     rbx, [rsp+28h+arg_0]
18000CFC9: mov     rsi, [rsp+28h+arg_8]
18000CFCE: mov     rdi, [rsp+28h+arg_18]
18000CFD3: add     rsp, 20h
18000CFD7: pop     r14
18000CFD9: retn
18000CFDA: mov     ecx, 7
18000CFDF: call    __scrt_fastfail
18000CFE4: nop
18000CFE5: int     3; Trap to Debugger

### FUNC 18000CFE8 - 18000D06C (132 bytes) name=?dllmain_crt_process_detach@@YAH_N@Z
18000CFE8: mov     [rsp+arg_0], rbx
18000CFED: push    rdi
18000CFEE: sub     rsp, 30h
18000CFF2: mov     dil, cl
18000CFF5: mov     eax, cs:dword_180015FA8
18000CFFB: test    eax, eax
18000CFFD: jg      short loc_18000D00C
18000CFFF: xor     eax, eax
18000D001: mov     rbx, [rsp+38h+arg_0]
18000D006: add     rsp, 30h
18000D00A: pop     rdi
18000D00B: retn
18000D00C: dec     eax
18000D00E: mov     cs:dword_180015FA8, eax
18000D014: call    __scrt_acquire_startup_lock
18000D019: mov     bl, al
18000D01B: mov     [rsp+38h+var_18], al
18000D01F: cmp     cs:dword_1800159A0, 2
18000D026: jnz     short loc_18000D05F
18000D028: call    __scrt_dllmain_uninitialize_c
18000D02D: call    sub_18000D5E8
18000D032: call    sub_18000D65C
18000D037: and     cs:dword_1800159A0, 0
18000D03E: mov     cl, bl
18000D040: call    __scrt_release_startup_lock
18000D045: xor     edx, edx
18000D047: mov     cl, dil
18000D04A: call    __scrt_uninitialize_crt
18000D04F: neg     al
18000D051: sbb     ebx, ebx
18000D053: and     ebx, 1
18000D056: call    __scrt_dllmain_uninitialize_critical
18000D05B: mov     eax, ebx
18000D05D: jmp     short loc_18000D001
18000D05F: mov     ecx, 7
18000D064: call    __scrt_fastfail
18000D069: nop
18000D06A: nop
18000D06B: int     3; Trap to Debugger

### FUNC 18000D06C - 18000D19F (307 bytes) name=?dllmain_dispatch@@YAHQEAUHINSTANCE__@@KQEAX@Z
18000D06C: mov     rax, rsp
18000D06F: mov     [rax+20h], rbx
18000D073: mov     [rax+18h], r8
18000D077: mov     [rax+10h], edx
18000D07A: mov     [rax+8], rcx
18000D07E: push    rsi
18000D07F: push    rdi
18000D080: push    r14
18000D082: sub     rsp, 40h
18000D086: mov     rsi, r8
18000D089: mov     edi, edx
18000D08B: mov     r14, rcx
18000D08E: test    edx, edx
18000D090: jnz     short loc_18000D0A1
18000D092: cmp     cs:dword_180015FA8, edx
18000D098: jg      short loc_18000D0A1
18000D09A: xor     eax, eax
18000D09C: jmp     loc_18000D191
18000D0A1: lea     eax, [rdx-1]
18000D0A4: cmp     eax, 1
18000D0A7: ja      short loc_18000D0EE
18000D0A9: mov     rax, cs:qword_18000F6C8
18000D0B0: test    rax, rax
18000D0B3: jnz     short loc_18000D0BF
18000D0B5: mov     [rsp+58h+var_28], 1
18000D0BD: jmp     short loc_18000D0D3
18000D0BF: call    cs:__guard_dispatch_icall_fptr
18000D0C5: mov     ebx, eax
18000D0C7: mov     [rsp+58h+var_28], eax
18000D0CB: test    eax, eax
18000D0CD: jz      loc_18000D187
18000D0D3: mov     r8, rsi; void *
18000D0D6: mov     edx, edi; unsigned int
18000D0D8: mov     rcx, r14; HINSTANCE
18000D0DB: call    ?dllmain_crt_dispatch@@YAHQEAUHINSTANCE__@@KQEAX@Z
18000D0E0: mov     ebx, eax
18000D0E2: mov     [rsp+58h+var_28], eax
18000D0E6: test    eax, eax
18000D0E8: jz      loc_18000D187
18000D0EE: mov     r8, rsi; lpvReserved
18000D0F1: mov     edx, edi; fdwReason
18000D0F3: mov     rcx, r14; hinstDLL
18000D0F6: call    DllMain
18000D0FB: mov     ebx, eax
18000D0FD: mov     [rsp+58h+var_28], eax
18000D101: cmp     edi, 1
18000D104: jnz     short loc_18000D13E
18000D106: test    eax, eax
18000D108: jnz     short loc_18000D13E
18000D10A: mov     r8, rsi; lpvReserved
18000D10D: xor     edx, edx; fdwReason
18000D10F: mov     rcx, r14; hinstDLL
18000D112: call    DllMain
18000D117: mov     r8, rsi; void *
18000D11A: xor     edx, edx; unsigned int
18000D11C: mov     rcx, r14; HINSTANCE
18000D11F: call    ?dllmain_crt_dispatch@@YAHQEAUHINSTANCE__@@KQEAX@Z
18000D124: mov     rax, cs:qword_18000F6C8
18000D12B: test    rax, rax
18000D12E: jz      short loc_18000D13E
18000D130: mov     r8, rsi
18000D133: xor     edx, edx
18000D135: mov     rcx, r14
18000D138: call    cs:__guard_dispatch_icall_fptr
18000D13E: test    edi, edi
18000D140: jz      short loc_18000D147
18000D142: cmp     edi, 3
18000D145: jnz     short loc_18000D187
18000D147: mov     r8, rsi; void *
18000D14A: mov     edx, edi; unsigned int
18000D14C: mov     rcx, r14; HINSTANCE
18000D14F: call    ?dllmain_crt_dispatch@@YAHQEAUHINSTANCE__@@KQEAX@Z
18000D154: mov     ebx, eax
18000D156: mov     [rsp+58h+var_28], eax
18000D15A: test    eax, eax
18000D15C: jz      short loc_18000D187
18000D15E: mov     rax, cs:qword_18000F6C8
18000D165: test    rax, rax
18000D168: jnz     short loc_18000D173
18000D16A: lea     ebx, [rax+1]
18000D16D: mov     [rsp+58h+var_28], ebx
18000D171: jmp     short loc_18000D187
18000D173: mov     r8, rsi
18000D176: mov     edx, edi
18000D178: mov     rcx, r14
18000D17B: call    cs:__guard_dispatch_icall_fptr
18000D181: mov     ebx, eax
18000D183: mov     [rsp+58h+var_28], eax
18000D187: jmp     short loc_18000D18F
18000D189: xor     ebx, ebx
18000D18B: mov     [rsp+58h+var_28], ebx
18000D18F: mov     eax, ebx
18000D191: mov     rbx, [rsp+58h+arg_18]
18000D196: add     rsp, 40h
18000D19A: pop     r14
18000D19C: pop     rdi
18000D19D: pop     rsi
18000D19E: retn

### FUNC 18000D1A0 - 18000D1DD (61 bytes) name=DllEntryPoint
18000D1A0: mov     [rsp+arg_0], rbx
18000D1A5: mov     [rsp+arg_8], rsi
18000D1AA: push    rdi
18000D1AB: sub     rsp, 20h
18000D1AF: mov     rdi, r8
18000D1B2: mov     ebx, edx
18000D1B4: mov     rsi, rcx
18000D1B7: cmp     edx, 1
18000D1BA: jnz     short loc_18000D1C1
18000D1BC: call    __security_init_cookie
18000D1C1: mov     r8, rdi; void *
18000D1C4: mov     edx, ebx; unsigned int
18000D1C6: mov     rcx, rsi; HINSTANCE
18000D1C9: mov     rbx, [rsp+28h+arg_0]
18000D1CE: mov     rsi, [rsp+28h+arg_8]
18000D1D3: add     rsp, 20h
18000D1D7: pop     rdi
18000D1D8: jmp     ?dllmain_dispatch@@YAHQEAUHINSTANCE__@@KQEAX@Z

### FUNC 18000D1E0 - 18000D1FE (30 bytes) name=sub_18000D1E0
18000D1E0: and     qword ptr [rcx+10h], 0
18000D1E5: lea     rax, aBadAllocation; "bad allocation"
18000D1EC: mov     [rcx+8], rax
18000D1F0: lea     rax, off_18000F6F0
18000D1F7: mov     [rcx], rax
18000D1FA: mov     rax, rcx
18000D1FD: retn

### FUNC 18000D200 - 18000D220 (32 bytes) name=?cancel_current_task@Concurrency@@YAXXZ_0
18000D200: sub     rsp, 48h
18000D204: lea     rcx, [rsp+48h+pExceptionObject]
18000D209: call    sub_18000D1E0
18000D20E: lea     rdx, stru_180013270; pThrowInfo
18000D215: lea     rcx, [rsp+48h+pExceptionObject]; pExceptionObject
18000D21A: call    _CxxThrowException
18000D21F: align 20h

### FUNC 18000D220 - 18000D3C1 (417 bytes) name=__isa_available_init
18000D220: mov     [rsp+arg_8], rbx
18000D225: mov     [rsp+arg_10], rsi
18000D22A: push    rdi
18000D22B: sub     rsp, 10h
18000D22F: xor     eax, eax
18000D231: xor     ecx, ecx
18000D233: cpuid
18000D235: mov     r8d, ecx
18000D238: xor     r11d, r11d
18000D23B: mov     r9d, ebx
18000D23E: xor     r8d, 6C65746Eh
18000D245: xor     r9d, 756E6547h
18000D24C: mov     r10d, edx
18000D24F: mov     esi, eax
18000D251: xor     ecx, ecx
18000D253: lea     eax, [r11+1]
18000D257: or      r9d, r8d
18000D25A: cpuid
18000D25C: xor     r10d, 49656E69h
18000D263: mov     [rsp+18h+var_18], eax
18000D266: or      r9d, r10d
18000D269: mov     [rsp+18h+var_14], ebx
18000D26D: mov     edi, ecx
18000D26F: mov     [rsp+18h+var_10], ecx
18000D273: mov     [rsp+18h+var_C], edx
18000D277: jnz     short loc_18000D2C9
18000D279: or      cs:qword_180015020, 0FFFFFFFFFFFFFFFFh
18000D281: and     eax, 0FFF3FF0h
18000D286: cmp     eax, 106C0h
18000D28B: jz      short loc_18000D2B5
18000D28D: cmp     eax, 20660h
18000D292: jz      short loc_18000D2B5
18000D294: cmp     eax, 20670h
18000D299: jz      short loc_18000D2B5
18000D29B: add     eax, 0FFFCF9B0h
18000D2A0: cmp     eax, 20h ; ' '
18000D2A3: ja      short loc_18000D2C9
18000D2A5: mov     rcx, 100010001h
18000D2AF: bt      rcx, rax
18000D2B3: jnb     short loc_18000D2C9
18000D2B5: mov     r8d, cs:dword_180015FAC
18000D2BC: or      r8d, 1
18000D2C0: mov     cs:dword_180015FAC, r8d
18000D2C7: jmp     short loc_18000D2D0
18000D2C9: mov     r8d, cs:dword_180015FAC
18000D2D0: mov     eax, 7
18000D2D5: lea     r9d, [rax-5]
18000D2D9: cmp     esi, eax
18000D2DB: jl      short loc_18000D303
18000D2DD: xor     ecx, ecx
18000D2DF: cpuid
18000D2E1: mov     [rsp+18h+var_18], eax
18000D2E4: mov     r11d, ebx
18000D2E7: mov     [rsp+18h+var_14], ebx
18000D2EB: mov     [rsp+18h+var_10], ecx
18000D2EF: mov     [rsp+18h+var_C], edx
18000D2F3: bt      ebx, 9
18000D2F7: jnb     short loc_18000D303
18000D2F9: or      r8d, r9d
18000D2FC: mov     cs:dword_180015FAC, r8d
18000D303: mov     cs:dword_180015018, 1
18000D30D: mov     cs:dword_18001501C, r9d
18000D314: bt      edi, 14h
18000D318: jnb     loc_18000D3AF
18000D31E: mov     cs:dword_180015018, r9d
18000D325: mov     ebx, 6
18000D32A: mov     cs:dword_18001501C, ebx
18000D330: bt      edi, 1Bh
18000D334: jnb     short loc_18000D3AF
18000D336: bt      edi, 1Ch
18000D33A: jnb     short loc_18000D3AF
18000D33C: xor     ecx, ecx
18000D33E: xgetbv
18000D341: shl     rdx, 20h
18000D345: or      rdx, rax
18000D348: mov     [rsp+18h+arg_0], rdx
18000D34D: mov     rax, [rsp+18h+arg_0]
18000D352: and     al, bl
18000D354: cmp     al, bl
18000D356: jnz     short loc_18000D3AF
18000D358: mov     eax, cs:dword_18001501C
18000D35E: or      eax, 8
18000D361: mov     cs:dword_180015018, 3
18000D36B: mov     cs:dword_18001501C, eax
18000D371: test    r11b, 20h
18000D375: jz      short loc_18000D3AF
18000D377: or      eax, 20h
18000D37A: mov     cs:dword_180015018, 5
18000D384: mov     cs:dword_18001501C, eax
18000D38A: mov     eax, 0D0030000h
18000D38F: and     r11d, eax
18000D392: cmp     r11d, eax
18000D395: jnz     short loc_18000D3AF
18000D397: mov     rax, [rsp+18h+arg_0]
18000D39C: and     al, 0E0h
18000D39E: cmp     al, 0E0h
18000D3A0: jnz     short loc_18000D3AF
18000D3A2: or      cs:dword_18001501C, 40h
18000D3A9: mov     cs:dword_180015018, ebx
18000D3AF: mov     rbx, [rsp+18h+arg_8]
18000D3B4: xor     eax, eax
18000D3B6: mov     rsi, [rsp+18h+arg_10]
18000D3BB: add     rsp, 10h
18000D3BF: pop     rdi
18000D3C0: retn

### FUNC 18000D3C4 - 18000D3D0 (12 bytes) name=?__uncaught_exception@@YA_NXZ
18000D3C4: xor     eax, eax
18000D3C6: cmp     cs:dword_180015030, eax
18000D3CC: setnz   al
18000D3CF: retn

### FUNC 18000D3D0 - 18000D3D8 (8 bytes) name=sub_18000D3D0
18000D3D0: and     cs:dword_180015FB0, 0
18000D3D7: retn

### FUNC 18000D3D8 - 18000D522 (330 bytes) name=__scrt_fastfail
18000D3D8: mov     [rsp-8+arg_0], rbx
18000D3DD: push    rbp
18000D3DE: lea     rbp, [rsp-4C0h]
18000D3E6: sub     rsp, 5C0h
18000D3ED: mov     ebx, ecx
18000D3EF: mov     ecx, 17h; ProcessorFeature
18000D3F4: call    IsProcessorFeaturePresent
18000D3F9: test    eax, eax
18000D3FB: jz      short loc_18000D401
18000D3FD: mov     ecx, ebx
18000D3FF: int     29h; Win8: RtlFailFast(ecx)
18000D401: mov     ecx, 3
18000D406: call    sub_18000D3D0
18000D40B: xor     edx, edx; Val
18000D40D: lea     rcx, [rbp+4C0h+ContextRecord]; void *
18000D411: mov     r8d, 4D0h; Size
18000D417: call    memset
18000D41C: lea     rcx, [rbp+4C0h+ContextRecord]; ContextRecord
18000D420: call    cs:RtlCaptureContext
18000D426: mov     rbx, [rbp+4C0h+ContextRecord.Rip]
18000D42D: lea     rdx, [rbp+4C0h+ImageBase]; ImageBase
18000D434: mov     rcx, rbx; ControlPc
18000D437: xor     r8d, r8d; HistoryTable
18000D43A: call    cs:RtlLookupFunctionEntry
18000D440: test    rax, rax
18000D443: jz      short loc_18000D481
18000D445: and     [rsp+5C0h+var_588], 0
18000D44B: lea     rcx, [rbp+4C0h+arg_10]
18000D452: mov     rdx, [rbp+4C0h+ImageBase]; ImageBase
18000D459: mov     r9, rax; FunctionEntry
18000D45C: mov     [rsp+5C0h+EstablisherFrame], rcx; EstablisherFrame
18000D461: mov     r8, rbx; ControlPc
18000D464: lea     rcx, [rbp+4C0h+arg_18]
18000D46B: mov     [rsp+5C0h+HandlerData], rcx; HandlerData
18000D470: lea     rcx, [rbp+4C0h+ContextRecord]
18000D474: mov     [rsp+5C0h+var_5A0], rcx; ContextRecord
18000D479: xor     ecx, ecx; HandlerType
18000D47B: call    cs:RtlVirtualUnwind
18000D481: mov     rax, [rbp+4C8h]
18000D488: lea     rcx, [rsp+5C0h+var_570]; void *
18000D48D: mov     [rbp+4C0h+ContextRecord.Rip], rax
18000D494: xor     edx, edx; Val
18000D496: lea     rax, [rbp+4C8h]
18000D49D: mov     r8d, 98h; Size
18000D4A3: add     rax, 8
18000D4A7: mov     [rbp+4C0h+ContextRecord.Rsp], rax
18000D4AE: call    memset
18000D4B3: mov     rax, [rbp+4C8h]
18000D4BA: mov     [rsp+5C0h+var_560], rax
18000D4BF: mov     [rsp+5C0h+var_570], 40000015h
18000D4C7: mov     [rsp+5C0h+var_56C], 1
18000D4CF: call    cs:IsDebuggerPresent
18000D4D5: cmp     eax, 1
18000D4D8: lea     rax, [rsp+5C0h+var_570]
18000D4DD: mov     [rsp+5C0h+ExceptionInfo.ExceptionRecord], rax
18000D4E2: lea     rax, [rbp+4C0h+ContextRecord]
18000D4E6: setz    bl
18000D4E9: mov     [rsp+5C0h+ExceptionInfo.ContextRecord], rax
18000D4EE: xor     ecx, ecx; lpTopLevelExceptionFilter
18000D4F0: call    cs:SetUnhandledExceptionFilter
18000D4F6: lea     rcx, [rsp+5C0h+ExceptionInfo]; ExceptionInfo
18000D4FB: call    cs:UnhandledExceptionFilter
18000D501: test    eax, eax
18000D503: jnz     short loc_18000D511
18000D505: test    bl, bl
18000D507: jnz     short loc_18000D511
18000D509: lea     ecx, [rax+3]
18000D50C: call    sub_18000D3D0
18000D511: mov     rbx, [rsp+5C0h+arg_0]
18000D519: add     rsp, 5C0h
18000D520: pop     rbp
18000D521: retn

### FUNC 18000D524 - 18000D529 (5 bytes) name=j_free
18000D524: jmp     free

### FUNC 18000D52C - 18000D5D8 (172 bytes) name=__security_init_cookie
18000D52C: mov     [rsp-8+arg_18], rbx
18000D531: push    rbp
18000D532: mov     rbp, rsp
18000D535: sub     rsp, 20h
18000D539: mov     rax, cs:__security_cookie
18000D540: mov     rbx, 2B992DDFA232h
18000D54A: cmp     rax, rbx
18000D54D: jnz     short loc_18000D5C3
18000D54F: and     qword ptr [rbp+SystemTimeAsFileTime.dwLowDateTime], 0
18000D554: lea     rcx, [rbp+SystemTimeAsFileTime]; lpSystemTimeAsFileTime
18000D558: call    cs:GetSystemTimeAsFileTime
18000D55E: mov     rax, qword ptr [rbp+SystemTimeAsFileTime.dwLowDateTime]
18000D562: mov     [rbp+arg_0], rax
18000D566: call    cs:GetCurrentThreadId
18000D56C: mov     eax, eax
18000D56E: xor     [rbp+arg_0], rax
18000D572: call    cs:GetCurrentProcessId
18000D578: mov     eax, eax
18000D57A: lea     rcx, [rbp+PerformanceCount]; lpPerformanceCount
18000D57E: xor     [rbp+arg_0], rax
18000D582: call    cs:QueryPerformanceCounter
18000D588: mov     eax, dword ptr [rbp+PerformanceCount]
18000D58B: lea     rcx, [rbp+arg_0]
18000D58F: shl     rax, 20h
18000D593: xor     rax, qword ptr [rbp+PerformanceCount]
18000D597: xor     rax, [rbp+arg_0]
18000D59B: xor     rax, rcx
18000D59E: mov     rcx, 0FFFFFFFFFFFFh
18000D5A8: and     rax, rcx
18000D5AB: mov     rcx, 2B992DDFA233h
18000D5B5: cmp     rax, rbx
18000D5B8: cmovz   rax, rcx
18000D5BC: mov     cs:__security_cookie, rax
18000D5C3: mov     rbx, [rsp+20h+arg_18]
18000D5C8: not     rax
18000D5CB: mov     cs:qword_180015008, rax
18000D5D2: add     rsp, 20h
18000D5D6: pop     rbp
18000D5D7: retn

### FUNC 18000D5D8 - 18000D5E6 (14 bytes) name=sub_18000D5D8
18000D5D8: lea     rcx, unk_180015FC0
18000D5DF: jmp     cs:InitializeSListHead

### FUNC 18000D5E8 - 18000D5F4 (12 bytes) name=sub_18000D5E8
18000D5E8: lea     rcx, unk_180015FC0
18000D5EF: jmp     __std_type_info_destroy_list

### FUNC 18000D5F4 - 18000D5FC (8 bytes) name=sub_18000D5F4
18000D5F4: lea     rax, unk_180015FD0
18000D5FB: retn

### FUNC 18000D5FC - 18000D617 (27 bytes) name=__scrt_initialize_default_local_stdio_options
18000D5FC: sub     rsp, 28h
18000D600: call    sub_180002FC0
18000D605: or      qword ptr [rax], 24h
18000D609: call    sub_18000D5F4
18000D60E: or      qword ptr [rax], 2
18000D612: add     rsp, 28h
18000D616: retn

### FUNC 18000D618 - 18000D620 (8 bytes) name=sub_18000D618
18000D618: lea     rax, unk_1800160E8
18000D61F: retn

### FUNC 18000D620 - 18000D65C (60 bytes) name=sub_18000D620
18000D620: mov     [rsp+arg_0], rbx
18000D625: push    rdi
18000D626: sub     rsp, 20h
18000D62A: lea     rbx, unk_180011B20
18000D631: lea     rdi, unk_180011B20
18000D638: jmp     short loc_18000D64C
18000D63A: mov     rax, [rbx]
18000D63D: test    rax, rax
18000D640: jz      short loc_18000D648
18000D642: call    cs:__guard_dispatch_icall_fptr
18000D648: add     rbx, 8
18000D64C: cmp     rbx, rdi
18000D64F: jb      short loc_18000D63A
18000D651: mov     rbx, [rsp+28h+arg_0]
18000D656: add     rsp, 20h
18000D65A: pop     rdi
18000D65B: retn

### FUNC 18000D65C - 18000D698 (60 bytes) name=sub_18000D65C
18000D65C: mov     [rsp+arg_0], rbx
18000D661: push    rdi
18000D662: sub     rsp, 20h
18000D666: lea     rbx, unk_180011B30
18000D66D: lea     rdi, unk_180011B30
18000D674: jmp     short loc_18000D688
18000D676: mov     rax, [rbx]
18000D679: test    rax, rax
18000D67C: jz      short loc_18000D684
18000D67E: call    cs:__guard_dispatch_icall_fptr
18000D684: add     rbx, 8
18000D688: cmp     rbx, rdi
18000D68B: jb      short loc_18000D676
18000D68D: mov     rbx, [rsp+28h+arg_0]
18000D692: add     rsp, 20h
18000D696: pop     rdi
18000D697: retn

### FUNC 18000D6A0 - 18000D6A6 (6 bytes) name=?_Lock@?$basic_streambuf@DU?$char_traits@D@std@@@std@@UEAAXXZ
18000D6A0: jmp     cs:__imp_?_Lock@?$basic_streambuf@DU?$char_traits@D@std@@@std@@UEAAXXZ

### FUNC 18000D6A6 - 18000D6AC (6 bytes) name=?_Unlock@?$basic_streambuf@DU?$char_traits@D@std@@@std@@UEAAXXZ
18000D6A6: jmp     cs:__imp_?_Unlock@?$basic_streambuf@DU?$char_traits@D@std@@@std@@UEAAXXZ

### FUNC 18000D6AC - 18000D6B2 (6 bytes) name=?showmanyc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA_JXZ
18000D6AC: jmp     cs:__imp_?showmanyc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA_JXZ

### FUNC 18000D6B2 - 18000D6B8 (6 bytes) name=?uflow@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAHXZ
18000D6B2: jmp     cs:__imp_?uflow@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAHXZ

### FUNC 18000D6B8 - 18000D6BE (6 bytes) name=?xsgetn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA_JPEAD_J@Z
18000D6B8: jmp     cs:__imp_?xsgetn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA_JPEAD_J@Z

### FUNC 18000D6BE - 18000D6C4 (6 bytes) name=?xsputn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA_JPEBD_J@Z
18000D6BE: jmp     cs:__imp_?xsputn@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAA_JPEBD_J@Z

### FUNC 18000D6C4 - 18000D6CA (6 bytes) name=?setbuf@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAPEAV12@PEAD_J@Z
18000D6C4: jmp     cs:__imp_?setbuf@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAPEAV12@PEAD_J@Z

### FUNC 18000D6CA - 18000D6D0 (6 bytes) name=?sync@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAHXZ
18000D6CA: jmp     cs:__imp_?sync@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAHXZ

### FUNC 18000D6D0 - 18000D6D6 (6 bytes) name=?imbue@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAXAEBVlocale@2@@Z
18000D6D0: jmp     cs:__imp_?imbue@?$basic_streambuf@DU?$char_traits@D@std@@@std@@MEAAXAEBVlocale@2@@Z

### FUNC 18000D6D6 - 18000D6DC (6 bytes) name=__CxxFrameHandler4
18000D6D6: jmp     cs:__imp___CxxFrameHandler4

### FUNC 18000D6E2 - 18000D6E8 (6 bytes) name=__C_specific_handler
18000D6E2: jmp     cs:__imp___C_specific_handler

### FUNC 18000D6E8 - 18000D6EE (6 bytes) name=_CxxThrowException
18000D6E8: jmp     cs:__imp__CxxThrowException

### FUNC 18000D6EE - 18000D6F4 (6 bytes) name=memset
18000D6EE: jmp     cs:__imp_memset

### FUNC 18000D6F4 - 18000D6FA (6 bytes) name=__std_type_info_destroy_list
18000D6F4: jmp     cs:__imp___std_type_info_destroy_list

### FUNC 18000D6FA - 18000D700 (6 bytes) name=_callnewh
18000D6FA: jmp     cs:__imp__callnewh

### FUNC 18000D700 - 18000D706 (6 bytes) name=malloc
18000D700: jmp     cs:__imp_malloc

### FUNC 18000D706 - 18000D70C (6 bytes) name=_seh_filter_dll
18000D706: jmp     cs:__imp__seh_filter_dll

### FUNC 18000D70C - 18000D712 (6 bytes) name=_configure_narrow_argv
18000D70C: jmp     cs:__imp__configure_narrow_argv

### FUNC 18000D712 - 18000D718 (6 bytes) name=_initialize_narrow_environment
18000D712: jmp     cs:__imp__initialize_narrow_environment

### FUNC 18000D718 - 18000D71E (6 bytes) name=_initialize_onexit_table
18000D718: jmp     cs:__imp__initialize_onexit_table

### FUNC 18000D71E - 18000D724 (6 bytes) name=_register_onexit_function
18000D71E: jmp     cs:__imp__register_onexit_function

### FUNC 18000D724 - 18000D72A (6 bytes) name=_execute_onexit_table
18000D724: jmp     cs:__imp__execute_onexit_table

### FUNC 18000D72A - 18000D730 (6 bytes) name=_crt_atexit
18000D72A: jmp     cs:__imp__crt_atexit

### FUNC 18000D730 - 18000D736 (6 bytes) name=_cexit
18000D730: jmp     cs:__imp__cexit

### FUNC 18000D736 - 18000D73C (6 bytes) name=_initterm
18000D736: jmp     cs:__imp__initterm

### FUNC 18000D73C - 18000D742 (6 bytes) name=_initterm_e
18000D73C: jmp     cs:__imp__initterm_e

### FUNC 18000D742 - 18000D748 (6 bytes) name=free
18000D742: jmp     cs:__imp_free

### FUNC 18000D748 - 18000D74E (6 bytes) name=IsProcessorFeaturePresent
18000D748: jmp     cs:__imp_IsProcessorFeaturePresent

### FUNC 18000D750 - 18000D753 (3 bytes) name=sub_18000D750
18000D750: mov     al, 1
18000D752: retn

### FUNC 18000D754 - 18000D757 (3 bytes) name=sub_18000D754
18000D754: xor     eax, eax
18000D756: retn

### FUNC 18000D758 - 18000D775 (29 bytes) name=__GSHandlerCheck
18000D758: sub     rsp, 28h
18000D75C: mov     r8, [r9+38h]
18000D760: mov     rcx, rdx
18000D763: mov     rdx, r9
18000D766: call    __GSHandlerCheckCommon
18000D76B: mov     eax, 1
18000D770: add     rsp, 28h
18000D774: retn

### FUNC 18000D778 - 18000D7D3 (91 bytes) name=__GSHandlerCheckCommon
18000D778: push    rbx
18000D77A: mov     r11d, [r8]
18000D77D: mov     rbx, rdx
18000D780: and     r11d, 0FFFFFFF8h
18000D784: mov     r9, rcx
18000D787: test    byte ptr [r8], 4
18000D78B: mov     r10, rcx
18000D78E: jz      short loc_18000D7A3
18000D790: mov     eax, [r8+8]
18000D794: movsxd  r10, dword ptr [r8+4]
18000D798: neg     eax
18000D79A: add     r10, rcx
18000D79D: movsxd  rcx, eax
18000D7A0: and     r10, rcx
18000D7A3: movsxd  rax, r11d
18000D7A6: mov     rdx, [rax+r10]
18000D7AA: mov     rax, [rbx+10h]
18000D7AE: mov     ecx, [rax+8]
18000D7B1: mov     rax, [rbx+8]
18000D7B5: test    byte ptr [rcx+rax+3], 0Fh
18000D7BA: jz      short loc_18000D7C7
18000D7BC: movzx   eax, byte ptr [rcx+rax+3]
18000D7C1: and     eax, 0FFFFFFF0h
18000D7C4: add     r9, rax
18000D7C7: xor     r9, rdx
18000D7CA: mov     rcx, r9; StackCookie
18000D7CD: pop     rbx
18000D7CE: jmp     __security_check_cookie

### FUNC 18000D7D4 - 18000D853 (127 bytes) name=__GSHandlerCheck_EH4
18000D7D4: mov     rax, rsp
18000D7D7: mov     [rax+8], rbx
18000D7DB: mov     [rax+10h], rbp
18000D7DF: mov     [rax+18h], rsi
18000D7E3: mov     [rax+20h], rdi
18000D7E7: push    r14
18000D7E9: sub     rsp, 20h
18000D7ED: mov     rbx, [r9+38h]
18000D7F1: mov     rsi, rdx
18000D7F4: mov     r14, r8
18000D7F7: mov     rbp, rcx
18000D7FA: mov     rdx, r9
18000D7FD: mov     rcx, rsi
18000D800: mov     rdi, r9
18000D803: lea     r8, [rbx+4]
18000D807: call    __GSHandlerCheckCommon
18000D80C: mov     eax, [rbp+4]
18000D80F: and     al, 66h
18000D811: neg     al
18000D813: mov     eax, 1
18000D818: sbb     r8d, r8d
18000D81B: neg     r8d
18000D81E: add     r8d, eax
18000D821: test    [rbx+4], r8d
18000D825: jz      short loc_18000D838
18000D827: mov     r9, rdi
18000D82A: mov     r8, r14
18000D82D: mov     rdx, rsi
18000D830: mov     rcx, rbp
18000D833: call    __CxxFrameHandler4
18000D838: mov     rbx, [rsp+28h+arg_0]
18000D83D: mov     rbp, [rsp+28h+arg_8]
18000D842: mov     rsi, [rsp+28h+arg_10]
18000D847: mov     rdi, [rsp+28h+arg_18]
18000D84C: add     rsp, 20h
18000D850: pop     r14
18000D852: retn

### FUNC 18000D853 - 18000D859 (6 bytes) name=__RTDynamicCast
18000D853: jmp     cs:__imp___RTDynamicCast

### FUNC 18000D859 - 18000D85F (6 bytes) name=memchr
18000D859: jmp     cs:__imp_memchr

### FUNC 18000D85F - 18000D865 (6 bytes) name=memcmp
18000D85F: jmp     cs:__imp_memcmp

### FUNC 18000D865 - 18000D86B (6 bytes) name=memcpy
18000D865: jmp     cs:__imp_memcpy

### FUNC 18000D86B - 18000D871 (6 bytes) name=memmove
18000D86B: jmp     cs:__imp_memmove

### FUNC 18000D890 - 18000D892 (2 bytes) name=_guard_dispatch_icall_nop
18000D890: jmp     rax

### FUNC 18000D8A0 - 18000D8AC (12 bytes) name=unknown_libname_1
18000D8A0: lea     rcx, [rdx+30h]
18000D8A7: jmp     sub_1800024B0

### FUNC 18000D8AC - 18000D8B8 (12 bytes) name=unknown_libname_2
18000D8AC: lea     rcx, [rdx+30h]
18000D8B3: jmp     sub_1800024B0

### FUNC 18000D8B8 - 18000D8C4 (12 bytes) name=unknown_libname_3
18000D8B8: lea     rcx, [rdx+30h]
18000D8BF: jmp     sub_1800024B0

### FUNC 18000D8C4 - 18000D8D0 (12 bytes) name=unknown_libname_4
18000D8C4: lea     rcx, [rdx+30h]
18000D8CB: jmp     sub_1800024B0

### FUNC 18000D8F9 - 18000D905 (12 bytes) name=unknown_libname_5
18000D8F9: lea     rcx, [rdx+48h]
18000D900: jmp     unknown_libname_18; Microsoft VisualC v14 64bit runtime

### FUNC 18000D905 - 18000D911 (12 bytes) name=sub_18000D905
18000D905: lea     rcx, [rdx+0E8h]
18000D90C: jmp     sub_1800024B0

### FUNC 18000D911 - 18000D91D (12 bytes) name=sub_18000D911
18000D911: lea     rcx, [rdx+68h]
18000D918: jmp     unknown_libname_18; Microsoft VisualC v14 64bit runtime

### FUNC 18000D91D - 18000D929 (12 bytes) name=sub_18000D91D
18000D91D: lea     rcx, [rdx+0C8h]
18000D924: jmp     sub_1800024B0

### FUNC 18000D929 - 18000D935 (12 bytes) name=unknown_libname_6
18000D929: lea     rcx, [rdx+48h]
18000D930: jmp     unknown_libname_18; Microsoft VisualC v14 64bit runtime

### FUNC 18000D935 - 18000D941 (12 bytes) name=sub_18000D935
18000D935: lea     rcx, [rdx+0A8h]
18000D93C: jmp     sub_1800024B0

### FUNC 18000D941 - 18000D94D (12 bytes) name=sub_18000D941
18000D941: lea     rcx, [rdx+130h]
18000D948: jmp     sub_180002CA0

### FUNC 18000D94D - 18000D959 (12 bytes) name=?dtor$14@?0??_Makeloc@_Locimp@locale@std@@CAPEAV123@AEBV_Locinfo@3@HPEAV123@PEBV23@@Z@4HA
18000D94D: mov     rcx, [rdx+90h]
18000D954: jmp     sub_1800024B0

### FUNC 18000D970 - 18000D97C (12 bytes) name=sub_18000D970
18000D970: mov     rcx, [rdx+48h]
18000D977: jmp     sub_1800024B0

### FUNC 18000DA1C - 18000DA28 (12 bytes) name=sub_18000DA1C
18000DA1C: lea     rcx, [rdx+60h]
18000DA23: jmp     sub_1800042A0

### FUNC 18000DA60 - 18000DA6C (12 bytes) name=?dtor$0@?0??AllocateSegment@FairScheduleGroup@details@Concurrency@@MEAAPEAVScheduleGroupSegmentBase@23@PEAVSchedulingRing@23@PEAVlocation@3@@Z@4HA
18000DA60: mov     rcx, [rdx+68h]
18000DA67: jmp     sub_1800024B0

### FUNC 18000DA6C - 18000DA78 (12 bytes) name=?dtor$1@?0???0task_options@Concurrency@@QEAA@XZ@4HA
18000DA6C: mov     rcx, [rdx+50h]
18000DA73: jmp     loc_180001690

### FUNC 18000DAD8 - 18000DAE4 (12 bytes) name=sub_18000DAD8
18000DAD8: lea     rcx, [rdx+70h]
18000DADF: jmp     sub_1800042A0

### FUNC 18000DB70 - 18000DB7C (12 bytes) name=sub_18000DB70
18000DB70: lea     rcx, [rdx+120h]
18000DB77: jmp     unknown_libname_18; Microsoft VisualC v14 64bit runtime

### FUNC 18000DBBF - 18000DBCB (12 bytes) name=sub_18000DBBF
18000DBBF: lea     rcx, [rdx+140h]
18000DBC6: jmp     sub_1800042A0

### FUNC 18000DBCB - 18000DBD7 (12 bytes) name=?dtor$0@?0??do_put@?$num_put@DV?$ostreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@MEBA?AV?$ostreambuf_iterator@DU?$char_traits@D@std@@@2@V32@AEAVios_base@2@D_N@Z@4HA
18000DBCB: lea     rcx, [rdx+50h]
18000DBD2: jmp     sub_1800024B0

### FUNC 18000DBD7 - 18000DBE3 (12 bytes) name=?dtor$1@?0??do_put@?$num_put@DV?$ostreambuf_iterator@DU?$char_traits@D@std@@@std@@@std@@MEBA?AV?$ostreambuf_iterator@DU?$char_traits@D@std@@@2@V32@AEAVios_base@2@D_N@Z@4HA
18000DBD7: lea     rcx, [rdx+70h]
18000DBDE: jmp     sub_1800024B0

### FUNC 18000DBE3 - 18000DBEF (12 bytes) name=sub_18000DBE3
18000DBE3: lea     rcx, [rdx+70h]
18000DBEA: jmp     sub_1800024B0

### FUNC 18000DBF0 - 18000DBFC (12 bytes) name=sub_18000DBF0
18000DBF0: lea     rcx, [rdx+0E0h]
18000DBF7: jmp     sub_1800042A0

### FUNC 18000DBFC - 18000DC08 (12 bytes) name=unknown_libname_7
18000DBFC: lea     rcx, [rdx+48h]
18000DC03: jmp     sub_1800024B0

### FUNC 18000DC10 - 18000DC1C (12 bytes) name=sub_18000DC10
18000DC10: lea     rcx, [rdx+110h]
18000DC17: jmp     sub_1800042A0

### FUNC 18000DC1C - 18000DC28 (12 bytes) name=?dtor$0@?0??_wcstombs_l_helper@@YA_KPEADPEB_W_KPEAU__crt_locale_pointers@@@Z@4HA
18000DC1C: lea     rcx, [rdx+58h]
18000DC23: jmp     sub_1800024B0

### FUNC 18000DC30 - 18000DC3C (12 bytes) name=?dtor$0@?0???$__acrt_get_current_directory@U__crt_win32_buffer_internal_dynamic_resizing@@@@YAHAEAV?$__crt_win32_buffer@DU__crt_win32_buffer_internal_dynamic_resizing@@@@@Z@4HA
18000DC30: lea     rcx, [rdx+20h]
18000DC37: jmp     sub_180006DA0

### FUNC 18000DCB0 - 18000DCBC (12 bytes) name=?dtor$0@?0???$__acrt_get_current_directory@U__crt_win32_buffer_internal_dynamic_resizing@@@@YAHAEAV?$__crt_win32_buffer@DU__crt_win32_buffer_internal_dynamic_resizing@@@@@Z@4HA_0
18000DCB0: lea     rcx, [rdx+20h]
18000DCB7: jmp     sub_1800062E0

### FUNC 18000DCBC - 18000DCC8 (12 bytes) name=?dtor$0@?0???$__acrt_get_current_directory@U__crt_win32_buffer_internal_dynamic_resizing@@@@YAHAEAV?$__crt_win32_buffer@DU__crt_win32_buffer_internal_dynamic_resizing@@@@@Z@4HA_1
18000DCBC: lea     rcx, [rdx+20h]
18000DCC3: jmp     sub_1800062A0

### FUNC 18000DD2D - 18000DD39 (12 bytes) name=sub_18000DD2D
18000DD2D: lea     rcx, [rdx+28h]
18000DD34: jmp     sub_180006E10

### FUNC 18000DD50 - 18000DD5C (12 bytes) name=sub_18000DD50
18000DD50: lea     rcx, [rdx+130h]
18000DD57: jmp     sub_1800042A0

### FUNC 18000DD5C - 18000DD68 (12 bytes) name=sub_18000DD5C
18000DD5C: lea     rcx, [rdx+90h]
18000DD63: jmp     sub_1800024B0

### FUNC 18000DDAD - 18000DDB9 (12 bytes) name=sub_18000DDAD
18000DDAD: lea     rcx, [rdx+68h]
18000DDB4: jmp     loc_180007910

### FUNC 18000DDF0 - 18000DDFC (12 bytes) name=sub_18000DDF0
18000DDF0: lea     rcx, [rdx+140h]
18000DDF7: jmp     sub_180006EF0

### FUNC 18000DE00 - 18000DE0C (12 bytes) name=sub_18000DE00
18000DE00: lea     rcx, [rdx+210h]
18000DE07: jmp     sub_1800042A0

### FUNC 18000DE0C - 18000DE18 (12 bytes) name=unknown_libname_8
18000DE0C: lea     rcx, [rdx+80h]
18000DE13: jmp     sub_1800024B0

### FUNC 18000DE18 - 18000DE24 (12 bytes) name=sub_18000DE18
18000DE18: lea     rcx, [rdx+1F0h]
18000DE1F: jmp     sub_180006E90

### FUNC 18000DE30 - 18000DE3C (12 bytes) name=sub_18000DE30
18000DE30: lea     rcx, [rdx+28h]
18000DE37: jmp     sub_180002420

### FUNC 18000DE69 - 18000DE75 (12 bytes) name=sub_18000DE69
18000DE69: lea     rcx, [rdx+40h]
18000DE70: jmp     sub_180002480

### FUNC 18000DE80 - 18000DE8C (12 bytes) name=unknown_libname_9
18000DE80: lea     rcx, [rdx+48h]
18000DE87: jmp     sub_1800024B0

### FUNC 18000DE8C - 18000DE98 (12 bytes) name=sub_18000DE8C
18000DE8C: lea     rcx, [rdx+30h]
18000DE93: jmp     sub_180002420

### FUNC 18000DED5 - 18000DEE1 (12 bytes) name=unknown_libname_10
18000DED5: lea     rcx, [rdx+48h]
18000DEDC: jmp     sub_18000A2F0

### FUNC 18000DEE1 - 18000DEED (12 bytes) name=unknown_libname_11
18000DEE1: lea     rcx, [rdx+30h]
18000DEE8: jmp     sub_180002420

### FUNC 18000DEED - 18000DEF9 (12 bytes) name=unknown_libname_12
18000DEED: lea     rcx, [rdx+30h]
18000DEF4: jmp     sub_180002420

### FUNC 18000DEF9 - 18000DF05 (12 bytes) name=unknown_libname_13
18000DEF9: lea     rcx, [rdx+48h]
18000DF00: jmp     sub_1800024B0

### FUNC 18000DF10 - 18000DF1C (12 bytes) name=sub_18000DF10
18000DF10: mov     rcx, [rdx+38h]
18000DF17: jmp     sub_180002420

### FUNC 18000DF6D - 18000DF79 (12 bytes) name=?dtor$0@?0???$__acrt_get_current_directory@U__crt_win32_buffer_internal_dynamic_resizing@@@@YAHAEAV?$__crt_win32_buffer@DU__crt_win32_buffer_internal_dynamic_resizing@@@@@Z@4HA_2
18000DF6D: lea     rcx, [rdx+20h]
18000DF74: jmp     sub_180002480

### FUNC 18000DF80 - 18000DF8C (12 bytes) name=unknown_libname_14
18000DF80: lea     rcx, [rdx+48h]
18000DF87: jmp     sub_180002420

### FUNC 18000DF90 - 18000DF9C (12 bytes) name=sub_18000DF90
18000DF90: mov     rcx, [rdx+30h]
18000DF97: jmp     sub_180002420

### FUNC 18000DFB9 - 18000DFC5 (12 bytes) name=sub_18000DFB9
18000DFB9: lea     rcx, [rdx+38h]
18000DFC0: jmp     sub_180002480

### FUNC 18000DFE0 - 18000DFEC (12 bytes) name=sub_18000DFE0
18000DFE0: lea     rcx, [rdx+38h]
18000DFE7: jmp     sub_18000A2F0

### FUNC 18000DFEC - 18000DFF8 (12 bytes) name=?dtor$0@?0???$__acrt_get_current_directory@U__crt_win32_buffer_internal_dynamic_resizing@@@@YAHAEAV?$__crt_win32_buffer@DU__crt_win32_buffer_internal_dynamic_resizing@@@@@Z@4HA_3
18000DFEC: lea     rcx, [rdx+20h]
18000DFF3: jmp     sub_180002420

### FUNC 18000E020 - 18000E02C (12 bytes) name=sub_18000E020
18000E020: lea     rcx, [rdx+28h]
18000E027: jmp     sub_180002420

### FUNC 18000E180 - 18000E18C (12 bytes) name=sub_18000E180
18000E180: lea     rcx, [rdx+88h]
18000E187: jmp     sub_180002DA0

### FUNC 18000E18C - 18000E198 (12 bytes) name=unknown_libname_15
18000E18C: lea     rcx, [rdx+0A0h]
18000E193: jmp     sub_1800024B0

### FUNC 18000E1A8 - 18000E1B4 (12 bytes) name=unknown_libname_16
18000E1A8: lea     rcx, [rdx+0A0h]
18000E1AF: jmp     sub_180002CA0

### FUNC 18000E1B4 - 18000E1C0 (12 bytes) name=unknown_libname_17
18000E1B4: mov     rcx, [rdx+20h]
18000E1BB: jmp     sub_1800024B0

### FUNC 18000E200 - 18000E20C (12 bytes) name=?dtor$0@?0??_wcrtomb_s_l@@YAHQEAHQEAD_K_WQEAU_Mbstatet@@QEAU__crt_locale_pointers@@@Z@4HA
18000E200: lea     rcx, [rdx+50h]
18000E207: jmp     sub_180002420

### FUNC 18000E20C - 18000E218 (12 bytes) name=sub_18000E20C
18000E20C: lea     rcx, [rdx+38h]
18000E213: jmp     sub_180002420

### FUNC 18000E300 - 18000E362 (98 bytes) name=sub_18000E300
18000E300: sub     rsp, 28h
18000E304: mov     rcx, cs:Block; Block
18000E30B: test    rcx, rcx
18000E30E: jz      short loc_18000E35D
18000E310: mov     rdx, qword ptr cs:xmmword_180016068+8
18000E317: mov     rax, rcx
18000E31A: sub     rdx, rcx
18000E31D: cmp     rdx, 1000h
18000E324: jb      short loc_18000E342
18000E326: mov     rcx, [rcx-8]
18000E32A: add     rdx, 27h ; '''
18000E32E: sub     rax, rcx
18000E331: add     rax, 0FFFFFFFFFFFFFFF8h
18000E335: cmp     rax, 1Fh
18000E339: jbe     short loc_18000E342
18000E33B: call    cs:_invalid_parameter_noinfo_noreturn
18000E341: int     3; Trap to Debugger
18000E342: call    j_j_free
18000E347: xorps   xmm0, xmm0
18000E34A: mov     cs:Block, 0
18000E355: movdqu  cs:xmmword_180016068, xmm0
18000E35D: add     rsp, 28h
18000E361: retn

### FUNC 18000E370 - 18000E3D2 (98 bytes) name=sub_18000E370
18000E370: sub     rsp, 28h
18000E374: mov     rcx, cs:qword_180016000; Block
18000E37B: test    rcx, rcx
18000E37E: jz      short loc_18000E3CD
18000E380: mov     rdx, qword ptr cs:xmmword_180016008+8
18000E387: mov     rax, rcx
18000E38A: sub     rdx, rcx
18000E38D: cmp     rdx, 1000h
18000E394: jb      short loc_18000E3B2
18000E396: mov     rcx, [rcx-8]
18000E39A: add     rdx, 27h ; '''
18000E39E: sub     rax, rcx
18000E3A1: add     rax, 0FFFFFFFFFFFFFFF8h
18000E3A5: cmp     rax, 1Fh
18000E3A9: jbe     short loc_18000E3B2
18000E3AB: call    cs:_invalid_parameter_noinfo_noreturn
18000E3B1: int     3; Trap to Debugger
18000E3B2: call    j_j_free
18000E3B7: xorps   xmm0, xmm0
18000E3BA: mov     cs:qword_180016000, 0
18000E3C5: movdqu  cs:xmmword_180016008, xmm0
18000E3CD: add     rsp, 28h
18000E3D1: retn

### FUNC 18000E3E0 - 18000E442 (98 bytes) name=sub_18000E3E0
18000E3E0: sub     rsp, 28h
18000E3E4: mov     rcx, cs:qword_180016018; Block
18000E3EB: test    rcx, rcx
18000E3EE: jz      short loc_18000E43D
18000E3F0: mov     rdx, qword ptr cs:xmmword_180016020+8
18000E3F7: mov     rax, rcx
18000E3FA: sub     rdx, rcx
18000E3FD: cmp     rdx, 1000h
18000E404: jb      short loc_18000E422
18000E406: mov     rcx, [rcx-8]
18000E40A: add     rdx, 27h ; '''
18000E40E: sub     rax, rcx
18000E411: add     rax, 0FFFFFFFFFFFFFFF8h
18000E415: cmp     rax, 1Fh
18000E419: jbe     short loc_18000E422
18000E41B: call    cs:_invalid_parameter_noinfo_noreturn
18000E421: int     3; Trap to Debugger
18000E422: call    j_j_free
18000E427: xorps   xmm0, xmm0
18000E42A: mov     cs:qword_180016018, 0
18000E435: movdqu  cs:xmmword_180016020, xmm0
18000E43D: add     rsp, 28h
18000E441: retn

### FUNC 18000E450 - 18000E4B2 (98 bytes) name=sub_18000E450
18000E450: sub     rsp, 28h
18000E454: mov     rcx, cs:qword_180016090; Block
18000E45B: test    rcx, rcx
18000E45E: jz      short loc_18000E4AD
18000E460: mov     rdx, qword ptr cs:xmmword_180016098+8
18000E467: mov     rax, rcx
18000E46A: sub     rdx, rcx
18000E46D: cmp     rdx, 1000h
18000E474: jb      short loc_18000E492
18000E476: mov     rcx, [rcx-8]
18000E47A: add     rdx, 27h ; '''
18000E47E: sub     rax, rcx
18000E481: add     rax, 0FFFFFFFFFFFFFFF8h
18000E485: cmp     rax, 1Fh
18000E489: jbe     short loc_18000E492
18000E48B: call    cs:_invalid_parameter_noinfo_noreturn
18000E491: int     3; Trap to Debugger
18000E492: call    j_j_free
18000E497: xorps   xmm0, xmm0
18000E49A: mov     cs:qword_180016090, 0
18000E4A5: movdqu  cs:xmmword_180016098, xmm0
18000E4AD: add     rsp, 28h
18000E4B1: retn

### FUNC 18000E4C0 - 18000E522 (98 bytes) name=sub_18000E4C0
18000E4C0: sub     rsp, 28h
18000E4C4: mov     rcx, cs:qword_180016078; Block
18000E4CB: test    rcx, rcx
18000E4CE: jz      short loc_18000E51D
18000E4D0: mov     rdx, qword ptr cs:xmmword_180016080+8
18000E4D7: mov     rax, rcx
18000E4DA: sub     rdx, rcx
18000E4DD: cmp     rdx, 1000h
18000E4E4: jb      short loc_18000E502
18000E4E6: mov     rcx, [rcx-8]
18000E4EA: add     rdx, 27h ; '''
18000E4EE: sub     rax, rcx
18000E4F1: add     rax, 0FFFFFFFFFFFFFFF8h
18000E4F5: cmp     rax, 1Fh
18000E4F9: jbe     short loc_18000E502
18000E4FB: call    cs:_invalid_parameter_noinfo_noreturn
18000E501: int     3; Trap to Debugger
18000E502: call    j_j_free
18000E507: xorps   xmm0, xmm0
18000E50A: mov     cs:qword_180016078, 0
18000E515: movdqu  cs:xmmword_180016080, xmm0
18000E51D: add     rsp, 28h
18000E521: retn

### FUNC 18000E530 - 18000E592 (98 bytes) name=sub_18000E530
18000E530: sub     rsp, 28h
18000E534: mov     rcx, cs:qword_180016030; Block
18000E53B: test    rcx, rcx
18000E53E: jz      short loc_18000E58D
18000E540: mov     rdx, qword ptr cs:xmmword_180016038+8
18000E547: mov     rax, rcx
18000E54A: sub     rdx, rcx
18000E54D: cmp     rdx, 1000h
18000E554: jb      short loc_18000E572
18000E556: mov     rcx, [rcx-8]
18000E55A: add     rdx, 27h ; '''
18000E55E: sub     rax, rcx
18000E561: add     rax, 0FFFFFFFFFFFFFFF8h
18000E565: cmp     rax, 1Fh
18000E569: jbe     short loc_18000E572
18000E56B: call    cs:_invalid_parameter_noinfo_noreturn
18000E571: int     3; Trap to Debugger
18000E572: call    j_j_free
18000E577: xorps   xmm0, xmm0
18000E57A: mov     cs:qword_180016030, 0
18000E585: movdqu  cs:xmmword_180016038, xmm0
18000E58D: add     rsp, 28h
18000E591: retn

### FUNC 18000E5A0 - 18000E602 (98 bytes) name=sub_18000E5A0
18000E5A0: sub     rsp, 28h
18000E5A4: mov     rcx, cs:qword_1800160A8; Block
18000E5AB: test    rcx, rcx
18000E5AE: jz      short loc_18000E5FD
18000E5B0: mov     rdx, qword ptr cs:xmmword_1800160B0+8
18000E5B7: mov     rax, rcx
18000E5BA: sub     rdx, rcx
18000E5BD: cmp     rdx, 1000h
18000E5C4: jb      short loc_18000E5E2
18000E5C6: mov     rcx, [rcx-8]
18000E5CA: add     rdx, 27h ; '''
18000E5CE: sub     rax, rcx
18000E5D1: add     rax, 0FFFFFFFFFFFFFFF8h
18000E5D5: cmp     rax, 1Fh
18000E5D9: jbe     short loc_18000E5E2
18000E5DB: call    cs:_invalid_parameter_noinfo_noreturn
18000E5E1: int     3; Trap to Debugger
18000E5E2: call    j_j_free
18000E5E7: xorps   xmm0, xmm0
18000E5EA: mov     cs:qword_1800160A8, 0
18000E5F5: movdqu  cs:xmmword_1800160B0, xmm0
18000E5FD: add     rsp, 28h
18000E601: retn

### FUNC 18000E610 - 18000E672 (98 bytes) name=sub_18000E610
18000E610: sub     rsp, 28h
18000E614: mov     rcx, cs:qword_180016048; Block
18000E61B: test    rcx, rcx
18000E61E: jz      short loc_18000E66D
18000E620: mov     rdx, qword ptr cs:xmmword_180016050+8
18000E627: mov     rax, rcx
18000E62A: sub     rdx, rcx
18000E62D: cmp     rdx, 1000h
18000E634: jb      short loc_18000E652
18000E636: mov     rcx, [rcx-8]
18000E63A: add     rdx, 27h ; '''
18000E63E: sub     rax, rcx
18000E641: add     rax, 0FFFFFFFFFFFFFFF8h
18000E645: cmp     rax, 1Fh
18000E649: jbe     short loc_18000E652
18000E64B: call    cs:_invalid_parameter_noinfo_noreturn
18000E651: int     3; Trap to Debugger
18000E652: call    j_j_free
18000E657: xorps   xmm0, xmm0
18000E65A: mov     cs:qword_180016048, 0
18000E665: movdqu  cs:xmmword_180016050, xmm0
18000E66D: add     rsp, 28h
18000E671: retn

### FUNC 18000E680 - 18000E6ED (109 bytes) name=sub_18000E680
18000E680: sub     rsp, 28h
18000E684: mov     rdx, cs:qword_1800160D8
18000E68B: cmp     rdx, 8
18000E68F: jb      short loc_18000E6C6
18000E691: mov     rcx, cs:Src
18000E698: lea     rdx, ds:2[rdx*2]
18000E6A0: cmp     rdx, 1000h
18000E6A7: jb      short loc_18000E6C1
18000E6A9: mov     r8, [rcx-8]
18000E6AD: add     rdx, 27h ; '''
18000E6B1: sub     rcx, r8
18000E6B4: lea     rax, [rcx-8]
18000E6B8: cmp     rax, 1Fh
18000E6BC: ja      short loc_18000E6E6
18000E6BE: mov     rcx, r8; Block
18000E6C1: call    j_j_free
18000E6C6: xor     eax, eax
18000E6C8: mov     cs:qword_1800160D8, 7
18000E6D3: mov     cs:qword_1800160D0, rax
18000E6DA: mov     word ptr cs:Src, ax
18000E6E1: add     rsp, 28h
18000E6E5: retn
18000E6E6: call    cs:_invalid_parameter_noinfo_noreturn
18000E6EC: db 0CCh

### FUNC 18000E6F0 - 18000E75A (106 bytes) name=sub_18000E6F0
18000E6F0: sub     rsp, 28h
18000E6F4: mov     rdx, cs:qword_180015078
18000E6FB: cmp     rdx, 10h
18000E6FF: jb      short loc_18000E738
18000E701: mov     rcx, cs:qword_180015060; Block
18000E708: inc     rdx
18000E70B: mov     rax, rcx
18000E70E: cmp     rdx, 1000h
18000E715: jb      short loc_18000E733
18000E717: mov     rcx, [rcx-8]
18000E71B: add     rdx, 27h ; '''
18000E71F: sub     rax, rcx
18000E722: add     rax, 0FFFFFFFFFFFFFFF8h
18000E726: cmp     rax, 1Fh
18000E72A: jbe     short loc_18000E733
18000E72C: call    cs:_invalid_parameter_noinfo_noreturn
18000E732: int     3; Trap to Debugger
18000E733: call    j_j_free
18000E738: mov     cs:qword_180015070, 0
18000E743: mov     cs:qword_180015078, 0Fh
18000E74E: mov     byte ptr cs:qword_180015060, 0
18000E755: add     rsp, 28h
18000E759: retn

### FUNC 18000E760 - 18000E7CA (106 bytes) name=sub_18000E760
18000E760: sub     rsp, 28h
18000E764: mov     rdx, cs:qword_1800150B8
18000E76B: cmp     rdx, 10h
18000E76F: jb      short loc_18000E7A8
18000E771: mov     rcx, cs:qword_1800150A0; Block
18000E778: inc     rdx
18000E77B: mov     rax, rcx
18000E77E: cmp     rdx, 1000h
18000E785: jb      short loc_18000E7A3
18000E787: mov     rcx, [rcx-8]
18000E78B: add     rdx, 27h ; '''
18000E78F: sub     rax, rcx
18000E792: add     rax, 0FFFFFFFFFFFFFFF8h
18000E796: cmp     rax, 1Fh
18000E79A: jbe     short loc_18000E7A3
18000E79C: call    cs:_invalid_parameter_noinfo_noreturn
18000E7A2: int     3; Trap to Debugger
18000E7A3: call    j_j_free
18000E7A8: mov     cs:qword_1800150B0, 0
18000E7B3: mov     cs:qword_1800150B8, 0Fh
18000E7BE: mov     byte ptr cs:qword_1800150A0, 0
18000E7C5: add     rsp, 28h
18000E7C9: retn

### FUNC 18000E7D0 - 18000E83A (106 bytes) name=sub_18000E7D0
18000E7D0: sub     rsp, 28h
18000E7D4: mov     rdx, cs:qword_1800151F8
18000E7DB: cmp     rdx, 10h
18000E7DF: jb      short loc_18000E818
18000E7E1: mov     rcx, cs:qword_1800151E0; Block
18000E7E8: inc     rdx
18000E7EB: mov     rax, rcx
18000E7EE: cmp     rdx, 1000h
18000E7F5: jb      short loc_18000E813
18000E7F7: mov     rcx, [rcx-8]
18000E7FB: add     rdx, 27h ; '''
18000E7FF: sub     rax, rcx
18000E802: add     rax, 0FFFFFFFFFFFFFFF8h
18000E806: cmp     rax, 1Fh
18000E80A: jbe     short loc_18000E813
18000E80C: call    cs:_invalid_parameter_noinfo_noreturn
18000E812: int     3; Trap to Debugger
18000E813: call    j_j_free
18000E818: mov     cs:qword_1800151F0, 0
18000E823: mov     cs:qword_1800151F8, 0Fh
18000E82E: mov     byte ptr cs:qword_1800151E0, 0
18000E835: add     rsp, 28h
18000E839: retn

### FUNC 18000E840 - 18000E8AA (106 bytes) name=sub_18000E840
18000E840: sub     rsp, 28h
18000E844: mov     rdx, cs:qword_180015198
18000E84B: cmp     rdx, 10h
18000E84F: jb      short loc_18000E888
18000E851: mov     rcx, cs:qword_180015180; Block
18000E858: inc     rdx
18000E85B: mov     rax, rcx
18000E85E: cmp     rdx, 1000h
18000E865: jb      short loc_18000E883
18000E867: mov     rcx, [rcx-8]
18000E86B: add     rdx, 27h ; '''
18000E86F: sub     rax, rcx
18000E872: add     rax, 0FFFFFFFFFFFFFFF8h
18000E876: cmp     rax, 1Fh
18000E87A: jbe     short loc_18000E883
18000E87C: call    cs:_invalid_parameter_noinfo_noreturn
18000E882: int     3; Trap to Debugger
18000E883: call    j_j_free
18000E888: mov     cs:qword_180015190, 0
18000E893: mov     cs:qword_180015198, 0Fh
18000E89E: mov     byte ptr cs:qword_180015180, 0
18000E8A5: add     rsp, 28h
18000E8A9: retn

### FUNC 18000E8B0 - 18000E91A (106 bytes) name=sub_18000E8B0
18000E8B0: sub     rsp, 28h
18000E8B4: mov     rdx, cs:qword_1800150F8
18000E8BB: cmp     rdx, 10h
18000E8BF: jb      short loc_18000E8F8
18000E8C1: mov     rcx, cs:qword_1800150E0; Block
18000E8C8: inc     rdx
18000E8CB: mov     rax, rcx
18000E8CE: cmp     rdx, 1000h
18000E8D5: jb      short loc_18000E8F3
18000E8D7: mov     rcx, [rcx-8]
18000E8DB: add     rdx, 27h ; '''
18000E8DF: sub     rax, rcx
18000E8E2: add     rax, 0FFFFFFFFFFFFFFF8h
18000E8E6: cmp     rax, 1Fh
18000E8EA: jbe     short loc_18000E8F3
18000E8EC: call    cs:_invalid_parameter_noinfo_noreturn
18000E8F2: int     3; Trap to Debugger
18000E8F3: call    j_j_free
18000E8F8: mov     cs:qword_1800150F0, 0
18000E903: mov     cs:qword_1800150F8, 0Fh
18000E90E: mov     byte ptr cs:qword_1800150E0, 0
18000E915: add     rsp, 28h
18000E919: retn

### FUNC 18000E920 - 18000E98A (106 bytes) name=sub_18000E920
18000E920: sub     rsp, 28h
18000E924: mov     rdx, cs:qword_180015178
18000E92B: cmp     rdx, 10h
18000E92F: jb      short loc_18000E968
18000E931: mov     rcx, cs:qword_180015160; Block
18000E938: inc     rdx
18000E93B: mov     rax, rcx
18000E93E: cmp     rdx, 1000h
18000E945: jb      short loc_18000E963
18000E947: mov     rcx, [rcx-8]
18000E94B: add     rdx, 27h ; '''
18000E94F: sub     rax, rcx
18000E952: add     rax, 0FFFFFFFFFFFFFFF8h
18000E956: cmp     rax, 1Fh
18000E95A: jbe     short loc_18000E963
18000E95C: call    cs:_invalid_parameter_noinfo_noreturn
18000E962: int     3; Trap to Debugger
18000E963: call    j_j_free
18000E968: mov     cs:qword_180015170, 0
18000E973: mov     cs:qword_180015178, 0Fh
18000E97E: mov     byte ptr cs:qword_180015160, 0
18000E985: add     rsp, 28h
18000E989: retn

### FUNC 18000E990 - 18000E9FA (106 bytes) name=sub_18000E990
18000E990: sub     rsp, 28h
18000E994: mov     rdx, cs:qword_1800151D8
18000E99B: cmp     rdx, 10h
18000E99F: jb      short loc_18000E9D8
18000E9A1: mov     rcx, cs:qword_1800151C0; Block
18000E9A8: inc     rdx
18000E9AB: mov     rax, rcx
18000E9AE: cmp     rdx, 1000h
18000E9B5: jb      short loc_18000E9D3
18000E9B7: mov     rcx, [rcx-8]
18000E9BB: add     rdx, 27h ; '''
18000E9BF: sub     rax, rcx
18000E9C2: add     rax, 0FFFFFFFFFFFFFFF8h
18000E9C6: cmp     rax, 1Fh
18000E9CA: jbe     short loc_18000E9D3
18000E9CC: call    cs:_invalid_parameter_noinfo_noreturn
18000E9D2: int     3; Trap to Debugger
18000E9D3: call    j_j_free
18000E9D8: mov     cs:qword_1800151D0, 0
18000E9E3: mov     cs:qword_1800151D8, 0Fh
18000E9EE: mov     byte ptr cs:qword_1800151C0, 0
18000E9F5: add     rsp, 28h
18000E9F9: retn

### FUNC 18000EA00 - 18000EA6A (106 bytes) name=sub_18000EA00
18000EA00: sub     rsp, 28h
18000EA04: mov     rdx, cs:qword_180015138
18000EA0B: cmp     rdx, 10h
18000EA0F: jb      short loc_18000EA48
18000EA11: mov     rcx, cs:qword_180015120; Block
18000EA18: inc     rdx
18000EA1B: mov     rax, rcx
18000EA1E: cmp     rdx, 1000h
18000EA25: jb      short loc_18000EA43
18000EA27: mov     rcx, [rcx-8]
18000EA2B: add     rdx, 27h ; '''
18000EA2F: sub     rax, rcx
18000EA32: add     rax, 0FFFFFFFFFFFFFFF8h
18000EA36: cmp     rax, 1Fh
18000EA3A: jbe     short loc_18000EA43
18000EA3C: call    cs:_invalid_parameter_noinfo_noreturn
18000EA42: int     3; Trap to Debugger
18000EA43: call    j_j_free
18000EA48: mov     cs:qword_180015130, 0
18000EA53: mov     cs:qword_180015138, 0Fh
18000EA5E: mov     byte ptr cs:qword_180015120, 0
18000EA65: add     rsp, 28h
18000EA69: retn

### FUNC 18000EA70 - 18000EADA (106 bytes) name=sub_18000EA70
18000EA70: sub     rsp, 28h
18000EA74: mov     rdx, cs:qword_1800150D8
18000EA7B: cmp     rdx, 10h
18000EA7F: jb      short loc_18000EAB8
18000EA81: mov     rcx, cs:qword_1800150C0; Block
18000EA88: inc     rdx
18000EA8B: mov     rax, rcx
18000EA8E: cmp     rdx, 1000h
18000EA95: jb      short loc_18000EAB3
18000EA97: mov     rcx, [rcx-8]
18000EA9B: add     rdx, 27h ; '''
18000EA9F: sub     rax, rcx
18000EAA2: add     rax, 0FFFFFFFFFFFFFFF8h
18000EAA6: cmp     rax, 1Fh
18000EAAA: jbe     short loc_18000EAB3
18000EAAC: call    cs:_invalid_parameter_noinfo_noreturn
18000EAB2: int     3; Trap to Debugger
18000EAB3: call    j_j_free
18000EAB8: mov     cs:qword_1800150D0, 0
18000EAC3: mov     cs:qword_1800150D8, 0Fh
18000EACE: mov     byte ptr cs:qword_1800150C0, 0
18000EAD5: add     rsp, 28h
18000EAD9: retn

### FUNC 18000EAE0 - 18000EB4A (106 bytes) name=sub_18000EAE0
18000EAE0: sub     rsp, 28h
18000EAE4: mov     rdx, cs:qword_180015158
18000EAEB: cmp     rdx, 10h
18000EAEF: jb      short loc_18000EB28
18000EAF1: mov     rcx, cs:qword_180015140; Block
18000EAF8: inc     rdx
18000EAFB: mov     rax, rcx
18000EAFE: cmp     rdx, 1000h
18000EB05: jb      short loc_18000EB23
18000EB07: mov     rcx, [rcx-8]
18000EB0B: add     rdx, 27h ; '''
18000EB0F: sub     rax, rcx
18000EB12: add     rax, 0FFFFFFFFFFFFFFF8h
18000EB16: cmp     rax, 1Fh
18000EB1A: jbe     short loc_18000EB23
18000EB1C: call    cs:_invalid_parameter_noinfo_noreturn
18000EB22: int     3; Trap to Debugger
18000EB23: call    j_j_free
18000EB28: mov     cs:qword_180015150, 0
18000EB33: mov     cs:qword_180015158, 0Fh
18000EB3E: mov     byte ptr cs:qword_180015140, 0
18000EB45: add     rsp, 28h
18000EB49: retn

### FUNC 18000EB50 - 18000EBBA (106 bytes) name=sub_18000EB50
18000EB50: sub     rsp, 28h
18000EB54: mov     rdx, cs:qword_180015118
18000EB5B: cmp     rdx, 10h
18000EB5F: jb      short loc_18000EB98
18000EB61: mov     rcx, cs:qword_180015100; Block
18000EB68: inc     rdx
18000EB6B: mov     rax, rcx
18000EB6E: cmp     rdx, 1000h
18000EB75: jb      short loc_18000EB93
18000EB77: mov     rcx, [rcx-8]
18000EB7B: add     rdx, 27h ; '''
18000EB7F: sub     rax, rcx
18000EB82: add     rax, 0FFFFFFFFFFFFFFF8h
18000EB86: cmp     rax, 1Fh
18000EB8A: jbe     short loc_18000EB93
18000EB8C: call    cs:_invalid_parameter_noinfo_noreturn
18000EB92: int     3; Trap to Debugger
18000EB93: call    j_j_free
18000EB98: mov     cs:qword_180015110, 0
18000EBA3: mov     cs:qword_180015118, 0Fh
18000EBAE: mov     byte ptr cs:qword_180015100, 0
18000EBB5: add     rsp, 28h
18000EBB9: retn

### FUNC 18000EBC0 - 18000EC2A (106 bytes) name=sub_18000EBC0
18000EBC0: sub     rsp, 28h
18000EBC4: mov     rdx, cs:qword_1800151B8
18000EBCB: cmp     rdx, 10h
18000EBCF: jb      short loc_18000EC08
18000EBD1: mov     rcx, cs:qword_1800151A0; Block
18000EBD8: inc     rdx
18000EBDB: mov     rax, rcx
18000EBDE: cmp     rdx, 1000h
18000EBE5: jb      short loc_18000EC03
18000EBE7: mov     rcx, [rcx-8]
18000EBEB: add     rdx, 27h ; '''
18000EBEF: sub     rax, rcx
18000EBF2: add     rax, 0FFFFFFFFFFFFFFF8h
18000EBF6: cmp     rax, 1Fh
18000EBFA: jbe     short loc_18000EC03
18000EBFC: call    cs:_invalid_parameter_noinfo_noreturn
18000EC02: int     3; Trap to Debugger
18000EC03: call    j_j_free
18000EC08: mov     cs:qword_1800151B0, 0
18000EC13: mov     cs:qword_1800151B8, 0Fh
18000EC1E: mov     byte ptr cs:qword_1800151A0, 0
18000EC25: add     rsp, 28h
18000EC29: retn

### FUNC 18000EC30 - 18000EC9A (106 bytes) name=sub_18000EC30
18000EC30: sub     rsp, 28h
18000EC34: mov     rdx, cs:qword_180015058
18000EC3B: cmp     rdx, 10h
18000EC3F: jb      short loc_18000EC78
18000EC41: mov     rcx, cs:qword_180015040; Block
18000EC48: inc     rdx
18000EC4B: mov     rax, rcx
18000EC4E: cmp     rdx, 1000h
18000EC55: jb      short loc_18000EC73
18000EC57: mov     rcx, [rcx-8]
18000EC5B: add     rdx, 27h ; '''
18000EC5F: sub     rax, rcx
18000EC62: add     rax, 0FFFFFFFFFFFFFFF8h
18000EC66: cmp     rax, 1Fh
18000EC6A: jbe     short loc_18000EC73
18000EC6C: call    cs:_invalid_parameter_noinfo_noreturn
18000EC72: int     3; Trap to Debugger
18000EC73: call    j_j_free
18000EC78: mov     cs:qword_180015050, 0
18000EC83: mov     cs:qword_180015058, 0Fh
18000EC8E: mov     byte ptr cs:qword_180015040, 0
18000EC95: add     rsp, 28h
18000EC99: retn

### FUNC 18000ECA0 - 18000ED0A (106 bytes) name=sub_18000ECA0
18000ECA0: sub     rsp, 28h
18000ECA4: mov     rdx, cs:qword_180015098
18000ECAB: cmp     rdx, 10h
18000ECAF: jb      short loc_18000ECE8
18000ECB1: mov     rcx, cs:qword_180015080; Block
18000ECB8: inc     rdx
18000ECBB: mov     rax, rcx
18000ECBE: cmp     rdx, 1000h
18000ECC5: jb      short loc_18000ECE3
18000ECC7: mov     rcx, [rcx-8]
18000ECCB: add     rdx, 27h ; '''
18000ECCF: sub     rax, rcx
18000ECD2: add     rax, 0FFFFFFFFFFFFFFF8h
18000ECD6: cmp     rax, 1Fh
18000ECDA: jbe     short loc_18000ECE3
18000ECDC: call    cs:_invalid_parameter_noinfo_noreturn
18000ECE2: int     3; Trap to Debugger
18000ECE3: call    j_j_free
18000ECE8: mov     cs:Size, 0
18000ECF3: mov     cs:qword_180015098, 0Fh
18000ECFE: mov     byte ptr cs:qword_180015080, 0
18000ED05: add     rsp, 28h
18000ED09: retn

