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

Disassembly:
push ebp
mov ebp, esp
mov byte [0x40db49], 1
mov edx, dword [esp]
mov esi, 0x401668
add esi, ebx
mov byte [0x40dcd0], 1
sub ecx, 0xfffffff8
lea ebx, [ebx + 0x3a]
push ecx
and ecx, edx
jae 0x40139e
sub ebx, esi
mov edx, edx
or ebx, esp
mov ecx, eax
call dword [sym.imp.kernel32.dll_GetSystemDefaultUILanguage]
jae 0x4013ae
sub ebx, esi
lea ecx, [ecx]
inc dword [0x40dd31]
cmp eax, 0xba
jb 0x4013e1
jne 0x4013f9
lea ebx, [0x40222d]
sub ebx, 0x404d21
lea eax, [esp - 0x38]
push dword [0x405cdb]
push 0x403aa8
pop ecx
add ecx, edi
xor edx, edx
and eax, edx
mov ebx, edx
not bl
push 0x40494a
call dword [sym.imp.kernel32.dll_ExitThread]
or edx, 0xffffffff
add ebx, edx
lea ebx, [eax + ecx]
or ebx, eax
mov eax, dword fs:[0x30]
add bh, al
mov edx, eax
dec bh
lea ebx, [eax + ecx]
lea ebx, [esi]
sbb ebx, edx
mov eax, dword [edx + 0x2c]
not bh
xor ebx, ecx
mov cl, byte [eax + 0x6f]
jae 0x401425
push 0xffffffffffffffe3
pop ebx
shr eax, 0x10
lea ebx, [eax + edi]
mov ebx, ecx
sub cl, ah
je 0x40145a
lea eax, [esp + 4]
mov dword [0x40dda0], ebx
mov edx, dword [ebp]
push 0x402327
add dword [esp + 0x10], edx
push 0x405b69
add edx, ecx
call dword [sym.imp.kernel32.dll_lstrcmpW]
pop ecx
and ecx, 0xfffffff0
leave
ret
add bl, bl
xor ebx, ebx
jg 0x401462
dec bl
add bl, bl
mov eax, dword [edx + 0xc]
xor ebx, 0x78
add bl, cl
mov esi, dword [eax + 0x1c]
dec bh
lodsd eax, dword [esi]
jg 0x401476
add ebx, esp
mov eax, dword [eax + 8]
jg 0x401483
or ebx, edx
mov bl, al
mov al, 0x66
mov al, bl
add ebx, ebx
mov edx, dword [eax + 0x3c]
mov ebx, dword [esp]
jbe 0x401492
sub ebx, ecx
xor bh, 0x58
sub ebx, edi
add edx, 0x104
add eax, dword [eax + edx]
sub ebx, eax
lea ebx, [ebx]
lea ebx, [eax]
inc eax
mov ecx, dword [eax]
add bl, bl
add ebx, esp
and ecx, dword [eax + 4]
inc bh
add ecx, 0x405027
not bl
sbb ebx, esi
cmp ecx, 0x558606c
jne 0x4014a1
add bh, al
xchg edx, eax
xor ebx, esi
mov ecx, ecx
sub edx, 1
ror ebx, 0x9d
mov eax, dword [edx]
mov bl, cl
mov cl, 0x78
mov cl, bl
and eax, 0xffff
lea ebx, [edi]
add eax, 0x40304b
xor ebx, edx
sub eax, 0x40bba0
jne 0x4014c6
add bh, cl
lea eax, [eax]
xor dword [0x40df74], edx
sub ebx, eax
push 0x40dfc5
and ebx, esp
sbb ebx, esp
push 0x3c
add dword [esp], 4
inc bl
push 0x2f10
add bh, 0xb5
sbb ebx, edi
push 0x401341
neg bx
and ebx, edi
push 0xfffffffffffffffe
mov ebx, edi
inc dword [esp]
inc bl
mov ebx, 0x4049e9
mov ebx, ebp
mov ecx, dword [0x40df74]
call ecx
xor ebx, ecx
lea ecx, [0x4012e3]
mov ebx, ebp
lea ebx, [eax + esi]
sub ecx, 0x40124d
lea ebx, [edx]
mov edx, 0x40161c
mov bl, al
mov al, 0x76
mov al, bl
mov edi, 0xe6
xor dword [edx], edi
or ebx, ecx
add bl, al
mov esi, dword [edx]
sar ebx, 4
sar ebx, 0xa6
add esi, 0x10
mov dword [edx], esi
and ebx, edi
add edx, 0xffffffff
jbe 0x401578
neg bl
xor ebx, 0xf
sub ecx, 1
jne 0x40154e
jae 0x401584
add ebx, esi
sar ebx, 0xa5
mov esi, 0x16d6e368
les edx, [esi - 0x4e]
or esi, eax
mov dl, 0x9f
neg byte [ebx - 7]
jecxz 0x401582
sbb cl, byte [esi - 0x41]
inc edx
push ss
pushfd
mov byte [0xe49c12f2], al
push edi
push esp
sbb al, byte [eax]
and al, 0x9d
push edx
xchg ebp, eax
push esi
out dx, al
dec ebp
salc
inc eax
dec ecx
or ebp, eax
sub al, 0x9f
out dx, al
sbb dword [esi], ebx
invalid