Function at 0x10021f36
Capabilities:
Encode data using xor
Identify system language via api

Disassembly:
mov eax, 0x10061aaa
call fcn.10060a78
sub esp, 0xc8
cmp byte [ebp + 0xc], 0
push ebx
push esi
push edi
mov dword [ebp - 0x10], esp
je 0x10021f70
mov eax, dword [ebp + 0x18]
cmp byte [eax], 0
je 0x10022649
push 0
push 0x254
call dword [sym.imp.USER32.dll_GetClientRect]
jmp 0x10022649
xor edi, edi
lea ecx, [ebp - 0x84]
inc edi
push edi
call fcn.10003984
xor ebx, ebx
mov dword [ebp - 4], ebx
mov dword [ebp - 0x44], 0x17633efc
mov dword [ebp - 0x28], 0xf57
cmp dword [ebp - 0x28], 0xffb
jle 0x10022030
mov esi, ebx
mov dword [ebp - 0x30], ebx
mov eax, ebx
mov dword [ebp - 0x20], ebx
mov ecx, eax
mov dword [ebp - 0x18], esi
mov eax, esi
mov edx, ebx
shl eax, cl
mov dword [ebp - 0x24], edx
mov dword [ebp - 0x18], eax
mov ecx, edx
mov esi, ebx
sar eax, cl
mov dword [ebp - 0x2c], eax
xor eax, esi
lea ecx, [ebp - 0xd0]
cdq
push edx
push eax
call fcn.10001a94
pop ecx
pop ecx
cmp dword [eax + 0x14], 0x10
jb 0x10021fdd
mov eax, dword [eax]
push eax
call fcn.10048785
pop ecx
push ebx
push edi
lea ecx, [ebp - 0xd0]
call fcn.10003cd4
mov eax, dword [ebp - 0x2c]
inc esi
cmp esi, 0x89
jl 0x10021fc3
mov edx, dword [ebp - 0x24]
mov eax, dword [ebp - 0x18]
inc edx
mov dword [ebp - 0x24], edx
cmp edx, 0x1f56
jl 0x10021fba
mov eax, dword [ebp - 0x20]
mov esi, dword [ebp - 0x30]
inc eax
mov dword [ebp - 0x20], eax
cmp eax, 0x387a
jl 0x10021fa9
inc esi
mov dword [ebp - 0x30], esi
cmp esi, 0x2554
jl 0x10021fa4
mov dword [ebp - 0x74], 0x255d5800
cmp dword [ebp - 0x28], 0xbc5
jge 0x1002204b
push str.boxwpjzrc_vxbc_hzzrzlku_ucwtzsmq_cwimafxe_gpqhdm_ztvgyd_nnlgwehth_wzjrho_duxbyjc
call fcn.10048785
pop ecx
mov dword [ebp - 4], ebx
lea ecx, [ebp - 0xb0]
mov dword [ebp - 0x6c], 8
push 3
call fcn.10003984
mov byte [ebp - 4], 3
mov dword [ebp - 0x3c], ebx
jmp 0x1002207e
mov ecx, dword [ebp - 0x3c]
mov eax, dword [ebp - 0x84]
mov dword [eax + ecx*4], 0xfffffffe
inc dword [ebp - 0x3c]
cmp dword [ebp - 0x3c], edi
jl 0x1002206b
push ecx
lea eax, [ebp - 0xb0]
push eax
lea eax, [ebp - 0x3c]
push eax
call fcn.10021b49
add esp, 0xc
lea eax, [ebp - 0x84]
mov edx, 0x759e
push eax
lea eax, [ebp - 0x44]
push eax
push ecx
xor cl, cl
call fcn.1001fed1
mov dword [ebp - 0x18], 0x55ad
add esp, 0xc
cmp dword [ebp - 0x18], 0x57e9
jle 0x1002212b
mov esi, ebx
mov dword [ebp - 0x24], ebx
mov eax, ebx
mov dword [ebp - 0x30], ebx
mov edx, esi
mov dword [ebp - 0x2c], ebx
mov ecx, eax
mov esi, ebx
shl edx, cl
mov dword [ebp - 0x20], edx
mov ecx, ebx
mov dword [ebp - 0x28], ebx
mov eax, esi
cdq
idiv ecx
mov ecx, 0x1007bad8
xor edx, dword [ebp - 0x20]
mov eax, edx
cdq
push edx
push eax
call fcn.1000380d
mov ecx, dword [ebp - 0x28]
inc ecx
mov dword [ebp - 0x28], ecx
cmp ecx, 0x5693
jl 0x100220df
inc esi
cmp esi, 0x4a63
jl 0x100220da
mov eax, dword [ebp - 0x30]
mov esi, dword [ebp - 0x24]
inc eax
mov dword [ebp - 0x30], eax
cmp eax, 0x3588
jl 0x100220cc
inc esi
mov dword [ebp - 0x24], esi
cmp esi, 0x732f
jl 0x100220c7
push ecx
lea eax, [ebp - 0x74]
push eax
lea eax, [ebp - 0xb0]
push eax
lea eax, [ebp - 0x6c]
push eax
push 0x5ec0
push 0x50
lea eax, [ebp - 0x84]
push ebx
push eax
lea edx, [ebp - 0x44]
call fcn.10022d12
add esp, 0x20
mov byte [ebp - 4], 4
cmp dword [ebp - 0x18], 0x54a1
jge 0x10022192
mov edx, str.apdcg_oodcpzqyy_fwpyj_ctbtylkl_jansoq_xygi_ekirl_asl_hyctnabg
mov ecx, 0x1007bad8
call fcn.10005a21
jmp 0x10022192
lea ecx, [ebp - 0xb0]
call fcn.100039e1
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x84]
call fcn.100039e1
push dword [ebp + 0x10]
lea ecx, [ebp - 0xa4]
call fcn.10003922
push ecx
push dword [ebp + 8]
lea ecx, [ebp - 0xa4]
mov dword [ebp - 4], 6
call fcn.100248c0
mov dword [ebp - 0x40], eax
cmp eax, 0xffffffff
je 0x100224d4
mov dword [ebp - 0x1c], 0x47dc
lea ecx, [ebp - 0x54]
mov dword [ebp - 0x20], edi
mov dword [ebp - 0x48], 0xa906
push edi
call fcn.10003984
push ebx
lea edx, [ebp - 0x54]
mov byte [ebp - 4], 7
lea ecx, [ebp - 0x38]
call fcn.100208fb
pop ecx
mov dword [ebp - 0x38], ebx
jmp 0x10022219
mov eax, dword [ebp - 0x38]
mov dword [ebp + eax*4 - 0xb8], ebx
inc dword [ebp - 0x38]
cmp dword [ebp - 0x38], 2
jl 0x1002220c
mov eax, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x1c]
cmp eax, dword [ebp - 0x1c]
jl 0x10022255
mov eax, dword [ebp - 0x1c]
xor edx, edx
test eax, eax
mov eax, dword [ebp - 0x20]
sets dl
xor ecx, ecx
cmp edx, eax
setge cl
xor eax, eax
cmp ecx, 0x14b5
setge al
imul eax, eax, 0x7c10
test eax, eax
mov eax, ebx
je 0x10022257
mov eax, edi
cmp eax, dword [ebp - 0x48]
jne 0x100223b8
mov eax, 0x3c5ad058
mov dword [ebp - 0x64], eax
mov dword [ebp - 0x60], eax
mov dword [ebp - 0x5c], eax
mov dword [ebp - 0x58], eax
mov dword [ebp - 0x18], 0xfffffffd
mov dword [ebp - 0x20], ebx
jmp 0x100222ad
push edi
push 0x7332
push 0x2432
lea eax, [ebp - 0x48]
mov dword [ebp - 0x68], 0x2c9a130d
push eax
lea eax, [ebp - 0x68]
mov edx, 0x52ad
push ebx
push eax
mov ecx, 0x2152
call fcn.1001ffd6
add esp, 0x18
inc dword [ebp - 0x20]
cmp dword [ebp - 0x20], ebx
jle 0x1002227d
mov dword [ebp - 0x1c], ebx
jmp 0x100223ad
mov dword [ebp - 0x24], 0x6f263393
mov dword [ebp - 0x20], ebx
jmp 0x100223a1
mov dword [ebp - 0x2c], 0xffffffff
mov dword [ebp - 0x18], ebx
jmp 0x100222e6
mov eax, dword [ebp - 0x18]
mov dword [ebp + eax*4 - 0x8c], 0x21f20595
inc dword [ebp - 0x18]
cmp dword [ebp - 0x18], 2
jl 0x100222d5
mov eax, dword [ebp - 0x1c]
xor ecx, ecx
mov eax, dword [ebp - 0x24]
cmp eax, 0xffff
setne cl
cmp ecx, dword [ebp - 0x24]
je 0x10022308
mov ecx, ebx
cmp dword [ebp - 0x58], ebx
je 0x1002230a
mov ecx, edi
mov eax, dword [ebp - 0x58]
xor edx, edx
cmp eax, ecx
mov eax, dword [ebp - 0x58]
setge dl
xor ecx, ecx
cmp eax, edx
setle cl
mov dword [ebp - 0x18], ecx
cmp dword [ebp - 0x18], ebx
je 0x10022333
mov ecx, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x54]
cmp dword [eax + ecx*4], ebx
je 0x10022333
mov ebx, edi
mov esi, dword [ebp - 0x1c]
xor ecx, ecx
mov eax, dword [ebp - 0x20]
cmp ebx, eax
mov eax, dword [ebp - 0x1c]
setl cl
xor edx, edx
cmp ecx, eax
mov eax, dword [ebp - 0x54]
setne dl
xor ebx, ebx
cmp edx, dword [eax + esi*4]
mov eax, dword [ebp - 0x58]
setl bl
xor ecx, ecx
cmp ebx, eax
setge cl
xor ebx, ebx
mov dword [ebp - 0x88], ecx
mov eax, dword [ebp - 0x88]
mov eax, dword [ebp - 0x64]
mov eax, dword [ebp - 0x24]
add eax, 0x49145018
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x18], 3
cmp dword [ebp - 0x18], ebx
jl 0x1002239e
push 0x38d2
mov edx, 0x5e65
xor cl, cl
call fcn.100232ac
dec dword [ebp - 0x18]
pop ecx
jns 0x10022387
inc dword [ebp - 0x20]
cmp dword [ebp - 0x20], ebx
jle 0x100222c9
inc dword [ebp - 0x1c]
cmp dword [ebp - 0x1c], ebx
jle 0x100222ba
jmp 0x100223fb
mov eax, dword [ebp - 0x54]
mov eax, dword [eax]
mov dword [ebp - 0xb8], eax
mov dword [ebp - 0x1c], ebx
jmp 0x100223f6
push ecx
push 0x65b9
push 0x1caf
push 0x6fca
lea eax, [ebp - 0x1c]
mov edx, 0x963
push eax
lea eax, [ebp - 0x54]
push eax
push edi
push 0x6751
call fcn.10022d12
add esp, 0x20
inc dword [ebp - 0x1c]
cmp dword [ebp - 0x1c], edi
jl 0x100223c8
lea ecx, [ebp - 0x54]
mov byte [ebp - 4], 6
call fcn.100039e1
push 0x1e77
lea eax, [ebp - 0xa4]
xor dl, dl
push eax
lea eax, [ebp - 0x40]
mov ecx, 0x59d5
push eax
call fcn.10020184
mov dword [ebp - 0x30], 0x2146
add esp, 0xc
cmp dword [ebp - 0x30], 0x226f
jle 0x10022490
mov dword [ebp - 0x24], ebx
mov edx, ebx
mov dword [ebp - 0x18], ebx
mov esi, ebx
mov ecx, ebx
mov dword [ebp - 0x28], ebx
mov eax, esi
sar eax, cl
mov ecx, 0x1007bad8
or eax, edx
or eax, dword [ebp - 0x24]
cdq
push edx
push eax
call fcn.1000380d
mov ecx, dword [ebp - 0x28]
mov edx, dword [ebp - 0x18]
inc ecx
mov dword [ebp - 0x28], ecx
cmp ecx, 0x2721
jl 0x10022445
inc esi
cmp esi, 0x4b92
jl 0x10022440
inc edx
mov dword [ebp - 0x18], edx
cmp edx, 0x4d15
jl 0x1002243e
mov eax, dword [ebp - 0x24]
inc eax
mov dword [ebp - 0x24], eax
cmp eax, 0x74b3
jl 0x10022439
mov byte [ebp - 4], 8
cmp dword [ebp - 0x30], 0x1e32
jge 0x100224cd
mov edx, str.umlevz_tpxhtrxxx_sxxwmp_xsaqev_vvjf_gbvxf_srgab_pfaje_rwotrfi_oofxey
mov ecx, 0x1007bad8
call fcn.10005a21
jmp 0x100224cd
mov dword [ebp - 4], 6
push ecx
push ecx
call fcn.10021987
pop ecx
push dword [ebp + 8]
lea edx, [ebp - 0xa4]
push 0x325f
lea ecx, [ebp - 0x40]
call fcn.100232d5
mov dword [ebp - 0x18], edi
add esp, 0xc
mov dword [ebp - 0x2c], 0x3629aa81
mov dword [ebp - 0x2c], 0x4b283066
mov dword [ebp - 0x2c], edi
mov dword [ebp - 0x2c], 0x1d2250db
mov dword [ebp - 0x78], 0xfffffffd
mov dword [ebp - 0x28], 0x5d10
cmp dword [ebp - 0x28], 0x5e10
jle 0x10022557
mov esi, ebx
mov edi, ebx
mov eax, esi
mov ecx, 0x1007bad8
cdq
idiv edi
mov eax, edx
cdq
push edx
push eax
call fcn.1000380d
inc edi
cmp edi, 0x5851
jl 0x1002252b
inc esi
cmp esi, 0x55a4
jl 0x10022529
call dword [sym.imp.KERNEL32.dll_GetUserDefaultUILanguage]
mov dword [ebp - 0x2c], ebx
mov byte [ebp - 4], 0xa
cmp dword [ebp - 0x28], 0x5cdd
jge 0x10022594
mov edx, str.zqlcp_adqt_auqgah_hsv_mrtnogig_upwvxiyhi_fsdvddarp_yzltlfw_dvkwhky_qicrif
mov ecx, 0x1007bad8
call fcn.10005a21
jmp 0x10022594
mov dword [ebp - 4], 6
mov dword [ebp - 0x18], ebx
jmp 0x100225ae
mov eax, dword [ebp - 0x18]
mov dword [ebp + eax*4 - 0x70], 0x8c6a53d0
inc dword [ebp - 0x18]
cmp dword [ebp - 0x18], 1
jl 0x100225a0
mov dword [ebp - 0x18], ebx
cmp dword [ebp - 0x18], ebx
jl 0x100225e2
mov eax, dword [ebp - 0x18]
cmp dword [ebp + eax*4 - 0x70], ebx
jne 0x100225e2
push ebx
mov byte [ebp - 0x31], bl
lea ecx, [ebp - 0x31]
push 0x3756
mov edx, 0x6e23
call fcn.1002075b
dec dword [ebp - 0x18]
pop ecx
pop ecx
jns 0x100225bc
push 0x64e0
push 1
lea eax, [ebp - 0x78]
xor dl, dl
push eax
push 0x499
mov cl, 1
call fcn.100207a5
xor edi, edi
lea eax, [ebp - 0xa4]
inc edi
lea ecx, [ebp - 0x40]
push edi
push 0x3474
push eax
push 0x4c70
push edi
push 0x429b
mov edx, 0x2fac
call fcn.1001ffd6
mov ecx, dword [ebp + 0x20]
lea eax, [ebp - 0xa4]
add esp, 0x28
cmp ecx, eax
je 0x1002263c
push 0xffffffffffffffff
push ebx
push eax
call fcn.10003d18
push ebx
push edi
lea ecx, [ebp - 0xa4]
call fcn.100041df
mov ecx, dword [ebp - 0xc]
pop edi
pop esi
mov dword fs:[0], ecx
pop ebx
mov esp, ebp
pop ebp
ret