The Encrypted String module implements a compile time C/C++ string encryption and obfuscation to hide your static C/C++ strings.

Strings provide the most useful information while analyzing and Reverse Engineering a compiled native binary. When compiling a binary strings are put into segments at static addresses which can be analyzed by common disassemblers and referenced quite easily in your entire code base.

Because of that all of your debug strings, log messages, script registrations and everything else where you are using strings in a binary are like a glossary to your code. Especially programs that registers functions to script engines or use a lot of logging are very easy analyzable since the strings provide all the useful information.

Using the Encrypted String module allows you with little effort to hide any string in your binary and make it encrypted at compile time so diassemblers cannot analyze the strings.

When using the string it is decrypted on the stack.

Have a look at the example below to get an idea how this works.

Encrypted String Example

int main(int, char **) {
  
   // String which is not protected.
   printf ("[LOG]: Initialize super awesome program.\n");

   // Encrypted log strings.
   printf (TEXT ("[LOG]: Open database.\n"));
   printf (TEXT ("[LOG]: Decrypt database.\n"));
   printf (TEXT ("[LOG]: Get values from database.\n"));
   printf (TEXT ("[LOG]: Connect to service.\n"));
   printf (TEXT ("[LOG]: Download metadata.\n"));
   printf (TEXT ("[LOG]: Open GUI..\n"));

  // This creates and holds an encrypted string in memory.
  auto encrypted = OSTR("Encrypted very long string with a powerful meaning.");

  // ..and it is only decrypted while accessing it.
  std::cout << static_cast<::std::basic_string<char>>(encrypted).c_str()
            << std::endl;
  return 0;
}
Where are the other Strings?

The figure above shows that we are missing a lot of strings from our test programs.

What happened?

Using the TEXT() macro of antispy we encrypt the strings at compile time and a disassembler cannot find them anymore. This works on all platforms.

Encrypted String Assembly Output

Now, let us have a look at the compiled assembly code.

Control Flow Encrypted String main function

Oh, that’s quite a lot of code that is generated. IDA is failing to decompile this function now, even though we are not using any sort of control flow obfuscation.

Below you can check the assembly output and see how easy it is to read and see the unencrypted string. But.. check yourself for the other strings.

 ; int __cdecl main(int argc, const char **argv, const char **envp)
 main            proc near               ; CODE XREF: sub_140005FB8+107p

  mov     [rsp-8+arg_0], rbx
  mov     [rsp-8+arg_8], rsi
  mov     [rsp-8+arg_10], rdi
  push    rbp
  push    r12
  push    r13
  push    r14
  push    r15
  lea     rbp, [rsp-0EA0h]
  sub     rsp, 0FA0h
  mov     rax, cs:__security_cookie
  xor     rax, rsp
  mov     [rbp+0EC0h+var_30], rax
  lea     rcx, aLogInitializeS ; "[LOG]: Initialize super awesome program"...
                               ; Here we see how it loads the only not encrypted
                               ; string to RCX.
                               ; 
  call    sub_140005A80
  lea     rbx, loc_1400074E0
  mov     rcx, rbx
  call    sub_140002AB0
  test    rax, rax
  jnz     short loc_140002FFD
  lea     rax, unk_14000753C
  call    rax ; unk_14000753C
  lea     rax, unk_14000753E
  call    rax ; unk_14000753E
  call    rbx ; loc_1400074E0
  nop

loc_140002FFD:                          ; CODE XREF: main+56j
  xor     edi, edi
  mov     qword ptr [rbp+0EC0h+var_B38], rdi
  mov     qword ptr [rbp+0EC0h+var_B38+8], 0Fh
  mov     byte ptr [rbp+0EC0h+var_B48], dil
  mov     [rbp+0EC0h+var_BB8], rdi
  mov     qword ptr [rbp+0EC0h+var_A18], rdi
  mov     qword ptr [rbp+0EC0h+var_A18+8], 3
  mov     dword ptr [rbp+0EC0h+Memory], edi
  mov     [rbp+0EC0h+var_BB0], rdi
  mov     [rbp+0EC0h+var_F04], 5Bh
  mov     [rbp+0EC0h+var_420], 5Bh
  mov     [rbp+0EC0h+var_F00], 4Ch
  mov     [rbp+0EC0h+var_41C], 4Ch
  mov     [rbp+0EC0h+var_EFC], 4Fh
  mov     [rbp+0EC0h+var_418], 4Fh
  mov     [rbp+0EC0h+var_EF8], 47h
  mov     [rbp+0EC0h+var_414], 47h
  mov     [rbp+0EC0h+var_EF4], 5Dh
  mov     [rbp+0EC0h+var_410], 5Dh
  mov     [rbp+0EC0h+var_EF0], 3Ah
  mov     [rbp+0EC0h+var_40C], 3Ah
  mov     [rbp+0EC0h+var_EEC], 20h
  mov     [rbp+0EC0h+var_408], 20h
  mov     [rbp+0EC0h+var_EE8], 4Fh
  mov     [rbp+0EC0h+var_404], 4Fh
  mov     [rbp+0EC0h+var_EE4], 70h
  mov     [rbp+0EC0h+var_400], 70h
  mov     [rbp+0EC0h+var_EE0], 65h
  mov     [rbp+0EC0h+var_3FC], 65h
  mov     [rbp+0EC0h+var_EDC], 6Eh
  mov     [rbp+0EC0h+var_3F8], 6Eh
  mov     [rbp+0EC0h+var_ED8], 20h
  mov     [rbp+0EC0h+var_3F4], 20h
  mov     [rbp+0EC0h+var_ED4], 64h
  mov     [rbp+0EC0h+var_3F0], 64h
  mov     [rbp+0EC0h+var_ED0], 61h
  mov     [rbp+0EC0h+var_3EC], 61h
  mov     [rbp+0EC0h+var_ECC], 74h
  mov     [rbp+0EC0h+var_3E8], 74h
  mov     [rbp+0EC0h+var_EC8], 61h
  mov     [rbp+0EC0h+var_3E4], 61h
  mov     [rbp+0EC0h+var_EC4], 62h
  mov     [rbp+0EC0h+var_3E0], 62h
  mov     [rbp+0EC0h+var_EC0], 61h
  mov     [rbp+0EC0h+var_3DC], 61h
  mov     [rbp+0EC0h+var_EBC], 73h
  mov     [rbp+0EC0h+var_3D8], 73h
  mov     [rbp+0EC0h+var_EB8], 65h
  mov     [rbp+0EC0h+var_3D4], 65h
  mov     [rbp+0EC0h+var_EB4], 2Eh
  mov     [rbp+0EC0h+var_3D0], 2Eh
  mov     [rbp+0EC0h+var_EB0], 0Ah
  mov     [rbp+0EC0h+var_3CC], 0Ah
  mov     [rbp+0EC0h+var_EAC], edi
  mov     [rbp+0EC0h+Src], 5Bh
  mov     [rbp+0EC0h+var_84C], 4Ch
  mov     [rbp+0EC0h+var_848], 4Fh
  mov     [rbp+0EC0h+var_844], 47h
  mov     [rbp+0EC0h+var_840], 5Dh
  mov     [rbp+0EC0h+var_83C], 3Ah
  mov     [rbp+0EC0h+var_838], 20h
  mov     [rbp+0EC0h+var_834], 4Fh
  mov     [rbp+0EC0h+var_830], 70h
  mov     [rbp+0EC0h+var_82C], 65h
  mov     [rbp+0EC0h+var_828], 6Eh
  mov     [rbp+0EC0h+var_824], 20h
  mov     [rbp+0EC0h+var_820], 64h
  mov     [rbp+0EC0h+var_81C], 61h
  mov     [rbp+0EC0h+var_818], 74h
  mov     [rbp+0EC0h+var_814], 61h
  mov     [rbp+0EC0h+var_810], 62h
  mov     [rbp+0EC0h+var_80C], 61h
  mov     [rbp+0EC0h+var_808], 73h
  mov     [rbp+0EC0h+var_804], 65h
  mov     [rbp+0EC0h+var_800], 2Eh
  mov     [rbp+0EC0h+var_7FC], 0Ah
  mov     qword ptr [rbp+0EC0h+var_998], rdi
  mov     qword ptr [rbp+0EC0h+var_998+8], 3
  mov     dword ptr [rbp+0EC0h+Dst], edi
  lea     rax, [rbp+0EC0h+Src]
  mov     r8d, edi
  nop     word ptr [rax+rax+00000000h]

loc_1400032C0:                          ; CODE XREF: main+33Aj
  inc     r8
  lea     rax, [rax+4]
  cmp     dword ptr [rax], 0
  jnz     short loc_1400032C0
  lea     rdx, [rbp+0EC0h+Src] ; Src
  lea     rcx, [rbp+0EC0h+Dst] ; Dst
  call    sub_1400028E0
  mov     rdx, qword ptr [rbp+0EC0h+var_A18+8]
  cmp     rdx, 4
  jb      short loc_140003328
  lea     rdx, ds:4[rdx*4]
  mov     rcx, [rbp+0EC0h+Memory] ; Memory
  mov     rax, rcx
  cmp     rdx, 1000h
  jb      short loc_140003323
  add     rdx, 27h
  mov     rcx, [rcx-8]
  sub     rax, rcx
  add     rax, 0FFFFFFFFFFFFFFF8h
  cmp     rax, 1Fh
  jbe     short loc_140003323
  call    cs:_invalid_parameter_noinfo_noreturn
; ---------------------------------------------------------------------------
  int     3               ; Trap to Debugger
; ---------------------------------------------------------------------------

loc_140003323:                          ; CODE XREF: main+375j
                          ; main+38Aj
  call    j_j_free

loc_140003328:                          ; CODE XREF: main+35Aj
  movups  xmm0, [rbp+0EC0h+Dst]
  movups  xmmword ptr [rbp+0EC0h+Memory], xmm0
  movups  xmm1, [rbp+0EC0h+var_998]
  movups  [rbp+0EC0h+var_A18], xmm1
  mov     qword ptr [rbp+0EC0h+var_998], rdi
  mov     qword ptr [rbp+0EC0h+var_998+8], 3
  mov     dword ptr [rbp+0EC0h+Dst], edi
  lea     r8, [rbp+0EC0h+Memory]
  movq    rcx, xmm0
  psrldq  xmm1, 8
  movq    rax, xmm1
  cmp     rax, 4
  cmovnb  r8, rcx
  mov     r9, r8
  cmp     dword ptr [r8], 0
  jz      short loc_14000338D

loc_140003383:                          ; CODE XREF: main+3FBj
  add     r9, 4
  cmp     dword ptr [r9], 0
  jnz     short loc_140003383

loc_14000338D:                          ; CODE XREF: main+3F1j
  lea     rdx, [rbp+0EC0h+var_110]
  lea     rcx, off_14000A080
  call    sub_140002AF0
  mov     rdx, qword ptr [rbp+0EC0h+var_B38+8]
  cmp     rdx, 10h
  jb      short loc_1400033DD
  inc     rdx
  mov     rcx, [rbp+0EC0h+var_B48]
  mov     rax, rcx
  cmp     rdx, 1000h
  jb      short loc_1400033D8
  add     rdx, 27h
  mov     rcx, [rcx-8]    ; Memory
  sub     rax, rcx
  add     rax, 0FFFFFFFFFFFFFFF8h
  cmp     rax, 1Fh
  ja      short loc_14000344F

loc_1400033D8:                          ; CODE XREF: main+431j
  call    j_j_free

loc_1400033DD:                          ; CODE XREF: main+41Bj
  movups  xmm0, [rbp+0EC0h+var_110]
  movups  xmmword ptr [rbp+0EC0h+var_B48], xmm0
  movups  xmm1, [rbp+0EC0h+var_100]
  movups  [rbp+0EC0h+var_B38], xmm1
  mov     qword ptr [rbp+0EC0h+var_100], rdi
  mov     qword ptr [rbp+0EC0h+var_100+8], 0Fh
  mov     byte ptr [rbp+0EC0h+var_110], 0
  mov     rdx, qword ptr [rbp+0EC0h+var_A18+8]
  cmp     rdx, 4
  jb      short loc_14000345B
  lea     rdx, ds:4[rdx*4]
  mov     rcx, [rbp+0EC0h+Memory] ; Memory
  mov     rax, rcx
  cmp     rdx, 1000h
  jb      short loc_140003456
  add     rdx, 27h
  mov     rcx, [rcx-8]
  sub     rax, rcx
  add     rax, 0FFFFFFFFFFFFFFF8h
  cmp     rax, 1Fh
  jbe     short loc_140003456

