Function at 0x14001d060
Capabilities:
Allocate thread local storage
Encode data using xor
Identify system language via api

Disassembly:
push rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x38
imul r12d, dword [0x140042b78], 0xffffffb3
xor ebx, ebx
movzx edi, byte [0x140042b65]
mov r14d, 0xb2
neg edi
mov dword [rsp + 0x90], r14d
and edi, 3
mov byte [rsp + 0x80], 0xf1
mov eax, 0xaaaaaaab
mov dword [0x140042b78], ebx
mul r12d
mov ebp, 0xf1
lea esi, [r14 + 0x61]
shr edx, 1
lea eax, [rdx + rdx*2]
sub r12d, eax
cmp dword [0x140042a8c], ebp
sete al
dec dword [0x140042b5c]
xor byte [0x140042b67], al
test byte [0x140042b56], 0x80
jne 0x14001d0ea
lea eax, [rbx + 0x11b]
mov dword [0x140042b6c], ebx
test eax, eax
je 0x14001d0f4
mov dword [0x140042b6c], 1
cmp dword [0x140042b4c], ebx
setne byte [0x140042b88]
call qword [sym.imp.KERNEL32.dll_GetSystemDefaultUILanguage]
movzx eax, byte [0x140042b80]
mov r11d, dword [0x140042a88]
mov ecx, dword [0x140042b34]
movzx r15d, r12b
mov r8d, r15d
or r8d, r14d
and r8d, eax
mov eax, dword [0x140042b30]
cmp r11d, 0xbf
sete byte [0x140042b88]
and ecx, 0x1ab
xor ecx, 0xd
and eax, 0xffffffb3
or ecx, eax
xor dword [0x140042b5c], ecx
cmp edi, 0x199
jne 0x14001d16c
movzx r9d, byte [0x140042b40]
lea eax, [r12 - 0x67]
or al, 0x12
sub r9b, al
jmp 0x14001d174
movzx r9d, byte [0x140042a63]
movzx r10d, byte [0x140042b81]
mov ecx, r15d
imul ecx, dword [0x140042b38]
mov eax, 0x55555556
lea edi, [r10 + 0x27]
imul ecx
mov eax, edx
shr eax, 0x1f
add edx, eax
cmp byte [0x140042b83], bl
jne 0x14001d1a7
mov eax, ebx
test r9b, r9b
je 0x14001d1ac
mov eax, 1
movzx r13d, byte [0x140042b78]
and r11d, eax
movzx eax, byte [0x140042a86]
mov ecx, r15d
mov r9d, dword [0x140042b2c]
xor al, dl
mov byte [rsp + 0x88], al
add r13b, 4
mov byte [0x140042a63], al
mov edx, 0xc8
movzx eax, r10b
or al, 1
add byte [0x140042b67], al
movzx eax, byte [0x140042a87]
or al, 5
and byte [0x140042b57], al
shl r9d, cl
mov ecx, dword [0x140042b4c]
test ecx, ecx
mov eax, ebx
setne al
mov ecx, eax
mov eax, ebx
cmp ecx, 1
sete al
and r8d, r9d
xor ecx, eax
sub rdx, 1
jne 0x14001d204
cmp byte [0x140042a87], bl
mov r9d, dword [0x140042a64]
mov dword [0x140042b4c], ecx
mov dword [0x140042b84], r8d
jne 0x14001d321
movzx eax, r13b
sub ebp, eax
movzx ecx, r10b
movzx eax, byte [0x140042b57]
xor ebp, eax
mov eax, ebx
xor ebp, 0x1ab
or r8d, ebp
test r12b, r12b
mov dword [0x140042b84], r8d
sete al
cmp ecx, eax
sete al
add r10b, al
mov eax, ebx
cmp r9d, 0x17
mov byte [0x140042b81], r10b
sete al
and dword [0x140042b28], eax
cmp dword [0x140042b30], ebx
jne 0x14001d2a0
mov eax, r15d
mov ecx, edi
sub eax, edi
shl eax, cl
test eax, eax
mov eax, ebx
je 0x14001d2a5
mov eax, 1
and dword [0x140042b48], eax
lea r14d, [r8 + 0x51]
mov eax, dword [0x140042b34]
xor eax, esi
mov dword [rsp + 0x90], r14d
jne 0x14001d2c7
mov edx, ebx
test edi, edi
je 0x14001d2cc
mov edx, 1
movzx r8d, byte [0x140042a62]
mov ecx, ebx
movsx eax, byte [0x140042b56]
mov r10d, dword [0x140042b7c]
add eax, r15d
sete cl
and ecx, r10d
add dword [0x140042b40], ecx
cmp dword [0x140042b68], r14d
sete al
and dl, byte [0x140042b67]
and r8b, al
cmp byte [0x140042b54], 0x4c
mov byte [0x140042a62], r8b
sete al
or dl, al
mov byte [0x140042b67], dl
jmp 0x14001d330
movzx r8d, byte [0x140042a62]
mov r10d, dword [0x140042b7c]
movsx ebp, byte [rsp + 0x88]
movzx eax, r13b
sub al, r12b
and al, byte [0x140042a87]
xor al, byte [0x140042b38]
xor al, 0x21
or byte [0x140042b82], al
mov eax, 0xaaaaaaab
mul edi
shr edx, 1
lea eax, [rdx + rdx*2]
mov edx, r14d
sub ebp, eax
mov eax, ebx
add ebp, edi
mov ecx, ebp
shr edx, cl
lea ecx, [r15 - 0x98]
cmp r10d, edx
sete al
or r11d, eax
movsx eax, r8b
xor ecx, eax
mov dword [0x140042a88], r11d
add r9d, ecx
cmp byte [0x140042a86], bl
jne 0x14001d39e
mov dword [0x140042b3c], ebx
test edi, edi
je 0x14001d3a8
mov dword [0x140042b3c], 1
add r9d, dword [0x140042b30]
cmp dword [0x140042b2c], ebx
mov dword [0x140042a64], r9d
jne 0x14001d3d3
mov eax, 0xc7
mov byte [0x140042b55], bl
movzx ecx, r13b
shr al, cl
test al, al
je 0x14001d3da
mov byte [0x140042b55], 1
call qword [sym.imp.KERNEL32.dll_GetErrorMode]
movzx eax, byte [0x140042b88]
mov edx, ebx
movzx ecx, byte [0x140042b28]
sub al, r12b
sub al, 0x1b
mov dword [0x140042b2c], ebx
mov byte [0x140042a62], al
sub cl, 0x4d
mov eax, 0xb3
sub al, r13b
and cl, al
movzx eax, byte [0x140042a87]
or cl, al
sub al, cl
mov ecx, 0xd
mov byte [0x140042a87], al
movsx eax, byte [0x140042b56]
sub ecx, eax
mov eax, dword [0x140042b6c]
cmp ecx, 0x11b
sete dl
add eax, 0xfffffee5
and edx, eax
lea eax, [rdi + 0x4c]
or al, byte [0x140042b84]
add byte [0x140042b65], al
mov eax, dword [0x140042b78]
xor dword [0x140042b4c], edx
xor eax, 1
sub dword [0x140042b44], eax
call qword [sym.imp.USER32.dll_GetFocus]
cmp dword [0x140042b84], esi
mov eax, ebx
movzx r11d, byte [0x140042b83]
movzx r9d, byte [0x140042b82]
seta al
movzx r8d, byte [0x140042b57]
cmp eax, esi
je 0x14001d524
cmp dword [0x140042b34], ebx
mov eax, ebx
mov ecx, r15d
setne al
mov dword [0x140042b30], eax
mov eax, dword [0x140042a8c]
add eax, 0xd
shl eax, cl
test eax, eax
je 0x14001d4cf
movzx ecx, r8b
mov eax, 0xbf
shl eax, cl
test eax, eax
mov eax, 1
jne 0x14001d4d1
mov eax, ebx
and r8b, al
movzx ebp, r9b
movzx eax, r11b
mov r14d, edi
and r14d, 3
add ebp, 0x8e
add r14d, eax
mov eax, 0xaaaaaaab
mul r14d
mov dword [rsp + 0x90], r14d
mov eax, 1
mov esi, edx
shr esi, 1
add esi, dword [0x140042b4c]
test bl, bl
jne 0x14001d511
mov eax, ebx
mov r10d, dword [0x140042b58]
add r10d, eax
mov dword [0x140042b58], r10d
jmp 0x14001d52b
mov r10d, dword [0x140042b58]
imul r13d, dword [0x140042b28], 0xd
mov eax, 0xcccccccd
movzx r12d, byte [0x140042b80]
movsx r14d, byte [0x140042b88]
movzx ecx, r11b
imul r11d, ecx, 0xd
mov qword [rsp + 0x28], 0x121
mul r11d
mov eax, 0xaaaaaaab
shr edx, 2
lea ecx, [rdx + rdx*4]
mul r13d
sub r11d, ecx
mov eax, 0xcccccccd
shr edx, 1
mov dword [rsp + 0x98], r11d
movzx r11d, byte [0x140042b55]
lea ecx, [rdx + rdx*2]
sub r13d, ecx
movsx ecx, byte [0x140042b64]
imul ecx, ecx, 0x121
mov dword [rsp + 0x88], r13d
mov r13d, dword [0x140042b38]
mul ecx
shr edx, 2
lea eax, [rdx + rdx*4]
mov edx, dword [0x140042b40]
sub ecx, eax
mov al, 0xf1
mov dword [rsp + 0x20], ecx
nop dword [rax]
cmp r14d, esi
jge 0x14001d653
test ebp, ebp
je 0x14001d653
cmp byte [0x140042b54], bl
je 0x14001d653
test r13d, r13d
je 0x14001d5f2
lea ecx, [rsi + 0xc7]
mov eax, r15d
shl eax, cl
test eax, eax
mov eax, 1
jne 0x14001d5f4
mov eax, ebx
xor r11b, al
mov ecx, ebx
movzx eax, byte [0x140042a87]
cmp eax, edi
movzx eax, dl
sete cl
xor al, bpl
xor al, 0xb3
mov dword [0x140042b84], ecx
sub r12b, al
mov eax, ebx
cmp dword [0x140042a88], edi
sete al
or eax, edi
jne 0x14001d636
lea eax, [r13 + 0xbf]
mov byte [0x140042b81], bl
test eax, eax
je 0x14001d63d
mov byte [0x140042b81], 1
mov eax, dword [0x140042b78]
mov ecx, r15d
shr eax, cl
xor r9b, al
movzx eax, byte [rsp + 0x80]
movzx eax, al
mov ecx, ebp
sub eax, 0x17
or eax, esi
cmp r10d, eax
sete al
or r8b, al
mov eax, edx
shr eax, cl
add edx, eax
movzx eax, byte [rsp + 0x20]
sub qword [rsp + 0x28], 1
mov byte [rsp + 0x80], al
jne 0x14001d5c0
mov dword [0x140042b40], edx
mov byte [0x140042b57], r8b
mov byte [0x140042b82], r9b
mov byte [0x140042b55], r11b
mov byte [0x140042b80], r12b
call qword [sym.imp.KERNEL32.dll_GetThreadLocale]
call qword [sym.imp.KERNEL32.dll_GetCurrentThread]
mov r9d, dword [0x140042b40]
mov eax, ebx
mov r14d, dword [rsp + 0x90]
cmp r9d, 0x199
mov r13d, dword [rsp + 0x88]
setb al
cmp r14d, eax
je 0x14001d703
movzx eax, byte [0x140042b57]
mov ecx, ebx
shl eax, 0xd
cmp eax, 0xffffffb3
sete cl
cmp ecx, r14d
jne 0x14001d6fb
mov eax, 1
test r9d, r9d
jne 0x14001d6fd
mov eax, ebx
and dword [0x140042b60], eax
movzx r12d, byte [0x140042b65]
mov ecx, r15d
movsx r8d, byte [0x140042b64]
mov edx, r13d
imul r12d, edi
shl edx, cl
and edx, r8d
and dword [0x140042b44], edx
and r12d, 3
mov dword [rsp + 0x20], r12d
cmp dword [rsp + 0x98], r14d
jae 0x14001d753
movzx eax, byte [0x140042b82]
mov ecx, ebx
add eax, 0x17
cmp eax, r15d
sete cl
mov dword [0x140042b4c], ecx
movsx eax, byte [0x140042a63]
mov ecx, esi
and ecx, 0xd
or ecx, eax
movzx eax, byte [0x140042b80]
or ecx, eax
mov eax, dword [0x140042b5c]
sub eax, edi
or ecx, r14d
add dword [0x140042b6c], ecx
movzx ecx, byte [rsp + 0x80]
mov dword [0x140042a8c], eax
sar r8b, cl
add byte [0x140042b66], r8b
test r14d, r14d
sete al
xor al, byte [0x140042b58]
xor al, r9b
xor byte [0x140042b83], al
call qword [sym.imp.KERNEL32.dll_TlsAlloc]
movzx ecx, byte [0x140042a87]
mov eax, ecx
and eax, 0x4c
add dword [0x140042b44], eax
cmp byte [0x140042b81], bl
jne 0x14001d7ce
mov eax, ebx
test ecx, ecx
je 0x14001d7d3
mov eax, 1
and byte [0x140042b67], al
mov ecx, esi
movsx eax, byte [0x140042a62]
mov edx, 0x24
mov r11d, dword [0x140042a88]
mov r10d, 0x5aa
movzx r13d, byte [0x140042b57]
and r11d, 0xbf
mov ebp, dword [0x140042b28]
movzx r15d, byte [0x140042b64]
mov r8d, dword [0x140042b6c]
movzx r9d, byte [0x140042b82]
mov r12d, dword [rsp + 0x88]
mov r14d, dword [rsp + 0x98]
shl edx, cl
and edx, eax
mov byte [0x140042b81], bl
movsx eax, byte [0x140042b55]
or edx, eax
mov byte [0x140042b55], 1
mov dword [0x140042b30], edx
add r13d, esi
mov edx, dword [0x140042b34]
nop dword [rax]
mov ecx, r14d
mov eax, r8d
shl eax, cl
mov ecx, r12d
shl eax, cl
and edx, eax
mov eax, r11d
or eax, 0x121
or r8d, eax
test r13d, r13d
je 0x14001d88f
movsx eax, r15b
xor eax, edi
or eax, r12d
mov eax, 1
jne 0x14001d891
mov eax, ebx
xor edx, eax
movzx eax, bpl
or al, 0x21
or r9b, al
sub r10, 1
jne 0x14001d860
movzx eax, byte [0x140042b80]
mov ecx, dword [0x140042b38]
mov r14d, dword [rsp + 0x90]
sub r14d, dword [rsp + 0x20]
mov dword [0x140042b34], edx
mov dword [0x140042b6c], r8d
movzx r8d, byte [rsp + 0x80]
sub al, r8b
mov byte [0x140042b82], r9b
lea edx, [r8 + 0xc7]
sar edx, cl
xor dl, al
and byte [0x140042b56], dl
cmp esi, r14d
sete bl
or ebx, ebp
mov dword [0x140042a64], ebx
call fcn.14001c720
xor eax, eax
add rsp, 0x38
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret