Files
MAG160C/analysis/ida/export/thermalsdk_dll/all_functions_disasm.txt
T
ZXCLI 0bfb926892 完成官方管线全量逆向与 demo3 v5 复刻,清理仓库
- 逆向:Ghidra/IDA 全量反编译 CoreSDKLib.dll/ThermalSDK.dll/libthermalSDK.so/
  libcoresdk.so(ARM64)/libmagcore.so,导出 analysis/ida/export/
- 解码官方渲染管线:DDT 校准表加载->快门端点选择->Q12 插值->ref(4x type1 帧
  均值)->NUC 查表->盲元补偿->窗口->LUT1024 重建->2x 升采样->调色板
- 逐像素验证:NUC+盲元 0/19200、插值 0 误差、2x 0/76800、窗口一致
- demo3 v5:完整复刻官方管线(含 DDT 解析、FFC 状态机、快门温度驱动),
  修复 load_ddt 表错位导致的零像素问题
- 鬼影根因分析写入 analysis/reverse_20260813_full.md
- 心跳/恢复机制:analysis/session_state.md + tools/resume_rev.ps1
- 新增 tsdk_pair3 增强采集工具;历史工具归档 csdk/tools/legacy/;
  根目录抓帧残留删除,历史文档归档 analysis/history/
- csdk/README.md 完整使用文档;.gitignore/.gitattributes 补 LFS 规则
2026-08-13 23:16:12 +08:00

14297 lines
488 KiB
Plaintext

### 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