loc_14000344F:                          ; CODE XREF: main+446j
  call    cs:_invalid_parameter_noinfo_noreturn
; ---------------------------------------------------------------------------
  int     3               ; Trap to Debugger
; ---------------------------------------------------------------------------

loc_140003456:                          ; CODE XREF: main+4A8j
                          ; main+4BDj
  call    j_j_free

loc_14000345B:                          ; CODE XREF: main+48Dj
  mov     qword ptr [rbp+0EC0h+var_A18], rdi
  mov     qword ptr [rbp+0EC0h+var_A18+8], 3
  mov     dword ptr [rbp+0EC0h+Memory], edi
  lea     rcx, [rbp+0EC0h+var_B48]
  cmp     qword ptr [rbp+0EC0h+var_B38+8], 10h
  cmovnb  rcx, [rbp+0EC0h+var_B48]
  call    sub_140005A80
  mov     rdx, qword ptr [rbp+0EC0h+var_B38+8]
  cmp     rdx, 10h
  jb      short loc_1400034D3
  inc     rdx
  mov     rcx, [rbp+0EC0h+var_B48] ; Memory
  mov     rax, rcx
  cmp     rdx, 1000h
  jb      short loc_1400034CE
  add     rdx, 27h
  mov     rcx, [rcx-8]
  sub     rax, rcx
  add     rax, 0FFFFFFFFFFFFFFF8h
  cmp     rax, 1Fh
  jbe     short loc_1400034CE
  call    cs:_invalid_parameter_noinfo_noreturn
; ---------------------------------------------------------------------------
  int     3               ; Trap to Debugger
; ---------------------------------------------------------------------------

loc_1400034CE:                          ; CODE XREF: main+520j
                          ; main+535j
  call    j_j_free

loc_1400034D3:                          ; CODE XREF: main+50Aj
  mov     qword ptr [rbp+0EC0h+var_B38], rdi
  mov     qword ptr [rbp+0EC0h+var_B38+8], 0Fh
  mov     byte ptr [rbp+0EC0h+var_B48], 0
  lea     rbx, sub_140007550
  mov     rcx, rbx
  call    sub_140002AE0
  test    rax, rax
  jnz     short loc_140003527
  lea     rax, unk_140007540
  call    rax ; unk_140007540
  lea     rax, unk_140007542
  call    rax ; unk_140007542
  lea     rax, unk_1400075B8
  call    rax ; unk_1400075B8
  lea     rax, unk_1400075BA
  call    rax ; unk_1400075BA
  call    rbx ; sub_140007550
  nop

loc_140003527:                          ; CODE XREF: main+56Ej
  mov     qword ptr [rbp+0EC0h+var_B18], rdi
  mov     qword ptr [rbp+0EC0h+var_B18+8], 0Fh
  mov     byte ptr [rbp+0EC0h+var_B28], 0
  mov     [rbp+0EC0h+var_BA8], rdi
  mov     qword ptr [rbp+0EC0h+var_9F8], rdi
  mov     qword ptr [rbp+0EC0h+var_9F8+8], 3
  mov     dword ptr [rbp+0EC0h+var_A08], edi
  mov     [rbp+0EC0h+var_BA0], rdi
  mov     [rbp+0EC0h+var_EA8], 5Bh
  mov     [rbp+0EC0h+var_3C0], 5Bh
  mov     [rbp+0EC0h+var_EA4], 4Ch
  mov     [rbp+0EC0h+var_3BC], 4Ch
  mov     [rbp+0EC0h+var_EA0], 4Fh
  mov     [rbp+0EC0h+var_3B8], 4Fh
  mov     [rbp+0EC0h+var_E9C], 47h
  mov     [rbp+0EC0h+var_3B4], 47h
  mov     [rbp+0EC0h+var_E98], 5Dh
  mov     [rbp+0EC0h+var_3B0], 5Dh
  mov     [rbp+0EC0h+var_E94], 3Ah
  mov     [rbp+0EC0h+var_3AC], 3Ah
  mov     [rbp+0EC0h+var_E90], 20h
  mov     [rbp+0EC0h+var_3A8], 20h
  mov     [rbp+0EC0h+var_E8C], 44h
  mov     [rbp+0EC0h+var_3A4], 44h
  mov     [rbp+0EC0h+var_E88], 65h
  mov     [rbp+0EC0h+var_3A0], 65h
  mov     [rbp+0EC0h+var_E84], 63h
  mov     [rbp+0EC0h+var_39C], 63h
  mov     [rbp+0EC0h+var_E80], 72h
  mov     [rbp+0EC0h+var_398], 72h
  mov     [rbp+0EC0h+var_E7C], 79h
  mov     [rbp+0EC0h+var_394], 79h
  mov     [rbp+0EC0h+var_E78], 70h
  mov     [rbp+0EC0h+var_390], 70h
  mov     [rbp+0EC0h+var_E74], 74h
  mov     [rbp+0EC0h+var_38C], 74h
  mov     [rbp+0EC0h+var_E70], 20h
  mov     [rbp+0EC0h+var_388], 20h
  mov     [rbp+0EC0h+var_E6C], 64h
  mov     [rbp+0EC0h+var_384], 64h
  mov     [rbp+0EC0h+var_E68], 61h
  mov     [rbp+0EC0h+var_380], 61h
  mov     [rbp+0EC0h+var_E64], 74h
  mov     [rbp+0EC0h+var_37C], 74h
  mov     [rbp+0EC0h+var_E60], 61h
  mov     [rbp+0EC0h+var_378], 61h
  mov     [rbp+0EC0h+var_E5C], 62h
  mov     [rbp+0EC0h+var_374], 62h
  mov     [rbp+0EC0h+var_E58], 61h
  mov     [rbp+0EC0h+var_370], 61h
  mov     [rbp+0EC0h+var_E54], 73h
  mov     [rbp+0EC0h+var_36C], 73h
  mov     [rbp+0EC0h+var_E50], 65h
  mov     [rbp+0EC0h+var_368], 65h
  mov     [rbp+0EC0h+var_E4C], 2Eh
  mov     [rbp+0EC0h+var_364], 2Eh
  mov     [rbp+0EC0h+var_E48], 0Ah
  mov     [rbp+0EC0h+var_360], 0Ah
  mov     [rbp+0EC0h+var_E44], edi
  mov     [rbp+0EC0h+var_7F0], 5Bh
  mov     [rbp+0EC0h+var_7EC], 4Ch
  mov     [rbp+0EC0h+var_7E8], 4Fh
  mov     [rbp+0EC0h+var_7E4], 47h
  mov     [rbp+0EC0h+var_7E0], 5Dh
  mov     [rbp+0EC0h+var_7DC], 3Ah
  mov     [rbp+0EC0h+var_7D8], 20h
  mov     [rbp+0EC0h+var_7D4], 44h
  mov     [rbp+0EC0h+var_7D0], 65h
  mov     [rbp+0EC0h+var_7CC], 63h
  mov     [rbp+0EC0h+var_7C8], 72h
  mov     [rbp+0EC0h+var_7C4], 79h
  mov     [rbp+0EC0h+var_7C0], 70h
  mov     [rbp+0EC0h+var_7BC], 74h
  mov     [rbp+0EC0h+var_7B8], 20h
  mov     [rbp+0EC0h+var_7B4], 64h
  mov     [rbp+0EC0h+var_7B0], 61h
  mov     [rbp+0EC0h+var_7AC], 74h
  mov     [rbp+0EC0h+var_7A8], 61h
  mov     [rbp+0EC0h+var_7A4], 62h
  mov     [rbp+0EC0h+var_7A0], 61h
  mov     [rbp+0EC0h+var_79C], 73h
  mov     [rbp+0EC0h+var_798], 65h
  mov     [rbp+0EC0h+var_794], 2Eh
  mov     [rbp+0EC0h+var_790], 0Ah
  mov     qword ptr [rbp+0EC0h+var_978], rdi
  mov     qword ptr [rbp+0EC0h+var_978+8], 3
  mov     dword ptr [rbp+0EC0h+var_988], edi
  lea     rax, [rbp+0EC0h+var_7F0]
  mov     r8, rdi

loc_140003830:                          ; CODE XREF: main+8AAj
  inc     r8
  lea     rax, [rax+4]
  cmp     dword ptr [rax], 0
  jnz     short loc_140003830
  lea     rdx, [rbp+0EC0h+var_7F0] ; Src
  lea     rcx, [rbp+0EC0h+var_988] ; Dst
  call    sub_1400028E0
  mov     rdx, qword ptr [rbp+0EC0h+var_9F8+8]
  cmp     rdx, 4
  jb      short loc_140003898
  lea     rdx, ds:4[rdx*4]
  mov     rcx, [rbp+0EC0h+var_A08] ; Memory
  mov     rax, rcx
  cmp     rdx, 1000h
  jb      short loc_140003893
  add     rdx, 27h
  mov     rcx, [rcx-8]
  sub     rax, rcx
  add     rax, 0FFFFFFFFFFFFFFF8h
  cmp     rax, 1Fh
  jbe     short loc_140003893
  call    cs:_invalid_parameter_noinfo_noreturn
; ---------------------------------------------------------------------------
  int     3               ; Trap to Debugger
; ---------------------------------------------------------------------------

loc_140003893:                          ; CODE XREF: main+8E5j
                          ; main+8FAj
  call    j_j_free

loc_140003898:                          ; CODE XREF: main+8CAj
  movups  xmm0, [rbp+0EC0h+var_988]
  movups  xmmword ptr [rbp+0EC0h+var_A08], xmm0
  movups  xmm1, [rbp+0EC0h+var_978]
  movups  [rbp+0EC0h+var_9F8], xmm1
  mov     qword ptr [rbp+0EC0h+var_978], rdi
  mov     qword ptr [rbp+0EC0h+var_978+8], 3
  mov     dword ptr [rbp+0EC0h+var_988], edi
  lea     r8, [rbp+0EC0h+var_A08]
  movq    rcx, xmm0
  psrldq  xmm1, 8
  movq    rax, xmm1
  cmp     rax, 4
  cmovnb  r8, rcx
  mov     r9, r8
  cmp     dword ptr [r8], 0
  jz      short loc_1400038FD

loc_1400038F3:                          ; CODE XREF: main+96Bj
  add     r9, 4
  cmp     dword ptr [r9], 0
  jnz     short loc_1400038F3

loc_1400038FD:                          ; CODE XREF: main+961j
  lea     rdx, [rbp+0EC0h+var_F0]
  lea     rcx, off_14000A080
  call    sub_140002AF0
  mov     rdx, qword ptr [rbp+0EC0h+var_B18+8]
  cmp     rdx, 10h
  jb      short loc_14000394D
  inc     rdx
  mov     rcx, [rbp+0EC0h+var_B28]
  mov     rax, rcx
  cmp     rdx, 1000h
  jb      short loc_140003948
  add     rdx, 27h
  mov     rcx, [rcx-8]    ; Memory
  sub     rax, rcx
  add     rax, 0FFFFFFFFFFFFFFF8h
  cmp     rax, 1Fh
  ja      short loc_1400039BF

loc_140003948:                          ; CODE XREF: main+9A1j
  call    j_j_free

loc_14000394D:                          ; CODE XREF: main+98Bj
  movups  xmm0, [rbp+0EC0h+var_F0]
  movups  xmmword ptr [rbp+0EC0h+var_B28], xmm0
  movups  xmm1, [rbp+0EC0h+var_E0]
  movups  [rbp+0EC0h+var_B18], xmm1
  mov     qword ptr [rbp+0EC0h+var_E0], rdi
  mov     qword ptr [rbp+0EC0h+var_E0+8], 0Fh
  mov     byte ptr [rbp+0EC0h+var_F0], 0
  mov     rdx, qword ptr [rbp+0EC0h+var_9F8+8]
  cmp     rdx, 4
  jb      short loc_1400039CB
  lea     rdx, ds:4[rdx*4]
  mov     rcx, [rbp+0EC0h+var_A08] ; Memory
  mov     rax, rcx
  cmp     rdx, 1000h
  jb      short loc_1400039C6
  add     rdx, 27h
  mov     rcx, [rcx-8]
  sub     rax, rcx
  add     rax, 0FFFFFFFFFFFFFFF8h
  cmp     rax, 1Fh
  jbe     short loc_1400039C6

