Function at 0x1003e5c0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x30
mov eax, dword [0x100e41c4]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
mov eax, 0x100d15bc
mov dword [ebp - 0xc], ecx
push esi
sub eax, 0x2e6e604f
lea ecx, [ebp - 0x1c]
push eax
mov ebx, edx
call fcn.1003e890
mov esi, 0x101e6d3c
nop
mov cl, byte [esi]
cmp cl, byte [eax]
jne 0x1003e610
test cl, cl
je 0x1003e60c
mov cl, byte [esi + 1]
cmp cl, byte [eax + 1]
jne 0x1003e610
add esi, 2
add eax, 2
test cl, cl
jne 0x1003e5f0
xor eax, eax
jmp 0x1003e615
sbb eax, eax
or eax, 1
test eax, eax
sete al
test al, al
je 0x1003e85c
push dword [ebp + 8]
xorps xmm0, xmm0
mov byte [0x101e6d5c], 0
push 0x101e6d3c
movups xmmword [0x101e6d3c], xmm0
movups xmmword [0x101e6d4c], xmm0
call fcn.1003a9e0
mov dword [ebp - 0x30], 0
add esp, 8
mov si, word [ebp - 0x30]
xor eax, eax
nop word [eax + eax]
movsx dx, byte [eax + 0x101e6d3c]
movsx ecx, byte [eax + 0x101e6d3e]
add dx, cx
movsx ecx, byte [eax + 0x101e6d3d]
add dx, cx
add eax, 3
add si, dx
cmp eax, 0x21
jb 0x1003e660
mov word [ebp - 0x30], si
lea ecx, [ebp - 0x1c]
mov al, byte [ebp - 0x30]
add al, byte [ebp - 0xc]
mov byte [0x101eec46], al
mov eax, dword [ebp - 0x30]
shr eax, 8
add al, bl
mov dword [ebp - 0xc], 0x76636572
push edi
mov byte [0x101eec45], al
lea eax, [ebp - 0xc]
push eax
push 0x5488c65d
mov byte [ebp - 8], 0
call fcn.1003e920
mov esi, dword [sym.imp.KERNEL32.dll_GetModuleHandleA]
push eax
call esi
mov edi, dword [sym.imp.KERNEL32.dll_GetProcAddress]
push eax
call edi
mov dword [0x101eeed0], eax
lea ecx, [ebp - 0x1c]
lea eax, [ebp - 0xc]
mov dword [ebp - 0xc], 0x646e6573
push eax
push 0x5488c65d
mov byte [ebp - 8], 0
call fcn.1003e920
push eax
call esi
push eax
call edi
mov dword [0x101eeee0], eax
mov edx, 0xd4
xor ecx, ecx
nop word [eax + eax]
mov al, byte [ecx + 0x100d15d4]
xor al, dl
mov byte [ebp + ecx - 0x2c], al
inc ecx
lea eax, [edx + 1]
movzx edx, al
cmp ecx, 0xc
jb 0x1003e710
mov byte [ebp - 0x20], 0
mov edx, 0x8c
xor ecx, ecx
mov al, byte [ecx + 0x100d15e4]
xor al, dl
mov byte [ebp + ecx - 0x1c], al
inc ecx
lea eax, [edx + 1]
movzx edx, al
cmp ecx, 0xc
jb 0x1003e733
lea eax, [ebp - 0x2c]
mov byte [ebp - 0x10], 0
push eax
lea eax, [ebp - 0x1c]
push eax
call esi
push eax
call edi
mov ecx, dword [0x101eeed0]
mov esi, eax
mov edx, dword [0x101eeee0]
xorps xmm0, xmm0
movq qword [ebp - 0x1c], xmm0
movq qword [ebp - 0x2c], xmm0
mov dword [0x101eeedc], ecx
mov dword [0x101eeee4], edx
mov dword [ebp - 0x14], 0
mov byte [ebp - 0x10], 0
mov dword [ebp - 0x24], 0
mov byte [ebp - 0x20], 0
mov eax, dword [ecx]
mov dword [0x101eeec0], eax
movzx eax, byte [ecx + 4]
mov byte [0x101eeec4], al
mov eax, dword [edx]
mov dword [0x101eeed4], eax
movzx eax, byte [edx + 4]
mov byte [0x101eeed8], al
mov eax, dword [esi]
mov dword [0x101eeec8], eax
movzx eax, byte [esi + 4]
mov dword [0x101eeebc], esi
mov byte [0x101eeecc], al
call fcn.1008b2a0
mov esi, dword [sym.imp.KERNEL32.dll_GetCurrentThread]
call esi
push eax
call fcn.1008b780
push 0x1003e550
push 0x101eeedc
call fcn.1008ad20
call fcn.1008b300
call fcn.1008b2a0
call esi
push eax
call fcn.1008b780
push 0x1003e590
push 0x101eeee4
call fcn.1008ad20
call fcn.1008b300
mov ecx, dword [0x101eeed0]
xorps xmm0, xmm0
pop edi
mov eax, dword [ecx]
mov dword [0x101eeec0], eax
movzx eax, byte [ecx + 4]
mov ecx, dword [0x101eeee0]
mov byte [0x101eeec4], al
mov eax, dword [ecx]
mov dword [0x101eeed4], eax
movzx eax, byte [ecx + 4]
mov byte [0x101eeed8], al
movups xmmword [0x101e6d3c], xmm0
mov byte [0x101e6d5c], 0
movups xmmword [0x101e6d4c], xmm0
mov ecx, dword [ebp - 4]
pop esi
xor ecx, ebp
pop ebx
call fcn.1008d9f1
mov esp, ebp
pop ebp
ret