Function at 0x1405660
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x14481f0
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x30
push 0x4580a35
push 0x50
call fcn.01424cb6
add esp, 8
mov dword [ebp - 0x14], eax
test eax, eax
je 0x1405b3f
lea ecx, [eax + 0x38]
mov dword [eax + 0x38], 0
mov dword [eax + 0x3c], 0
mov dl, 0x57
mov dword [eax + 0x40], 0
add eax, 0x44
push esi
mov esi, dword [ebp + 0xc]
mov dword [ebp - 0x38], ecx
mov ecx, 0x44
mov dword [ebp - 0x28], eax
mov dword [eax], 0
mov dword [eax + 4], 0
mov dword [eax + 8], 0
push edi
mov edi, dword [ebp + 8]
cmp esi, ecx
jbe 0x14056f1
nop dword [eax]
xor byte [ecx + edi], dl
lea eax, [ecx + edi]
mov al, byte [eax]
inc ecx
add al, 0x57
add dl, al
cmp ecx, esi
jb 0x14056e0
lea ecx, [edi + 0x44]
cmp ecx, edi
jb 0x1405b22
lea edx, [edi + esi]
lea eax, [ecx + 0x18]
cmp eax, edx
jae 0x1405b22
mov esi, dword [ebp - 0x14]
movups xmm0, xmmword [ecx]
movups xmmword [esi], xmm0
movq xmm0, qword [ecx + 0x10]
movq qword [esi + 0x10], xmm0
xor dword [esi + 8], 0x7a32bc85
xor dword [esi + 0xc], 0x49c042d1
add dword [esi + 0x10], 0xfffffff4
xor dword [esi + 0x14], 0x872c3d47
mov dword [esi + 0x18], 0
mov dword [esi + 0x1c], 0
mov dword [esi + 0x20], 0
mov dword [esi + 0x24], 0
mov dword [esi + 0x28], 0
mov dword [esi + 0x2c], 0
lea esi, [edi + 0x5c]
mov dword [ebp - 0x30], esi
cmp esi, edi
jb 0x1405b22
mov eax, dword [ebp - 0x14]
movzx eax, word [eax + 4]
lea eax, [eax + eax*4]
lea eax, [esi + eax*4]
cmp eax, edx
jae 0x1405b22
xor eax, eax
mov dword [ebp - 0x1c], eax
nop dword [eax + eax]
movzx eax, ax
lea eax, [eax + eax*4]
mov edi, dword [esi + eax*4]
lea ecx, [esi + eax*4]
mov eax, dword [ebp + 0x10]
mov esi, dword [ecx + 4]
mov dword [ebp - 0x20], ecx
cmp edi, eax
jb 0x1405b22
add eax, dword [ebp + 0x14]
lea edx, [esi + edi]
mov dword [ebp - 0x34], edx
cmp edx, eax
jae 0x1405b22
mov edx, dword [ecx + 8]
cmp esi, edx
jbe 0x14057de
mov eax, esi
sub eax, edx
push eax
lea eax, [edx + edi]
push 0
push eax
call fcn.01427810
mov ecx, dword [ebp - 0x20]
add esp, 0xc
mov edx, dword [ecx + 8]
mov eax, dword [ecx + 0xc]
add eax, dword [ebp + 8]
push edx
push eax
push edi
call fcn.01427290
add esp, 0xc
cmp word [ebp - 0x1c], 0
jne 0x1405801
mov eax, dword [ebp - 0x14]
mov dword [eax + 0x20], edi
mov dword [eax + 0x24], esi
jmp 0x1405876
cmp esi, 0x10000
jbe 0x1405873
push 0xa
push 0x44498cc
push esi
push edi
call fcn.01406560
add esp, 0x10
test eax, eax
je 0x1405868
push 9
push 0x44498d8
push esi
push edi
call fcn.01406560
add esp, 0x10
test eax, eax
je 0x1405868
push 0x24
push str.Microsoft_Visual_C_Runtime_Library
push esi
push edi
call fcn.01406560
add esp, 0x10
test eax, eax
je 0x1405873
push 0x24
push str.JanFebMarAprMayJunJulAugSepOctNovDec
push esi
push edi
call fcn.01406560
add esp, 0x10
test eax, eax
mov eax, dword [ebp - 0x14]
je 0x1405876
mov dword [eax + 0x30], edi
mov dword [eax + 0x34], esi
jmp 0x1405876
mov eax, dword [ebp - 0x14]
mov dword [eax + 0x28], edi
mov dword [eax + 0x2c], esi
jmp 0x1405876
mov eax, dword [ebp - 0x14]
mov ecx, dword [eax + 0x1c]
mov edx, dword [eax + 0xc]
lea eax, [ecx + edx]
cmp eax, dword [ebp - 0x34]
jae 0x1405891
sub esi, edx
lea ecx, [esi + edi]
mov esi, dword [ebp - 0x14]
mov dword [esi + 0x1c], ecx
jmp 0x1405894
mov esi, dword [ebp - 0x14]
mov eax, dword [ebp - 0x20]
cmp dword [eax + 0x10], 0
je 0x14058a3
mov eax, dword [eax + 0xc]
mov dword [esi + 0x18], eax
mov eax, dword [ebp - 0x1c]
inc eax
cmp ax, word [esi + 4]
mov esi, dword [ebp - 0x30]
mov dword [ebp - 0x1c], eax
jbe 0x1405790
mov esi, dword [ebp + 0x10]
cmp edx, esi
jb 0x1405b22
mov edi, dword [ebp + 0x14]
lea eax, [edx + ecx]
add edi, esi
mov dword [ebp - 0x34], edi
cmp eax, edi
jae 0x1405b22
mov edx, dword [ebp - 0x14]
mov ecx, dword [edx + 0x14]
cmp ecx, esi
jb 0x1405b22
lea eax, [ecx + 0x14]
mov dword [ebp - 0x24], eax
cmp eax, edi
jae 0x1405b22
mov ecx, dword [ecx + 0xc]
test ecx, ecx
je 0x1405b10
nop dword [eax]
mov eax, dword [edx + 0xc]
add eax, ecx
xor edx, edx
mov dword [ebp - 0x18], eax
lea ecx, [eax + 1]
nop dword [eax]
cmp eax, esi
jb 0x1405b22
cmp ecx, edi
jae 0x1405b22
cmp byte [eax], 0
je 0x140592d
inc edx
inc eax
inc ecx
cmp edx, 0x40
jb 0x1405910
push dword [ebp - 0x18]
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov dword [ebp - 0x1c], eax
test eax, eax
je 0x1405b22
mov edx, dword [ebp - 0x38]
mov ecx, dword [edx + 4]
cmp ecx, dword [edx + 8]
je 0x1405954
mov dword [ecx], eax
add dword [edx + 4], 4
jmp 0x1405960
lea eax, [ebp - 0x1c]
push eax
push ecx
mov ecx, edx
call fcn.014035f0
mov ecx, dword [ebp - 0x24]
mov edx, dword [ebp - 0x14]
mov ecx, dword [ecx - 4]
add ecx, dword [edx + 0xc]
mov dword [ebp - 0x20], ecx
cmp ecx, esi
jb 0x1405b22
lea eax, [ecx + 4]
mov dword [ebp - 0x30], eax
cmp eax, edi
jae 0x1405b22
mov esi, dword [ecx]
test esi, esi
je 0x1405af1
mov eax, dword [ebp + 0x10]
mov byte [ebp - 0xd], 0
test esi, esi
jns 0x14059a7
and esi, 0x7fffffff
mov al, 1
mov dword [ebp - 0x2c], esi
jmp 0x14059f9
mov ecx, dword [edx + 0xc]
add ecx, esi
cmp ecx, eax
jb 0x1405b22
lea eax, [ecx + 4]
cmp eax, edi
jae 0x1405b22
lea esi, [ecx + 2]
xor eax, eax
mov dword [ebp - 0x2c], esi
lea edi, [ecx + 3]
nop word [eax + eax]
lea edx, [esi + eax]
cmp edx, dword [ebp + 0x10]
jb 0x1405b22
lea ecx, [edi + eax]
cmp ecx, dword [ebp - 0x34]
jae 0x1405b22
cmp byte [edx], 0
je 0x14059f3
inc eax
cmp eax, 0x40
jb 0x14059d0
mov al, byte [ebp - 0xd]
mov ecx, dword [ebp - 0x20]
test esi, esi
je 0x1405b22
test al, al
jne 0x1405ab8
mov eax, dword [ebp - 0x28]
mov dword [ebp - 0x3c], ecx
mov edi, dword [eax + 4]
cmp edi, dword [eax + 8]
je 0x1405aa0
mov edx, dword [ebp - 0x18]
mov eax, dword [ebp - 0x1c]
mov dword [edi], ecx
lea ecx, [edi + 8]
mov dword [edi + 4], eax
lea eax, [edx + 1]
mov dword [ebp - 0x3c], edi
mov dword [ecx], 0
mov dword [ecx + 0x10], 0
mov dword [ecx + 0x14], 0xf
mov dword [ebp - 0x2c], eax
mov al, byte [edx]
inc edx
test al, al
jne 0x1405a46
sub edx, dword [ebp - 0x2c]
push edx
push dword [ebp - 0x18]
call fcn.01405d40
lea ecx, [edi + 0x20]
mov dword [ebp - 4], 0
mov edx, esi
mov dword [ecx], 0
mov dword [ecx + 0x10], 0
mov dword [ecx + 0x14], 0xf
lea edi, [edx + 1]
nop dword [eax]
mov al, byte [edx]
inc edx
test al, al
jne 0x1405a80
sub edx, edi
push edx
push esi
call fcn.01405d40
mov eax, dword [ebp - 0x28]
mov dword [ebp - 4], 0xffffffff
add dword [eax + 4], 0x38
jmp 0x1405ab8
lea ecx, [ebp - 0x2c]
push ecx
lea ecx, [ebp - 0x18]
push ecx
lea ecx, [ebp - 0x1c]
push ecx
lea ecx, [ebp - 0x3c]
push ecx
push edi
mov ecx, eax
call fcn.01404cc0
push esi
push dword [ebp - 0x1c]
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov ecx, dword [ebp - 0x20]
mov edx, dword [ebp - 0x30]
add edx, 4
mov dword [ebp - 0x30], edx
mov dword [ecx], eax
add ecx, 4
mov eax, dword [ebp + 0x10]
mov dword [ebp - 0x20], ecx
cmp ecx, eax
jb 0x1405b22
mov edi, dword [ebp - 0x34]
cmp edx, edi
jae 0x1405b22
mov esi, dword [ecx]
mov edx, dword [ebp - 0x14]
test esi, esi
jne 0x1405992
mov eax, dword [ebp - 0x24]
mov esi, dword [ebp + 0x10]
cmp eax, esi
jb 0x1405b22
lea ecx, [eax + 0x14]
mov dword [ebp - 0x24], ecx
cmp ecx, edi
jae 0x1405b22
mov ecx, dword [eax + 0xc]
test ecx, ecx
jne 0x1405900
pop edi
mov eax, edx
pop esi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
mov esp, ebp
pop ebp
ret
push dword [ebp - 0x14]
call fcn.014053c0
add esp, 4
xor eax, eax
pop edi
pop esi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
mov esp, ebp
pop ebp
ret
mov ecx, dword [ebp - 0xc]
xor eax, eax
mov dword fs:[0], ecx
mov esp, ebp
pop ebp
ret