loc_1400039BF:                          ; CODE XREF: main+9B6j
  call    cs:_invalid_parameter_noinfo_noreturn
; ---------------------------------------------------------------------------
  int     3               ; Trap to Debugger
; ---------------------------------------------------------------------------

loc_1400039C6:                          ; CODE XREF: main+A18j
                          ; main+A2Dj
  call    j_j_free

loc_1400039CB:                          ; CODE XREF: main+9FDj
  mov     qword ptr [rbp+0EC0h+var_9F8], rdi
  mov     qword ptr [rbp+0EC0h+var_9F8+8], 3
  mov     dword ptr [rbp+0EC0h+var_A08], edi
  lea     rcx, [rbp+0EC0h+var_B28]
  cmp     qword ptr [rbp+0EC0h+var_B18+8], 10h
  cmovnb  rcx, [rbp+0EC0h+var_B28]
  call    sub_140005A80
  mov     rdx, qword ptr [rbp+0EC0h+var_B18+8]
  cmp     rdx, 10h
  jb      short loc_140003A43
  inc     rdx
  mov     rcx, [rbp+0EC0h+var_B28] ; Memory
  mov     rax, rcx
  cmp     rdx, 1000h
  jb      short loc_140003A3E
  add     rdx, 27h
  mov     rcx, [rcx-8]
  sub     rax, rcx
  add     rax, 0FFFFFFFFFFFFFFF8h
  cmp     rax, 1Fh
  jbe     short loc_140003A3E
  call    cs:_invalid_parameter_noinfo_noreturn
; ---------------------------------------------------------------------------
  int     3               ; Trap to Debugger
; ---------------------------------------------------------------------------

loc_140003A3E:                          ; CODE XREF: main+A90j
                          ; main+AA5j
  call    j_j_free

loc_140003A43:                          ; CODE XREF: main+A7Aj
  mov     qword ptr [rbp+0EC0h+var_B18], rdi
  mov     qword ptr [rbp+0EC0h+var_B18+8], 0Fh
  mov     byte ptr [rbp+0EC0h+var_B28], 0
  lea     rbx, sub_1400075C0
  mov     rcx, rbx
  call    sub_140002A80
  test    rax, rax
  jnz     short loc_140003A73
  call    rbx ; sub_1400075C0
  nop

loc_140003A73:                          ; CODE XREF: main+ADEj
  mov     qword ptr [rbp+0EC0h+var_AF8], rdi
  mov     qword ptr [rbp+0EC0h+var_AF8+8], 0Fh
  mov     byte ptr [rbp+0EC0h+var_B08], 0
  mov     [rbp+0EC0h+var_B98], rdi
  mov     qword ptr [rbp+0EC0h+var_A78], rdi
  mov     qword ptr [rbp+0EC0h+var_A78+8], 3
  mov     dword ptr [rbp+0EC0h+var_A88], edi
  mov     [rbp+0EC0h+var_B90], rdi
  mov     [rbp+0EC0h+var_E40], 5Bh
  mov     [rbp+0EC0h+var_270], 5Bh
  mov     [rbp+0EC0h+var_E3C], 4Ch
  mov     [rbp+0EC0h+var_26C], 4Ch
  mov     [rbp+0EC0h+var_E38], 4Fh
  mov     [rbp+0EC0h+var_268], 4Fh
  mov     [rbp+0EC0h+var_E34], 47h
  mov     [rbp+0EC0h+var_264], 47h
  mov     [rbp+0EC0h+var_E30], 5Dh
  mov     [rbp+0EC0h+var_260], 5Dh
  mov     [rbp+0EC0h+var_E2C], 3Ah
  mov     [rbp+0EC0h+var_25C], 3Ah
  mov     [rbp+0EC0h+var_E28], 20h
  mov     [rbp+0EC0h+var_258], 20h
  mov     [rbp+0EC0h+var_E24], 47h
  mov     [rbp+0EC0h+var_254], 47h
  mov     [rbp+0EC0h+var_E20], 65h
  mov     [rbp+0EC0h+var_250], 65h
  mov     [rbp+0EC0h+var_E1C], 74h
  mov     [rbp+0EC0h+var_24C], 74h
  mov     [rbp+0EC0h+var_E18], 20h
  mov     [rbp+0EC0h+var_248], 20h
  mov     [rbp+0EC0h+var_E14], 76h
  mov     [rbp+0EC0h+var_244], 76h
  mov     [rbp+0EC0h+var_E10], 61h
  mov     [rbp+0EC0h+var_240], 61h
  mov     [rbp+0EC0h+var_E0C], 6Ch
  mov     [rbp+0EC0h+var_23C], 6Ch
  mov     [rbp+0EC0h+var_E08], 75h
  mov     [rbp+0EC0h+var_238], 75h
  mov     [rbp+0EC0h+var_E04], 65h
  mov     [rbp+0EC0h+var_234], 65h
  mov     [rbp+0EC0h+var_E00], 73h
  mov     [rbp+0EC0h+var_230], 73h
  mov     [rbp+0EC0h+var_DFC], 20h
  mov     [rbp+0EC0h+var_22C], 20h
  mov     [rbp+0EC0h+var_DF8], 66h
  mov     [rbp+0EC0h+var_228], 66h
  mov     [rbp+0EC0h+var_DF4], 72h
  mov     [rbp+0EC0h+var_224], 72h
  mov     [rbp+0EC0h+var_DF0], 6Fh
  mov     [rbp+0EC0h+var_220], 6Fh
  mov     [rbp+0EC0h+var_DEC], 6Dh
  mov     [rbp+0EC0h+var_21C], 6Dh
  mov     [rbp+0EC0h+var_DE8], 20h
  mov     [rbp+0EC0h+var_218], 20h
  mov     [rbp+0EC0h+var_DE4], 64h
  mov     [rbp+0EC0h+var_214], 64h
  mov     [rbp+0EC0h+var_DE0], 61h
  mov     [rbp+0EC0h+var_210], 61h
  mov     [rbp+0EC0h+var_DDC], 74h
  mov     [rbp+0EC0h+var_20C], 74h
  mov     [rbp+0EC0h+var_DD8], 61h
  mov     [rbp+0EC0h+var_208], 61h
  mov     [rbp+0EC0h+var_DD4], 62h
  mov     [rbp+0EC0h+var_204], 62h
  mov     [rbp+0EC0h+var_DD0], 61h
  mov     [rbp+0EC0h+var_200], 61h
  mov     [rbp+0EC0h+var_DCC], 73h
  mov     [rbp+0EC0h+var_1FC], 73h
  mov     [rbp+0EC0h+var_DC8], 65h
  mov     [rbp+0EC0h+var_1F8], 65h
  mov     [rbp+0EC0h+var_DC4], 2Eh
  mov     [rbp+0EC0h+var_1F4], 2Eh
  mov     [rbp+0EC0h+var_DC0], 0Ah
  mov     [rbp+0EC0h+var_1F0], 0Ah
  mov     [rbp+0EC0h+var_DBC], edi
  mov     [rbp+0EC0h+var_6A0], 5Bh
  mov     [rbp+0EC0h+var_69C], 4Ch
  mov     [rbp+0EC0h+var_698], 4Fh
  mov     [rbp+0EC0h+var_694], 47h
  mov     [rbp+0EC0h+var_690], 5Dh
  mov     [rbp+0EC0h+var_68C], 3Ah
  mov     [rbp+0EC0h+var_688], 20h
  mov     [rbp+0EC0h+var_684], 47h
  mov     [rbp+0EC0h+var_680], 65h
  mov     [rbp+0EC0h+var_67C], 74h
  mov     [rbp+0EC0h+var_678], 20h
  mov     [rbp+0EC0h+var_674], 76h
  mov     [rbp+0EC0h+var_670], 61h
  mov     [rbp+0EC0h+var_66C], 6Ch
  mov     [rbp+0EC0h+var_668], 75h
  mov     [rbp+0EC0h+var_664], 65h
  mov     [rbp+0EC0h+var_660], 73h
  mov     [rbp+0EC0h+var_65C], 20h
  mov     [rbp+0EC0h+var_658], 66h
  mov     [rbp+0EC0h+var_654], 72h
  mov     [rbp+0EC0h+var_650], 6Fh
  mov     [rbp+0EC0h+var_64C], 6Dh
  mov     [rbp+0EC0h+var_648], 20h
  mov     [rbp+0EC0h+var_644], 64h
  mov     [rbp+0EC0h+var_640], 61h
  mov     [rbp+0EC0h+var_63C], 74h
  mov     [rbp+0EC0h+var_638], 61h
  mov     [rbp+0EC0h+var_634], 62h
  mov     [rbp+0EC0h+var_630], 61h
  mov     [rbp+0EC0h+var_62C], 73h
  mov     [rbp+0EC0h+var_628], 65h
  mov     [rbp+0EC0h+var_624], 2Eh
  mov     [rbp+0EC0h+var_620], 0Ah
  mov     qword ptr [rbp+0EC0h+var_958], rdi
  mov     qword ptr [rbp+0EC0h+var_958+8], 3
  mov     dword ptr [rbp+0EC0h+var_968], edi
  lea     rax, [rbp+0EC0h+var_6A0]
  mov     r8, rdi
  nop     word ptr [rax+rax+00h]

loc_140003EC0:                          ; CODE XREF: main+F3Aj
  inc     r8
  lea     rax, [rax+4]
  cmp     dword ptr [rax], 0
  jnz     short loc_140003EC0
  lea     rdx, [rbp+0EC0h+var_6A0] ; Src
  lea     rcx, [rbp+0EC0h+var_968] ; Dst
  call    sub_1400028E0
  mov     rdx, qword ptr [rbp+0EC0h+var_A78+8]
  cmp     rdx, 4
  jb      short loc_140003F28
  lea     rdx, ds:4[rdx*4]
  mov     rcx, [rbp+0EC0h+var_A88] ; Memory
  mov     rax, rcx
  cmp     rdx, 1000h
  jb      short loc_140003F23
  add     rdx, 27h
  mov     rcx, [rcx-8]
  sub     rax, rcx
  add     rax, 0FFFFFFFFFFFFFFF8h
  cmp     rax, 1Fh
  jbe     short loc_140003F23
  call    cs:_invalid_parameter_noinfo_noreturn
; ---------------------------------------------------------------------------
  int     3               ; Trap to Debugger
; ---------------------------------------------------------------------------

loc_140003F23:                          ; CODE XREF: main+F75j
                          ; main+F8Aj
  call    j_j_free

loc_140003F28:                          ; CODE XREF: main+F5Aj
  movups  xmm0, [rbp+0EC0h+var_968]
  movups  xmmword ptr [rbp+0EC0h+var_A88], xmm0
  movups  xmm1, [rbp+0EC0h+var_958]
  movups  [rbp+0EC0h+var_A78], xmm1
  mov     qword ptr [rbp+0EC0h+var_958], rdi
  mov     qword ptr [rbp+0EC0h+var_958+8], 3
  mov     dword ptr [rbp+0EC0h+var_968], edi
  lea     r8, [rbp+0EC0h+var_A88]
  movq    rcx, xmm0
  psrldq  xmm1, 8
  movq    rax, xmm1
  cmp     rax, 4
  cmovnb  r8, rcx
  mov     r9, r8
  cmp     dword ptr [r8], 0
  jz      short loc_140003F8D

loc_140003F83:                          ; CODE XREF: main+FFBj
  add     r9, 4
  cmp     dword ptr [r9], 0
  jnz     short loc_140003F83

loc_140003F8D:                          ; CODE XREF: main+FF1j
  lea     rdx, [rbp+0EC0h+var_D0]
  lea     rcx, off_14000A080
  call    sub_140002AF0
  mov     rdx, qword ptr [rbp+0EC0h+var_AF8+8]
  cmp     rdx, 10h
  jb      short loc_140003FE4
  inc     rdx
  mov     rcx, [rbp+0EC0h+var_B08] ; Memory
  mov     rax, rcx
  cmp     rdx, 1000h
  jb      short loc_140003FDF
  add     rdx, 27h
  mov     rcx, [rcx-8]
  sub     rax, rcx
  add     rax, 0FFFFFFFFFFFFFFF8h
  cmp     rax, 1Fh
  jbe     short loc_140003FDF
  call    cs:_invalid_parameter_noinfo_noreturn
; ---------------------------------------------------------------------------
  int     3               ; Trap to Debugger
; ---------------------------------------------------------------------------

loc_140003FDF:                          ; CODE XREF: main+1031j
                          ; main+1046j
  call    j_j_free

loc_140003FE4:                          ; CODE XREF: main+101Bj
  movups  xmm0, [rbp+0EC0h+var_D0]
  movups  xmmword ptr [rbp+0EC0h+var_B08], xmm0
  movups  xmm1, [rbp+0EC0h+var_C0]
  movups  [rbp+0EC0h+var_AF8], xmm1
  mov     qword ptr [rbp+0EC0h+var_C0], rdi
  mov     qword ptr [rbp+0EC0h+var_C0+8], 0Fh
  mov     byte ptr [rbp+0EC0h+var_D0], 0
  mov     r8, qword ptr [rbp+0EC0h+var_A78+8]
  cmp     r8, 4
  jb      short loc_14000403C
  inc     r8
  mov     rdx, [rbp+0EC0h+var_A88]
  lea     rcx, [rbp+0EC0h+var_A88]
  call    sub_140002A30

loc_14000403C:                          ; CODE XREF: main+1094j
  mov     qword ptr [rbp+0EC0h+var_A78], rdi
  mov     qword ptr [rbp+0EC0h+var_A78+8], 3
  mov     dword ptr [rbp+0EC0h+var_A88], edi
  lea     rcx, [rbp+0EC0h+var_B08]
  cmp     qword ptr [rbp+0EC0h+var_AF8+8], 10h
  cmovnb  rcx, [rbp+0EC0h+var_B08]
  call    sub_140005A80
  mov     rdx, qword ptr [rbp+0EC0h+var_AF8+8]
  cmp     rdx, 10h
  jb      short loc_1400040B4
  inc     rdx
  mov     rcx, [rbp+0EC0h+var_B08] ; Memory
  mov     rax, rcx
  cmp     rdx, 1000h
  jb      short loc_1400040AF
  add     rdx, 27h
  mov     rcx, [rcx-8]
  sub     rax, rcx
  add     rax, 0FFFFFFFFFFFFFFF8h
  cmp     rax, 1Fh
  jbe     short loc_1400040AF
  call    cs:_invalid_parameter_noinfo_noreturn
; ---------------------------------------------------------------------------
  int     3               ; Trap to Debugger
; ---------------------------------------------------------------------------

loc_1400040AF:                          ; CODE XREF: main+1101j
                          ; main+1116j
  call    j_j_free

loc_1400040B4:                          ; CODE XREF: main+10EBj
  mov     qword ptr [rbp+0EC0h+var_AF8], rdi
  mov     qword ptr [rbp+0EC0h+var_AF8+8], 0Fh
  mov     byte ptr [rbp+0EC0h+var_B08], 0
  lea     rbx, loc_140007650
  mov     rcx, rbx
  call    sub_140002AC0
  test    rax, rax
  jnz     short loc_140004108
  lea     rax, loc_140007646+2
  call    rax
  lea     rax, loc_140007646+4
  call    rax
  lea     rax, unk_1400076C0
  call    rax ; unk_1400076C0
  lea     rax, unk_1400076C2
  call    rax ; unk_1400076C2
  call    rbx ; loc_140007650
  nop

loc_140004108:                          ; CODE XREF: main+114Fj
  mov     qword ptr [rbp+0EC0h+var_AB8], rdi
  mov     qword ptr [rbp+0EC0h+var_AB8+8], 0Fh
  mov     byte ptr [rbp+0EC0h+var_AC8], 0
  mov     [rbp+0EC0h+var_B88], rdi
  mov     qword ptr [rbp+0EC0h+var_AD8], rdi
  mov     qword ptr [rbp+0EC0h+var_AD8+8], 3
  mov     dword ptr [rbp+0EC0h+var_AE8], edi
  mov     [rbp+0EC0h+var_B80], rdi
  mov     [rbp+0EC0h+var_DB8], 5Bh
  mov     [rbp+0EC0h+var_2E0], 5Bh
  mov     [rbp+0EC0h+var_DB4], 4Ch
  mov     [rbp+0EC0h+var_2DC], 4Ch
  mov     [rbp+0EC0h+var_DB0], 4Fh
  mov     [rbp+0EC0h+var_2D8], 4Fh
  mov     [rbp+0EC0h+var_DAC], 47h
  mov     [rbp+0EC0h+var_2D4], 47h
  mov     [rbp+0EC0h+var_DA8], 5Dh
  mov     [rbp+0EC0h+var_2D0], 5Dh
  mov     [rbp+0EC0h+var_DA4], 3Ah
  mov     [rbp+0EC0h+var_2CC], 3Ah
  mov     [rbp+0EC0h+var_DA0], 20h
  mov     [rbp+0EC0h+var_2C8], 20h
  mov     [rbp+0EC0h+var_D9C], 43h
  mov     [rbp+0EC0h+var_2C4], 43h
  mov     [rbp+0EC0h+var_D98], 6Fh
  mov     [rbp+0EC0h+var_2C0], 6Fh
  mov     [rbp+0EC0h+var_D94], 6Eh
  mov     [rbp+0EC0h+var_2BC], 6Eh
  mov     [rbp+0EC0h+var_D90], 6Eh
  mov     [rbp+0EC0h+var_2B8], 6Eh
  mov     [rbp+0EC0h+var_D8C], 65h
  mov     [rbp+0EC0h+var_2B4], 65h
  mov     [rbp+0EC0h+var_D88], 63h
  mov     [rbp+0EC0h+var_2B0], 63h
  mov     [rbp+0EC0h+var_D84], 74h
  mov     [rbp+0EC0h+var_2AC], 74h
  mov     [rbp+0EC0h+var_D80], 20h
  mov     [rbp+0EC0h+var_2A8], 20h
  mov     [rbp+0EC0h+var_D7C], 74h
  mov     [rbp+0EC0h+var_2A4], 74h
  mov     [rbp+0EC0h+var_D78], 6Fh
  mov     [rbp+0EC0h+var_2A0], 6Fh
  mov     [rbp+0EC0h+var_D74], 20h
  mov     [rbp+0EC0h+var_29C], 20h
  mov     [rbp+0EC0h+var_D70], 73h
  mov     [rbp+0EC0h+var_298], 73h
  mov     [rbp+0EC0h+var_D6C], 65h
  mov     [rbp+0EC0h+var_294], 65h
  mov     [rbp+0EC0h+var_D68], 72h
  mov     [rbp+0EC0h+var_290], 72h
  mov     [rbp+0EC0h+var_D64], 76h
  mov     [rbp+0EC0h+var_28C], 76h
  mov     [rbp+0EC0h+var_D60], 69h
  mov     [rbp+0EC0h+var_288], 69h
  mov     [rbp+0EC0h+var_D5C], 63h
  mov     [rbp+0EC0h+var_284], 63h
  mov     [rbp+0EC0h+var_D58], 65h
  mov     [rbp+0EC0h+var_280], 65h
  mov     [rbp+0EC0h+var_D54], 2Eh
  mov     [rbp+0EC0h+var_27C], 2Eh
  mov     [rbp+0EC0h+var_D50], 0Ah
  mov     [rbp+0EC0h+var_278], 0Ah
  mov     [rbp+0EC0h+var_D4C], edi
  mov     [rbp+0EC0h+var_710], 5Bh
  mov     [rbp+0EC0h+var_70C], 4Ch
  mov     [rbp+0EC0h+var_708], 4Fh
  mov     [rbp+0EC0h+var_704], 47h
  mov     [rbp+0EC0h+var_700], 5Dh
  mov     [rbp+0EC0h+var_6FC], 3Ah
  mov     [rbp+0EC0h+var_6F8], 20h
  mov     [rbp+0EC0h+var_6F4], 43h
  mov     [rbp+0EC0h+var_6F0], 6Fh
  mov     [rbp+0EC0h+var_6EC], 6Eh
  mov     [rbp+0EC0h+var_6E8], 6Eh
  mov     [rbp+0EC0h+var_6E4], 65h
  mov     [rbp+0EC0h+var_6E0], 63h
  mov     [rbp+0EC0h+var_6DC], 74h
  mov     [rbp+0EC0h+var_6D8], 20h
  mov     [rbp+0EC0h+var_6D4], 74h
  mov     [rbp+0EC0h+var_6D0], 6Fh
  mov     [rbp+0EC0h+var_6CC], 20h
  mov     [rbp+0EC0h+var_6C8], 73h
  mov     [rbp+0EC0h+var_6C4], 65h
  mov     [rbp+0EC0h+var_6C0], 72h
  mov     [rbp+0EC0h+var_6BC], 76h
  mov     [rbp+0EC0h+var_6B8], 69h
  mov     [rbp+0EC0h+var_6B4], 63h
  mov     [rbp+0EC0h+var_6B0], 65h
  mov     [rbp+0EC0h+var_6AC], 2Eh
  mov     [rbp+0EC0h+var_6A8], 0Ah
  mov     qword ptr [rbp+0EC0h+var_938], rdi
  mov     qword ptr [rbp+0EC0h+var_938+8], 3
  mov     dword ptr [rbp+0EC0h+var_948], edi
  lea     rax, [rbp+0EC0h+var_710]
  mov     r8, rdi
  nop     dword ptr [rax+rax+00h]

loc_1400044A0:                          ; CODE XREF: main+151Aj
  inc     r8
  lea     rax, [rax+4]
  cmp     dword ptr [rax], 0
  jnz     short loc_1400044A0
  lea     rdx, [rbp+0EC0h+var_710] ; Src
  lea     rcx, [rbp+0EC0h+var_948] ; Dst
  call    sub_1400028E0
  mov     r8, qword ptr [rbp+0EC0h+var_AD8+8]
  cmp     r8, 4
  jb      short loc_1400044E2
  inc     r8
  mov     rdx, qword ptr [rbp+0EC0h+var_AE8]
  lea     rcx, [rbp+0EC0h+var_AE8]
  call    sub_140002A30

loc_1400044E2:                          ; CODE XREF: main+153Aj
  movups  xmm0, [rbp+0EC0h+var_948]
  movups  [rbp+0EC0h+var_AE8], xmm0
  movups  xmm1, [rbp+0EC0h+var_938]
  movups  [rbp+0EC0h+var_AD8], xmm1
  mov     qword ptr [rbp+0EC0h+var_938], rdi
  mov     qword ptr [rbp+0EC0h+var_938+8], 3
  mov     dword ptr [rbp+0EC0h+var_948], edi
  lea     r8, [rbp+0EC0h+var_AE8]
  movq    rcx, xmm0
  psrldq  xmm1, 8
  movq    rax, xmm1
  cmp     rax, 4
  cmovnb  r8, rcx
  mov     r9, r8
  cmp     dword ptr [r8], 0
  jz      short loc_14000454A
  nop     dword ptr [rax]

loc_140004540:                          ; CODE XREF: main+15B8j
  add     r9, 4
  cmp     dword ptr [r9], 0
  jnz     short loc_140004540

loc_14000454A:                          ; CODE XREF: main+15ABj
  lea     rdx, [rbp+0EC0h+var_B0]
  lea     rcx, off_14000A080
  call    sub_140002AF0
  mov     rdx, qword ptr [rbp+0EC0h+var_AB8+8]
  cmp     rdx, 10h
  jb      short loc_1400045A1
  inc     rdx
  mov     rcx, [rbp+0EC0h+var_AC8] ; Memory
  mov     rax, rcx
  cmp     rdx, 1000h
  jb      short loc_14000459C
  add     rdx, 27h
  mov     rcx, [rcx-8]
  sub     rax, rcx
  add     rax, 0FFFFFFFFFFFFFFF8h
  cmp     rax, 1Fh
  jbe     short loc_14000459C
  call    cs:_invalid_parameter_noinfo_noreturn
; ---------------------------------------------------------------------------
  int     3               ; Trap to Debugger
; ---------------------------------------------------------------------------

loc_14000459C:                          ; CODE XREF: main+15EEj
                          ; main+1603j
  call    j_j_free

loc_1400045A1:                          ; CODE XREF: main+15D8j
  movups  xmm0, [rbp+0EC0h+var_B0]
  movups  xmmword ptr [rbp+0EC0h+var_AC8], xmm0
  movups  xmm1, [rbp+0EC0h+var_A0]
  movups  [rbp+0EC0h+var_AB8], xmm1
  mov     qword ptr [rbp+0EC0h+var_A0], rdi
  mov     qword ptr [rbp+0EC0h+var_A0+8], 0Fh
  mov     byte ptr [rbp+0EC0h+var_B0], 0
  mov     r8, qword ptr [rbp+0EC0h+var_AD8+8]
  cmp     r8, 4
  jb      short loc_1400045F9
  inc     r8
  mov     rdx, qword ptr [rbp+0EC0h+var_AE8]
  lea     rcx, [rbp+0EC0h+var_AE8]
  call    sub_140002A30

loc_1400045F9:                          ; CODE XREF: main+1651j
  mov     qword ptr [rbp+0EC0h+var_AD8], rdi
  mov     qword ptr [rbp+0EC0h+var_AD8+8], 3
  mov     dword ptr [rbp+0EC0h+var_AE8], edi
  lea     rcx, [rbp+0EC0h+var_AC8]
  cmp     qword ptr [rbp+0EC0h+var_AB8+8], 10h
  cmovnb  rcx, [rbp+0EC0h+var_AC8]
  call    sub_140005A80
  mov     rdx, qword ptr [rbp+0EC0h+var_AB8+8]
  cmp     rdx, 10h
  jb      short loc_140004671
  inc     rdx
  mov     rcx, [rbp+0EC0h+var_AC8] ; Memory
  mov     rax, rcx
  cmp     rdx, 1000h
  jb      short loc_14000466C
  add     rdx, 27h
  mov     rcx, [rcx-8]
  sub     rax, rcx
  add     rax, 0FFFFFFFFFFFFFFF8h
  cmp     rax, 1Fh
  jbe     short loc_14000466C
  call    cs:_invalid_parameter_noinfo_noreturn
; ---------------------------------------------------------------------------
  int     3               ; Trap to Debugger
; ---------------------------------------------------------------------------

loc_14000466C:                          ; CODE XREF: main+16BEj
                          ; main+16D3j
  call    j_j_free

loc_140004671:                          ; CODE XREF: main+16A8j
  mov     qword ptr [rbp+0EC0h+var_AB8], rdi
  mov     qword ptr [rbp+0EC0h+var_AB8+8], 0Fh
  mov     byte ptr [rbp+0EC0h+var_AC8], 0
  lea     rbx, unk_1400076D0
  mov     rcx, rbx
  call    sub_140002AD0
  test    rax, rax
  jnz     short loc_1400046C5
  lea     rax, unk_1400076C4
  call    rax ; unk_1400076C4
  lea     rax, unk_1400076C6
  call    rax ; unk_1400076C6
  lea     rax, unk_14000773C
  call    rax ; unk_14000773C
  lea     rax, unk_14000773E
  call    rax ; unk_14000773E
  call    rbx ; unk_1400076D0
  nop

loc_1400046C5:                          ; CODE XREF: main+170Cj
  mov     qword ptr [rbp+0EC0h+var_A58], rdi
  mov     qword ptr [rbp+0EC0h+var_A58+8], 0Fh
  mov     byte ptr [rbp+0EC0h+var_A68], 0
  mov     [rbp+0EC0h+var_B78], rdi
  mov     qword ptr [rbp+0EC0h+var_A98], rdi
  mov     qword ptr [rbp+0EC0h+var_A98+8], 3
  mov     dword ptr [rbp+0EC0h+var_AA8], edi
  mov     [rbp+0EC0h+var_B70], rdi
  mov     [rbp+0EC0h+var_D48], 5Bh
  mov     [rbp+0EC0h+var_350], 5Bh
  mov     [rbp+0EC0h+var_D44], 4Ch
  mov     [rbp+0EC0h+var_34C], 4Ch
  mov     [rbp+0EC0h+var_D40], 4Fh
  mov     [rbp+0EC0h+var_348], 4Fh
  mov     [rbp+0EC0h+var_D3C], 47h
  mov     [rbp+0EC0h+var_344], 47h
  mov     [rbp+0EC0h+var_D38], 5Dh
  mov     [rbp+0EC0h+var_340], 5Dh
  mov     [rbp+0EC0h+var_D34], 3Ah
  mov     [rbp+0EC0h+var_33C], 3Ah
  mov     [rbp+0EC0h+var_D30], 20h
  mov     [rbp+0EC0h+var_338], 20h
  mov     [rbp+0EC0h+var_D2C], 44h
  mov     [rbp+0EC0h+var_334], 44h
  mov     [rbp+0EC0h+var_D28], 6Fh
  mov     [rbp+0EC0h+var_330], 6Fh
  mov     [rbp+0EC0h+var_D24], 77h
  mov     [rbp+0EC0h+var_32C], 77h
  mov     [rbp+0EC0h+var_D20], 6Eh
  mov     [rbp+0EC0h+var_328], 6Eh
  mov     [rbp+0EC0h+var_D1C], 6Ch
  mov     [rbp+0EC0h+var_324], 6Ch
  mov     [rbp+0EC0h+var_D18], 6Fh
  mov     [rbp+0EC0h+var_320], 6Fh
  mov     [rbp+0EC0h+var_D14], 61h
  mov     [rbp+0EC0h+var_31C], 61h
  mov     [rbp+0EC0h+var_D10], 64h
  mov     [rbp+0EC0h+var_318], 64h
  mov     [rbp+0EC0h+var_D0C], 20h
  mov     [rbp+0EC0h+var_314], 20h
  mov     [rbp+0EC0h+var_D08], 6Dh
  mov     [rbp+0EC0h+var_310], 6Dh
  mov     [rbp+0EC0h+var_D04], 65h
  mov     [rbp+0EC0h+var_30C], 65h
  mov     [rbp+0EC0h+var_D00], 74h
  mov     [rbp+0EC0h+var_308], 74h
  mov     [rbp+0EC0h+var_CFC], 61h
  mov     [rbp+0EC0h+var_304], 61h
  mov     [rbp+0EC0h+var_CF8], 64h
  mov     [rbp+0EC0h+var_300], 64h
  mov     [rbp+0EC0h+var_CF4], 61h
  mov     [rbp+0EC0h+var_2FC], 61h
  mov     [rbp+0EC0h+var_CF0], 74h
  mov     [rbp+0EC0h+var_2F8], 74h
  mov     [rbp+0EC0h+var_CEC], 61h
  mov     [rbp+0EC0h+var_2F4], 61h
  mov     [rbp+0EC0h+var_CE8], 2Eh
  mov     [rbp+0EC0h+var_2F0], 2Eh
  mov     [rbp+0EC0h+var_CE4], 0Ah
  mov     [rbp+0EC0h+var_2EC], 0Ah
  mov     [rbp+0EC0h+var_CE0], edi
  mov     [rbp+0EC0h+var_780], 5Bh
  mov     [rbp+0EC0h+var_77C], 4Ch
  mov     [rbp+0EC0h+var_778], 4Fh
  mov     [rbp+0EC0h+var_774], 47h
  mov     [rbp+0EC0h+var_770], 5Dh
  mov     [rbp+0EC0h+var_76C], 3Ah
  mov     [rbp+0EC0h+var_768], 20h
  mov     [rbp+0EC0h+var_764], 44h
  mov     [rbp+0EC0h+var_760], 6Fh
  mov     [rbp+0EC0h+var_75C], 77h
  mov     [rbp+0EC0h+var_758], 6Eh
  mov     [rbp+0EC0h+var_754], 6Ch
  mov     [rbp+0EC0h+var_750], 6Fh
  mov     [rbp+0EC0h+var_74C], 61h
  mov     [rbp+0EC0h+var_748], 64h
  mov     [rbp+0EC0h+var_744], 20h
  mov     [rbp+0EC0h+var_740], 6Dh
  mov     [rbp+0EC0h+var_73C], 65h
  mov     [rbp+0EC0h+var_738], 74h
  mov     [rbp+0EC0h+var_734], 61h
  mov     [rbp+0EC0h+var_730], 64h
  mov     [rbp+0EC0h+var_72C], 61h
  mov     [rbp+0EC0h+var_728], 74h
  mov     [rbp+0EC0h+var_724], 61h
  mov     [rbp+0EC0h+var_720], 2Eh
  mov     [rbp+0EC0h+var_71C], 0Ah
  mov     qword ptr [rbp+0EC0h+var_918], rdi
  mov     qword ptr [rbp+0EC0h+var_918+8], 3
  mov     dword ptr [rbp+0EC0h+var_928], edi
  lea     rax, [rbp+0EC0h+var_780]
  mov     r8, rdi
  nop     word ptr [rax+rax+00h]

loc_140004A40:                          ; CODE XREF: main+1ABAj
  inc     r8
  lea     rax, [rax+4]
  cmp     dword ptr [rax], 0
  jnz     short loc_140004A40
  lea     rdx, [rbp+0EC0h+var_780] ; Src
  lea     rcx, [rbp+0EC0h+var_928] ; Dst
  call    sub_1400028E0
  mov     r8, qword ptr [rbp+0EC0h+var_A98+8]
  cmp     r8, 4
  jb      short loc_140004A82
  inc     r8
  mov     rdx, qword ptr [rbp+0EC0h+var_AA8]
  lea     rcx, [rbp+0EC0h+var_AA8]
  call    sub_140002A30

loc_140004A82:                          ; CODE XREF: main+1ADAj
  movups  xmm0, [rbp+0EC0h+var_928]
  movups  [rbp+0EC0h+var_AA8], xmm0
  movups  xmm1, [rbp+0EC0h+var_918]
  movups  [rbp+0EC0h+var_A98], xmm1
  mov     qword ptr [rbp+0EC0h+var_918], rdi
  mov     qword ptr [rbp+0EC0h+var_918+8], 3
  mov     dword ptr [rbp+0EC0h+var_928], edi
  lea     r8, [rbp+0EC0h+var_AA8]
  movq    rcx, xmm0
  psrldq  xmm1, 8
  movq    rax, xmm1
  cmp     rax, 4
  cmovnb  r8, rcx
  mov     r9, r8
  cmp     dword ptr [r8], 0
  jz      short loc_140004AEA
  nop     dword ptr [rax]

loc_140004AE0:                          ; CODE XREF: main+1B58j
  add     r9, 4
  cmp     dword ptr [r9], 0
  jnz     short loc_140004AE0

loc_140004AEA:                          ; CODE XREF: main+1B4Bj
  lea     rdx, [rbp+0EC0h+var_90]
  lea     rcx, off_14000A080
  call    sub_140002AF0
  lea     rcx, [rbp+0EC0h+var_A68]
  call    sub_140002140
  movups  xmm0, [rbp+0EC0h+var_90]
  movups  xmmword ptr [rbp+0EC0h+var_A68], xmm0
  movups  xmm1, [rbp+0EC0h+var_80]
  movups  [rbp+0EC0h+var_A58], xmm1
  mov     qword ptr [rbp+0EC0h+var_80], rdi
  mov     qword ptr [rbp+0EC0h+var_80+8], 0Fh
  mov     byte ptr [rbp+0EC0h+var_90], 0
  mov     r8, qword ptr [rbp+0EC0h+var_A98+8]
  cmp     r8, 4
  jb      short loc_140004B61
  inc     r8
  mov     rdx, qword ptr [rbp+0EC0h+var_AA8]
  lea     rcx, [rbp+0EC0h+var_AA8]
  call    sub_140002A30

loc_140004B61:                          ; CODE XREF: main+1BB9j
  mov     qword ptr [rbp+0EC0h+var_A98], rdi
  mov     qword ptr [rbp+0EC0h+var_A98+8], 3
  mov     dword ptr [rbp+0EC0h+var_AA8], edi
  lea     rcx, [rbp+0EC0h+var_A68]
  cmp     qword ptr [rbp+0EC0h+var_A58+8], 10h
  cmovnb  rcx, [rbp+0EC0h+var_A68]
  call    sub_140005A80
  mov     rdx, qword ptr [rbp+0EC0h+var_A58+8]
  cmp     rdx, 10h
  jb      short loc_140004BD9
  inc     rdx
  mov     rcx, [rbp+0EC0h+var_A68] ; Memory
  mov     rax, rcx
  cmp     rdx, 1000h
  jb      short loc_140004BD4
  add     rdx, 27h
  mov     rcx, [rcx-8]
  sub     rax, rcx
  add     rax, 0FFFFFFFFFFFFFFF8h
  cmp     rax, 1Fh
  jbe     short loc_140004BD4
  call    cs:_invalid_parameter_noinfo_noreturn
; ---------------------------------------------------------------------------
  int     3               ; Trap to Debugger
; ---------------------------------------------------------------------------

loc_140004BD4:                          ; CODE XREF: main+1C26j
                          ; main+1C3Bj
  call    j_j_free

loc_140004BD9:                          ; CODE XREF: main+1C10j
  mov     qword ptr [rbp+0EC0h+var_A58], rdi
  mov     qword ptr [rbp+0EC0h+var_A58+8], 0Fh
  mov     byte ptr [rbp+0EC0h+var_A68], 0
  lea     rbx, loc_140007740
  mov     rcx, rbx
  call    sub_140002A90
  test    rax, rax
  jnz     short loc_140004C09
  call    rbx ; loc_140007740
  nop

loc_140004C09:                          ; CODE XREF: main+1C74j
  mov     qword ptr [rbp+0EC0h+var_A38], rdi
  mov     qword ptr [rbp+0EC0h+var_A38+8], 0Fh
  mov     byte ptr [rbp+0EC0h+var_A48], 0
  mov     [rbp+0EC0h+var_B68], rdi
  mov     qword ptr [rbp+0EC0h+var_9D8], rdi
  mov     qword ptr [rbp+0EC0h+var_9D8+8], 3
  mov     dword ptr [rbp+0EC0h+var_9E8], edi
  mov     [rbp+0EC0h+var_B60], rdi
  mov     [rbp+0EC0h+var_CDC], 5Bh
  mov     [rbp+0EC0h+var_470], 5Bh
  mov     [rbp+0EC0h+var_CD8], 4Ch
  mov     [rbp+0EC0h+var_46C], 4Ch
  mov     [rbp+0EC0h+var_CD4], 4Fh
  mov     [rbp+0EC0h+var_468], 4Fh
  mov     [rbp+0EC0h+var_CD0], 47h
  mov     [rbp+0EC0h+var_464], 47h
  mov     [rbp+0EC0h+var_CCC], 5Dh
  mov     [rbp+0EC0h+var_460], 5Dh
  mov     [rbp+0EC0h+var_CC8], 3Ah
  mov     [rbp+0EC0h+var_45C], 3Ah
  mov     [rbp+0EC0h+var_CC4], 20h
  mov     [rbp+0EC0h+var_458], 20h
  mov     [rbp+0EC0h+var_CC0], 4Fh
  mov     [rbp+0EC0h+var_454], 4Fh
  mov     [rbp+0EC0h+var_CBC], 70h
  mov     [rbp+0EC0h+var_450], 70h
  mov     [rbp+0EC0h+var_CB8], 65h
  mov     [rbp+0EC0h+var_44C], 65h
  mov     [rbp+0EC0h+var_CB4], 6Eh
  mov     [rbp+0EC0h+var_448], 6Eh
  mov     [rbp+0EC0h+var_CB0], 20h
  mov     [rbp+0EC0h+var_444], 20h
  mov     [rbp+0EC0h+var_CAC], 47h
  mov     [rbp+0EC0h+var_440], 47h
  mov     [rbp+0EC0h+var_CA8], 55h
  mov     [rbp+0EC0h+var_43C], 55h
  mov     [rbp+0EC0h+var_CA4], 49h
  mov     [rbp+0EC0h+var_438], 49h
  mov     [rbp+0EC0h+var_CA0], 2Eh
  mov     [rbp+0EC0h+var_434], 2Eh
  mov     [rbp+0EC0h+var_C9C], 2Eh
  mov     [rbp+0EC0h+var_430], 2Eh
  mov     [rbp+0EC0h+var_C98], 0Ah
  mov     [rbp+0EC0h+var_42C], 0Ah
  mov     [rbp+0EC0h+var_C94], edi
  mov     [rbp+0EC0h+var_8A0], 5Bh
  mov     [rbp+0EC0h+var_89C], 4Ch
  mov     [rbp+0EC0h+var_898], 4Fh
  mov     [rbp+0EC0h+var_894], 47h
  mov     [rbp+0EC0h+var_890], 5Dh
  mov     [rbp+0EC0h+var_88C], 3Ah
  mov     [rbp+0EC0h+var_888], 20h
  mov     [rbp+0EC0h+var_884], 4Fh
  mov     [rbp+0EC0h+var_880], 70h
  mov     [rbp+0EC0h+var_87C], 65h
  mov     [rbp+0EC0h+var_878], 6Eh
  mov     [rbp+0EC0h+var_874], 20h
  mov     [rbp+0EC0h+var_870], 47h
  mov     [rbp+0EC0h+var_86C], 55h
  mov     [rbp+0EC0h+var_868], 49h
  mov     [rbp+0EC0h+var_864], 2Eh
  mov     [rbp+0EC0h+var_860], 2Eh
  mov     [rbp+0EC0h+var_85C], 0Ah
  mov     qword ptr [rbp+0EC0h+var_8F8], rdi
  mov     qword ptr [rbp+0EC0h+var_8F8+8], 3
  mov     dword ptr [rbp+0EC0h+var_908], edi
  lea     rax, [rbp+0EC0h+var_8A0]
  mov     r8, rdi
  xchg    ax, ax

loc_140004E90:                          ; CODE XREF: main+1F0Aj
  inc     r8
  lea     rax, [rax+4]
  cmp     dword ptr [rax], 0
  jnz     short loc_140004E90
  lea     rdx, [rbp+0EC0h+var_8A0] ; Src
  lea     rcx, [rbp+0EC0h+var_908] ; Dst
  call    sub_1400028E0
  lea     rcx, [rbp+0EC0h+var_9E8]
  call    sub_1400024F0
  movups  xmm0, [rbp+0EC0h+var_908]
  movups  [rbp+0EC0h+var_9E8], xmm0
  movups  xmm1, [rbp+0EC0h+var_8F8]
  movups  [rbp+0EC0h+var_9D8], xmm1
  mov     qword ptr [rbp+0EC0h+var_8F8], rdi
  mov     qword ptr [rbp+0EC0h+var_8F8+8], 3
  mov     dword ptr [rbp+0EC0h+var_908], edi
  lea     r8, [rbp+0EC0h+var_9E8]
  movq    rcx, xmm0
  psrldq  xmm1, 8
  movq    rax, xmm1
  cmp     rax, 4
  cmovnb  r8, rcx
  mov     r9, r8
  cmp     dword ptr [r8], 0
  jz      short loc_140004F20

loc_140004F16:                          ; CODE XREF: main+1F8Ej
  add     r9, 4
  cmp     dword ptr [r9], 0
  jnz     short loc_140004F16

loc_140004F20:                          ; CODE XREF: main+1F84j
  lea     rdx, [rbp+0EC0h+var_70]
  lea     rcx, off_14000A080
  call    sub_140002AF0
  lea     rcx, [rbp+0EC0h+var_A48]
  call    sub_140002140
  movups  xmm0, [rbp+0EC0h+var_70]
  movups  xmmword ptr [rbp+0EC0h+var_A48], xmm0
  movups  xmm1, [rbp+0EC0h+var_60]
  movups  [rbp+0EC0h+var_A38], xmm1
  mov     qword ptr [rbp+0EC0h+var_60], rdi
  mov     qword ptr [rbp+0EC0h+var_60+8], 0Fh
  mov     byte ptr [rbp+0EC0h+var_70], 0
  mov     r8, qword ptr [rbp+0EC0h+var_9D8+8]
  cmp     r8, 4
  jb      short loc_140004F97
  inc     r8
  mov     rdx, qword ptr [rbp+0EC0h+var_9E8]
  lea     rcx, [rbp+0EC0h+var_9E8]
  call    sub_140002A30

loc_140004F97:                          ; CODE XREF: main+1FEFj
  mov     qword ptr [rbp+0EC0h+var_9D8], rdi
  mov     qword ptr [rbp+0EC0h+var_9D8+8], 3
  mov     dword ptr [rbp+0EC0h+var_9E8], edi
  lea     rcx, [rbp+0EC0h+var_A48]
  cmp     qword ptr [rbp+0EC0h+var_A38+8], 10h
  cmovnb  rcx, [rbp+0EC0h+var_A48]
  call    sub_140005A80
  mov     rdx, qword ptr [rbp+0EC0h+var_A38+8]
  cmp     rdx, 10h
  jb      short loc_14000500F
  inc     rdx
  mov     rcx, [rbp+0EC0h+var_A48] ; Memory
  mov     rax, rcx
  cmp     rdx, 1000h
  jb      short loc_14000500A
  add     rdx, 27h
  mov     rcx, [rcx-8]
  sub     rax, rcx
  add     rax, 0FFFFFFFFFFFFFFF8h
  cmp     rax, 1Fh
  jbe     short loc_14000500A
  call    cs:_invalid_parameter_noinfo_noreturn
; ---------------------------------------------------------------------------
  int     3               ; Trap to Debugger
; ---------------------------------------------------------------------------

loc_14000500A:                          ; CODE XREF: main+205Cj
                          ; main+2071j
  call    j_j_free

loc_14000500F:                          ; CODE XREF: main+2046j
  mov     qword ptr [rbp+0EC0h+var_A38], rdi
  mov     qword ptr [rbp+0EC0h+var_A38+8], 0Fh
  mov     byte ptr [rbp+0EC0h+var_A48], 0
  lea     rbx, aDkPkVkUkSkSkXk ; "ñk¥}Åk¥}ék¥}ôk¥}ÿk¥}æk¥}òk¥}äk¥}àk¥}-k¥"...
  mov     rcx, rbx
  call    sub_140002AA0
  test    rax, rax
  jnz     short loc_140005050
  lea     rax, aDkPkVkUkSkSkXk+0D0h ; ""
  call    rax             ; ""
  lea     rax, unk_140007862
  call    rax ; unk_140007862
  call    rbx ; aDkPkVkUkSkSkXk ; "ñk¥}Åk¥}ék¥}ôk¥}ÿk¥}æk¥}òk¥}äk¥}àk¥}-k¥"...

loc_140005050:                          ; CODE XREF: main+20AAj
  lea     rax, [rbp+0EC0h+var_540]
  movups  xmm0, xmmword ptr [rbx]
  movups  xmmword ptr [rax], xmm0
  movups  xmm1, xmmword ptr [rbx+10h]
  movups  xmmword ptr [rax+10h], xmm1
  movups  xmm0, xmmword ptr [rbx+20h]
  movups  xmmword ptr [rax+20h], xmm0
  movups  xmm1, xmmword ptr [rbx+30h]
  movups  xmmword ptr [rax+30h], xmm1
  movups  xmm0, xmmword ptr [rbx+40h]
  movups  xmmword ptr [rax+40h], xmm0
  movups  xmm1, xmmword ptr [rbx+50h]
  movups  xmmword ptr [rax+50h], xmm1
  movups  xmm0, xmmword ptr [rbx+60h]
  movups  xmmword ptr [rax+60h], xmm0
  lea     rax, [rax+80h]
  movups  xmm0, xmmword ptr [rbx+70h]
  movups  xmmword ptr [rax-10h], xmm0
  movups  xmm1, xmmword ptr [rbx+80h]
  movups  xmmword ptr [rax], xmm1
  movups  xmm0, xmmword ptr [rbx+90h]
  movups  xmmword ptr [rax+10h], xmm0
  movups  xmm1, xmmword ptr [rbx+0A0h]
  movups  xmmword ptr [rax+20h], xmm1
  movups  xmm0, xmmword ptr [rbx+0B0h]
  movups  xmmword ptr [rax+30h], xmm0
  movups  xmm1, xmmword ptr [rbx+0C0h]
  movups  xmmword ptr [rax+40h], xmm1
  mov     rax, cs:?cout@std@@3V?$basic_ostream@DU?$char_traits@D@std@@@1@A ; std::basic_ostream<char,std::char_traits<char>> std::cout
  mov     [rbp+0EC0h+var_BC0], rax
  mov     [rbp+0EC0h+var_8B8], rdi
  mov     [rbp+0EC0h+var_8B0], 0Fh
  mov     byte ptr [rbp+0EC0h+var_8C8], 0
  mov     [rbp+0EC0h+var_B58], rdi
  mov     qword ptr [rbp+0EC0h+var_9B8], rdi
  mov     qword ptr [rbp+0EC0h+var_9B8+8], 3
  mov     dword ptr [rbp+0EC0h+var_9C8], edi
  mov     [rbp+0EC0h+var_B50], rdi
  mov     eax, [rbp+0EC0h+var_540]
  xor     eax, 7DBE6BE1h
  mov     [rsp+6A45h+var_6A25], eax
  mov     [rbp+0EC0h+var_C90], eax
  mov     [rbp+0EC0h+var_1E0], eax
  mov     eax, [rbp+0EC0h+var_53C]
  xor     eax, 7DBE6BE1h
  mov     [rsp+6A45h+var_6A21], eax
  mov     [rbp+0EC0h+var_C8C], eax
  mov     [rbp+0EC0h+var_1DC], eax
  mov     eax, [rbp+0EC0h+var_538]
  xor     eax, 7DBE6BE1h
  mov     [rsp+6A45h+var_6A1D], eax
  mov     [rbp+0EC0h+var_C88], eax
  mov     [rbp+0EC0h+var_1D8], eax
  mov     eax, [rbp+0EC0h+var_534]
  xor     eax, 7DBE6BE1h
  mov     [rsp+6A45h+var_6A19], eax
  mov     [rbp+0EC0h+var_C84], eax
  mov     [rbp+0EC0h+var_1D4], eax
  mov     eax, [rbp+0EC0h+var_530]
  xor     eax, 7DBE6BE1h
  mov     [rsp+6A45h+var_6A15], eax
  mov     [rbp+0EC0h+var_C80], eax
  mov     [rbp+0EC0h+var_1D0], eax
  mov     eax, [rbp+0EC0h+var_52C]
  xor     eax, 7DBE6BE1h
  mov     [rsp+6A45h+var_6A11], eax
  mov     [rbp+0EC0h+var_C7C], eax
  mov     [rbp+0EC0h+var_1CC], eax
  mov     eax, [rbp+0EC0h+var_528]
  xor     eax, 7DBE6BE1h
  mov     [rsp+6A45h+var_6A0D], eax
  mov     [rbp+0EC0h+var_C78], eax
  mov     [rbp+0EC0h+var_1C8], eax
  mov     eax, [rbp+0EC0h+var_524]
  xor     eax, 7DBE6BE1h
  mov     [rsp+6A45h+var_6A09], eax
  mov     [rbp+0EC0h+var_C74], eax
  mov     [rbp+0EC0h+var_1C4], eax
  mov     eax, [rbp+0EC0h+var_520]
  xor     eax, 7DBE6BE1h
  mov     [rsp+6A45h+var_6A05], eax
  mov     [rbp+0EC0h+var_C70], eax
  mov     [rbp+0EC0h+var_1C0], eax
  mov     eax, [rbp+0EC0h+var_51C]
  xor     eax, 7DBE6BE1h
  mov     [rsp+6A45h+var_6A01], eax
  mov     [rbp+0EC0h+var_C6C], eax
  mov     [rbp+0EC0h+var_1BC], eax
  mov     eax, [rbp+0EC0h+var_518]
  xor     eax, 7DBE6BE1h
  mov     [rsp+6A45h+var_69FD], eax
  mov     [rbp+0EC0h+var_C68], eax
  mov     [rbp+0EC0h+var_1B8], eax
  mov     eax, [rbp+0EC0h+var_514]
  xor     eax, 7DBE6BE1h
  mov     [rsp+6A45h+var_69F9], eax
  mov     [rbp+0EC0h+var_C64], eax
  mov     [rbp+0EC0h+var_1B4], eax
  mov     eax, [rbp+0EC0h+var_510]
  xor     eax, 7DBE6BE1h
  mov     [rsp+6A45h+var_69F5], eax
  mov     [rbp+0EC0h+var_C60], eax
  mov     [rbp+0EC0h+var_1B0], eax
  mov     eax, [rbp+0EC0h+var_50C]
  xor     eax, 7DBE6BE1h
  mov     [rsp+6A45h+var_69F1], eax
  mov     [rbp+0EC0h+var_C5C], eax
  mov     [rbp+0EC0h+var_1AC], eax
  mov     eax, [rbp+0EC0h+var_508]
  xor     eax, 7DBE6BE1h
  mov     [rsp+6A45h+var_69ED], eax
  mov     [rbp+0EC0h+var_C58], eax
  mov     [rbp+0EC0h+var_1A8], eax
  mov     eax, [rbp+0EC0h+var_504]
  xor     eax, 7DBE6BE1h
  mov     [rsp+6A45h+var_69E9], eax
  mov     [rbp+0EC0h+var_C54], eax
  mov     [rbp+0EC0h+var_1A4], eax
  mov     eax, [rbp+0EC0h+var_500]
  xor     eax, 7DBE6BE1h
  mov     [rsp+6A45h+var_69E5], eax
  mov     [rbp+0EC0h+var_C50], eax
  mov     [rbp+0EC0h+var_1A0], eax
  mov     eax, [rbp+0EC0h+var_4FC]
  xor     eax, 7DBE6BE1h
  mov     [rsp+6A45h+var_69E1], eax
  mov     [rbp+0EC0h+var_C4C], eax
  mov     [rbp+0EC0h+var_19C], eax
  mov     eax, [rbp+0EC0h+var_4F8]
  xor     eax, 7DBE6BE1h
  mov     [rsp+6A45h+var_69DD], eax
  mov     [rbp+0EC0h+var_C48], eax
  mov     [rbp+0EC0h+var_198], eax
  mov     eax, [rbp+0EC0h+var_4F4]
  xor     eax, 7DBE6BE1h
  mov     [rsp+6A45h+var_69D9], eax
  mov     [rbp+0EC0h+var_C44], eax
  mov     [rbp+0EC0h+var_194], eax
  mov     eax, [rbp+0EC0h+var_4F0]
  xor     eax, 7DBE6BE1h
  mov     [rsp+6A45h+var_69D5], eax
  mov     [rbp+0EC0h+var_C40], eax
  mov     [rbp+0EC0h+var_190], eax
  mov     eax, [rbp+0EC0h+var_4EC]
  xor     eax, 7DBE6BE1h
  mov     [rsp+6A45h+var_69D1], eax
  mov     [rbp+0EC0h+var_C3C], eax
  mov     [rbp+0EC0h+var_18C], eax
  mov     eax, [rbp+0EC0h+var_4E8]
  xor     eax, 7DBE6BE1h
  mov     [rsp+6A45h+var_69CD], eax
  mov     [rbp+0EC0h+var_C38], eax
  mov     [rbp+0EC0h+var_188], eax
  mov     eax, [rbp+0EC0h+var_4E4]
  xor     eax, 7DBE6BE1h
  mov     [rsp+6A45h+var_69C9], eax
  mov     [rbp+0EC0h+var_C34], eax
  mov     [rbp+0EC0h+var_184], eax
  mov     eax, [rbp+0EC0h+var_4E0]
  xor     eax, 7DBE6BE1h
  mov     [rbp+0EC0h+var_F40], eax
  mov     [rbp+0EC0h+var_C30], eax
  mov     [rbp+0EC0h+var_180], eax
  mov     eax, [rbp+0EC0h+var_4DC]
  xor     eax, 7DBE6BE1h
  mov     [rbp+0EC0h+var_F3C], eax
  mov     [rbp+0EC0h+var_C2C], eax
  mov     [rbp+0EC0h+var_17C], eax
  mov     eax, [rbp+0EC0h+var_4D8]
  xor     eax, 7DBE6BE1h
  mov     [rbp+0EC0h+var_F38], eax
  mov     [rbp+0EC0h+var_C28], eax
  mov     [rbp+0EC0h+var_178], eax
  mov     eax, [rbp+0EC0h+var_4D4]
  xor     eax, 7DBE6BE1h
  mov     [rbp+0EC0h+var_F34], eax
  mov     [rbp+0EC0h+var_C24], eax
  mov     [rbp+0EC0h+var_174], eax
  mov     eax, [rbp+0EC0h+var_4D0]
  xor     eax, 7DBE6BE1h
  mov     [rbp+0EC0h+var_F30], eax
  mov     [rbp+0EC0h+var_C20], eax
  mov     [rbp+0EC0h+var_170], eax
  mov     eax, [rbp+0EC0h+var_4CC]
  xor     eax, 7DBE6BE1h
  mov     [rbp+0EC0h+var_F2C], eax
  mov     [rbp+0EC0h+var_C1C], eax
  mov     [rbp+0EC0h+var_16C], eax
  mov     eax, [rbp+0EC0h+var_4C8]
  xor     eax, 7DBE6BE1h
  mov     [rbp+0EC0h+var_F28], eax
  mov     [rbp+0EC0h+var_C18], eax
  mov     [rbp+0EC0h+var_168], eax
  mov     eax, [rbp+0EC0h+var_4C4]
  xor     eax, 7DBE6BE1h
  mov     [rbp+0EC0h+var_F24], eax
  mov     [rbp+0EC0h+var_C14], eax
  mov     [rbp+0EC0h+var_164], eax
  mov     eax, [rbp+0EC0h+var_4C0]
  xor     eax, 7DBE6BE1h
  mov     [rbp+0EC0h+var_F20], eax
  mov     [rbp+0EC0h+var_C10], eax
  mov     [rbp+0EC0h+var_160], eax
  mov     eax, [rbp+0EC0h+var_4BC]
  xor     eax, 7DBE6BE1h
  mov     [rbp+0EC0h+var_F1C], eax
  mov     [rbp+0EC0h+var_C0C], eax
  mov     [rbp+0EC0h+var_15C], eax
  mov     eax, [rbp+0EC0h+var_4B8]
  xor     eax, 7DBE6BE1h
  mov     [rbp+0EC0h+var_F18], eax
  mov     [rbp+0EC0h+var_C08], eax
  mov     [rbp+0EC0h+var_158], eax
  mov     eax, [rbp+0EC0h+var_4B4]
  xor     eax, 7DBE6BE1h
  mov     [rbp+0EC0h+var_F14], eax
  mov     [rbp+0EC0h+var_C04], eax
  mov     [rbp+0EC0h+var_154], eax
  mov     eax, [rbp+0EC0h+var_4B0]
  xor     eax, 7DBE6BE1h
  mov     [rbp+0EC0h+var_F10], eax
  mov     [rbp+0EC0h+var_C00], eax
  mov     [rbp+0EC0h+var_150], eax
  mov     eax, [rbp+0EC0h+var_4AC]
  xor     eax, 7DBE6BE1h
  mov     [rbp+0EC0h+var_F0C], eax
  mov     [rbp+0EC0h+var_BFC], eax
  mov     [rbp+0EC0h+var_14C], eax
  mov     r13d, [rbp+0EC0h+var_4A8]
  xor     r13d, 7DBE6BE1h
  mov     [rbp+0EC0h+var_F08], r13d
  mov     [rbp+0EC0h+var_BF8], r13d
  mov     [rbp+0EC0h+var_148], r13d
  mov     r12d, [rbp+0EC0h+var_4A4]
  xor     r12d, 7DBE6BE1h
  mov     [rbp+0EC0h+var_BF4], r12d
  mov     [rbp+0EC0h+var_144], r12d
  mov     r15d, [rbp+0EC0h+var_4A0]
  xor     r15d, 7DBE6BE1h
  mov     [rbp+0EC0h+var_BF0], r15d
  mov     [rbp+0EC0h+var_140], r15d
  mov     r14d, [rbp+0EC0h+var_49C]
  xor     r14d, 7DBE6BE1h
  mov     [rbp+0EC0h+var_BEC], r14d
  mov     [rbp+0EC0h+var_13C], r14d
  mov     esi, [rbp+0EC0h+var_498]
  xor     esi, 7DBE6BE1h
  mov     [rbp+0EC0h+var_BE8], esi
  mov     [rbp+0EC0h+var_138], esi
  mov     edi, [rbp+0EC0h+var_494]
  xor     edi, 7DBE6BE1h
  mov     [rbp+0EC0h+var_BE4], edi
  mov     [rbp+0EC0h+var_134], edi
  mov     ebx, [rbp+0EC0h+var_490]
  xor     ebx, 7DBE6BE1h
  mov     [rbp+0EC0h+var_BE0], ebx
  mov     [rbp+0EC0h+var_130], ebx
  mov     r11d, [rbp+0EC0h+var_48C]
  xor     r11d, 7DBE6BE1h
  mov     [rbp+0EC0h+var_BDC], r11d
  mov     [rbp+0EC0h+var_12C], r11d
  mov     r10d, [rbp+0EC0h+var_488]
  xor     r10d, 7DBE6BE1h
  mov     [rbp+0EC0h+var_BD8], r10d
  mov     [rbp+0EC0h+var_128], r10d
  mov     r9d, [rbp+0EC0h+var_484]
  xor     r9d, 7DBE6BE1h
  mov     [rbp+0EC0h+var_BD4], r9d
  mov     [rbp+0EC0h+var_124], r9d
  mov     r8d, [rbp+0EC0h+var_480]
  xor     r8d, 7DBE6BE1h
  mov     [rbp+0EC0h+var_BD0], r8d
  mov     [rbp+0EC0h+var_120], r8d
  mov     edx, [rbp+0EC0h+var_47C]
  xor     edx, 7DBE6BE1h
  mov     [rbp+0EC0h+var_BCC], edx
  mov     [rbp+0EC0h+var_11C], edx
  mov     ecx, [rbp+0EC0h+var_478]
  xor     ecx, 7DBE6BE1h
  mov     [rbp+0EC0h+var_BC8], ecx
  mov     [rbp+0EC0h+var_118], ecx
  mov     eax, [rbp+0EC0h+var_474]
  xor     eax, 7DBE6BE1h
  mov     [rbp+0EC0h+var_BC4], eax
  mov     [rbp+0EC0h+var_114], eax
  mov     r13d, [rsp+6A45h+var_6A25]
  mov     [rbp+0EC0h+var_610], r13d
  mov     r13d, [rsp+6A45h+var_6A21]
  mov     [rbp+0EC0h+var_60C], r13d
  mov     r13d, [rsp+6A45h+var_6A1D]
  mov     [rbp+0EC0h+var_608], r13d
  mov     r13d, [rsp+6A45h+var_6A19]
  mov     [rbp+0EC0h+var_604], r13d
  mov     r13d, [rsp+6A45h+var_6A15]
  mov     [rbp+0EC0h+var_600], r13d
  mov     r13d, [rsp+6A45h+var_6A11]
  mov     [rbp+0EC0h+var_5FC], r13d
  mov     r13d, [rsp+6A45h+var_6A0D]
  mov     [rbp+0EC0h+var_5F8], r13d
  mov     r13d, [rsp+6A45h+var_6A09]
  mov     [rbp+0EC0h+var_5F4], r13d
  mov     r13d, [rsp+6A45h+var_6A05]
  mov     [rbp+0EC0h+var_5F0], r13d
  mov     r13d, [rsp+6A45h+var_6A01]
  mov     [rbp+0EC0h+var_5EC], r13d
  mov     r13d, [rsp+6A45h+var_69FD]
  mov     [rbp+0EC0h+var_5E8], r13d
  mov     r13d, [rsp+6A45h+var_69F9]
  mov     [rbp+0EC0h+var_5E4], r13d
  mov     r13d, [rsp+6A45h+var_69F5]
  mov     [rbp+0EC0h+var_5E0], r13d
  mov     r13d, [rsp+6A45h+var_69F1]
  mov     [rbp+0EC0h+var_5DC], r13d
  mov     r13d, [rsp+6A45h+var_69ED]
  mov     [rbp+0EC0h+var_5D8], r13d
  mov     r13d, [rsp+6A45h+var_69E9]
  mov     [rbp+0EC0h+var_5D4], r13d
  mov     r13d, [rsp+6A45h+var_69E5]
  mov     [rbp+0EC0h+var_5D0], r13d
  mov     r13d, [rsp+6A45h+var_69E1]
  mov     [rbp+0EC0h+var_5CC], r13d
  mov     r13d, [rsp+6A45h+var_69DD]
  mov     [rbp+0EC0h+var_5C8], r13d
  mov     r13d, [rsp+6A45h+var_69D9]
  mov     [rbp+0EC0h+var_5C4], r13d
  mov     r13d, [rsp+6A45h+var_69D5]
  mov     [rbp+0EC0h+var_5C0], r13d
  mov     r13d, [rsp+6A45h+var_69D1]
  mov     [rbp+0EC0h+var_5BC], r13d
  mov     r13d, [rsp+6A45h+var_69CD]
  mov     [rbp+0EC0h+var_5B8], r13d
  mov     r13d, [rsp+6A45h+var_69C9]
  mov     [rbp+0EC0h+var_5B4], r13d
  mov     r13d, [rbp+0EC0h+var_F40]
  mov     [rbp+0EC0h+var_5B0], r13d
  mov     r13d, [rbp+0EC0h+var_F3C]
  mov     [rbp+0EC0h+var_5AC], r13d
  mov     r13d, [rbp+0EC0h+var_F38]
  mov     [rbp+0EC0h+var_5A8], r13d
  mov     r13d, [rbp+0EC0h+var_F34]
  mov     [rbp+0EC0h+var_5A4], r13d
  mov     r13d, [rbp+0EC0h+var_F30]
  mov     [rbp+0EC0h+var_5A0], r13d
  mov     r13d, [rbp+0EC0h+var_F2C]
  mov     [rbp+0EC0h+var_59C], r13d
  mov     r13d, [rbp+0EC0h+var_F28]
  mov     [rbp+0EC0h+var_598], r13d
  mov     r13d, [rbp+0EC0h+var_F24]
  mov     [rbp+0EC0h+var_594], r13d
  mov     r13d, [rbp+0EC0h+var_F20]
  mov     [rbp+0EC0h+var_590], r13d
  mov     r13d, [rbp+0EC0h+var_F1C]
  mov     [rbp+0EC0h+var_58C], r13d
  mov     r13d, [rbp+0EC0h+var_F18]
  mov     [rbp+0EC0h+var_588], r13d
  mov     r13d, [rbp+0EC0h+var_F14]
  mov     [rbp+0EC0h+var_584], r13d
  mov     r13d, [rbp+0EC0h+var_F10]
  mov     [rbp+0EC0h+var_580], r13d
  mov     r13d, [rbp+0EC0h+var_F0C]
  mov     [rbp+0EC0h+var_57C], r13d
  mov     r13d, [rbp+0EC0h+var_F08]
  mov     [rbp+0EC0h+var_578], r13d
  mov     [rbp+0EC0h+var_574], r12d
  mov     [rbp+0EC0h+var_570], r15d
  mov     [rbp+0EC0h+var_56C], r14d
  mov     [rbp+0EC0h+var_568], esi
  mov     [rbp+0EC0h+var_564], edi
  mov     [rbp+0EC0h+var_560], ebx
  mov     [rbp+0EC0h+var_55C], r11d
  mov     [rbp+0EC0h+var_558], r10d
  mov     [rbp+0EC0h+var_554], r9d
  mov     [rbp+0EC0h+var_550], r8d
  mov     [rbp+0EC0h+var_54C], edx
  mov     [rbp+0EC0h+var_548], ecx
  mov     [rbp+0EC0h+var_544], eax
  xor     ebx, ebx
  mov     qword ptr [rbp+0EC0h+var_8D8], rbx
  mov     qword ptr [rbp+0EC0h+var_8D8+8], 3
  mov     dword ptr [rbp+0EC0h+var_8E8], ebx
  lea     rax, [rbp+0EC0h+var_610]
  mov     r8d, ebx
  cmp     [rsp+6A45h+var_6A25], ebx
  jz      short loc_1400058DB
  nop     word ptr [rax+rax+00h]

loc_1400058D0:                          ; CODE XREF: main+2949j
  inc     r8
  lea     rax, [rax+4]
  cmp     [rax], ebx
  jnz     short loc_1400058D0

loc_1400058DB:                          ; CODE XREF: main+2938j
  lea     rdx, [rbp+0EC0h+var_610] ; Src
  lea     rcx, [rbp+0EC0h+var_8E8] ; Dst
  call    sub_1400028E0
  lea     rcx, [rbp+0EC0h+var_9C8]
  call    sub_1400024F0
  movups  xmm0, [rbp+0EC0h+var_8E8]
  movups  [rbp+0EC0h+var_9C8], xmm0
  movups  xmm1, [rbp+0EC0h+var_8D8]
  movups  [rbp+0EC0h+var_9B8], xmm1
  mov     qword ptr [rbp+0EC0h+var_8D8], rbx
  mov     qword ptr [rbp+0EC0h+var_8D8+8], 3
  mov     dword ptr [rbp+0EC0h+var_8E8], ebx
  lea     r8, [rbp+0EC0h+var_9C8]
  movq    rcx, xmm0
  psrldq  xmm1, 8
  movq    rax, xmm1
  cmp     rax, 4
  cmovnb  r8, rcx
  mov     r9, r8
  cmp     dword ptr [r8], 0
  jz      short loc_14000595F

loc_140005955:                          ; CODE XREF: main+29CDj
  add     r9, 4
  cmp     dword ptr [r9], 0
  jnz     short loc_140005955

loc_14000595F:                          ; CODE XREF: main+29C3j
  lea     rdx, [rbp+0EC0h+var_50]
  lea     rcx, off_14000A080
  call    sub_140002AF0
  lea     rdx, [rbp+0EC0h+var_50]
  lea     rcx, [rbp+0EC0h+var_8C8]
  call    sub_1400023C0
  lea     rcx, [rbp+0EC0h+var_50]
  call    sub_140002140
  mov     r8, qword ptr [rbp+0EC0h+var_9B8+8]
  cmp     r8, 4
  jb      short loc_1400059B4
  inc     r8
  mov     rdx, qword ptr [rbp+0EC0h+var_9C8]
  lea     rcx, [rbp+0EC0h+var_9C8]
  call    sub_140002A30

loc_1400059B4:                          ; CODE XREF: main+2A0Cj
  mov     qword ptr [rbp+0EC0h+var_9B8], rbx
  mov     qword ptr [rbp+0EC0h+var_9B8+8], 3
  mov     dword ptr [rbp+0EC0h+var_9C8], ebx
  lea     rdx, [rbp+0EC0h+var_8C8]
  cmp     [rbp+0EC0h+var_8B0], 10h
  cmovnb  rdx, [rbp+0EC0h+var_8C8]
  mov     rcx, [rbp+0EC0h+var_BC0]
  call    sub_140001C60
  lea     rdx, sub_140001EA0
  mov     rcx, rax
  call    cs:??6?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV01@P6AAEAV01@AEAV01@@Z@Z ; std::basic_ostream<char,std::char_traits<char>>::operator<<(std::basic_ostream<char,std::char_traits<char>> & (*)(std::basic_ostream<char,std::char_traits<char>> &))
  nop
  mov     rdx, [rbp+0EC0h+var_8B0]
  cmp     rdx, 10h
  jb      short loc_140005A44
  inc     rdx
  mov     rcx, [rbp+0EC0h+var_8C8] ; Memory
  mov     rax, rcx
  cmp     rdx, 1000h
  jb      short loc_140005A3F
  add     rdx, 27h
  mov     rcx, [rcx-8]
  sub     rax, rcx
  add     rax, 0FFFFFFFFFFFFFFF8h
  cmp     rax, 1Fh
  jbe     short loc_140005A3F
  call    cs:_invalid_parameter_noinfo_noreturn
; ---------------------------------------------------------------------------
  int     3               ; Trap to Debugger
; ---------------------------------------------------------------------------

loc_140005A3F:                          ; CODE XREF: main+2A91j
                          ; main+2AA6j
  call    j_j_free

loc_140005A44:                          ; CODE XREF: main+2A7Bj
  xor     eax, eax
  mov     rcx, [rbp+0EC0h+var_30]
  xor     rcx, rsp        ; StackCookie
  call    __security_check_cookie
  lea     r11, [rsp+6A45h+var_5AA5]
  mov     rbx, [r11+30h]
  mov     rsi, [r11+38h]
  mov     rdi, [r11+40h]
  mov     rsp, r11
  pop     r15
  pop     r14
  pop     r13
  pop     r12
  pop     rbp
  retn
main            endp ; sp-analysis failed

Example Binaries

You want to have a look at the result in your favorite Disassembler? Please request example binaries here.