Function at 0x40c67c
Capabilities:
Encode data using xor

Disassembly:
mov eax, 0x4662a7
call fcn.004656a0
sub esp, 0x184
movaps xmm0, xmmword [0x47cf50]
mov eax, edx
push ebx
push esi
xor edx, edx
mov dword [ebp - 0x48], eax
movups xmmword [ebp - 0x106], xmm0
mov esi, edx
mov dword [ebp - 0x90], ecx
movaps xmm0, xmmword [0x47cfd0]
push edi
mov dword [ebp - 0x10], esp
mov dword [ebp - 0x6c], eax
mov dword [ebp - 0x2c], edx
movups xmmword [ebp - 0xf6], xmm0
mov word [ebp - 0xe6], 0x34
mov cl, byte [ebp - 0x106]
xor byte [ebp + esi - 0x105], cl
inc esi
cmp esi, 0x20
jb 0x40c6cc
movaps xmm0, xmmword [0x47cd10]
mov esi, edx
movups xmmword [ebp - 0xe4], xmm0
mov byte [ebp - 0xe5], dl
movaps xmm0, xmmword [0x47cda0]
movups xmmword [ebp - 0xd4], xmm0
mov word [ebp - 0xc4], 0x1b
mov cl, byte [ebp - 0xe4]
xor byte [ebp + esi - 0xe3], cl
inc esi
cmp esi, 0x20
jb 0x40c70c
lea eax, [ebp - 0xe3]
mov byte [ebp - 0xc3], dl
push eax
lea ecx, [ebp - 0x190]
mov dword [ebp - 0x180], edx
mov dword [ebp - 0x17c], 0xf
mov byte [ebp - 0x190], dl
call fcn.004127d6
xor edx, edx
mov dword [ebp - 4], edx
mov esi, edx
movaps xmm0, xmmword [0x47d2c0]
movups xmmword [ebp - 0x128], xmm0
mov word [ebp - 0x108], 0x7f
movaps xmm0, xmmword [0x47d300]
movups xmmword [ebp - 0x118], xmm0
mov cl, byte [ebp - 0x128]
xor byte [ebp + esi - 0x127], cl
inc esi
cmp esi, 0x20
jb 0x40c779
push 0xf
pop esi
lea eax, [ebp - 0x127]
mov byte [ebp - 0x107], dl
push eax
lea ecx, [ebp - 0x178]
mov dword [ebp - 0x168], edx
mov dword [ebp - 0x164], esi
mov byte [ebp - 0x178], dl
call fcn.004127d6
mov byte [ebp - 4], 1
lea eax, [ebp - 0x105]
and dword [ebp - 0x150], 0
lea ecx, [ebp - 0x160]
push eax
mov dword [ebp - 0x14c], esi
mov byte [ebp - 0x160], 0
call fcn.004127d6
xor eax, eax
mov dword [ebp - 4], 2
push dword [ebp - 0x6c]
mov dword [ebp - 0x60], eax
lea ecx, [ebp - 0x60]
mov dword [ebp - 0x5c], eax
mov dword [ebp - 0x58], eax
lea eax, [ebp - 0x148]
push eax
lea eax, [ebp - 0x190]
push eax
call fcn.0041353f
push fcn.00411ce9
push 3
push 0x18
lea eax, [ebp - 0x190]
mov byte [ebp - 4], 4
push eax
call fcn.0043d66b
push ecx
lea eax, [ebp - 0x90]
mov byte [ebp - 4], 5
push eax
lea ecx, [ebp - 0x8c]
call fcn.00412fec
lea eax, [ebp - 0x8c]
mov byte [ebp - 4], 6
push eax
lea ecx, [ebp - 0xa8]
call fcn.0040b613
lea ecx, [ebp - 0x8c]
call fcn.00412448
lea eax, [ebp - 0xa8]
push eax
lea ecx, [ebp - 0x54]
call fcn.0040c654
mov edi, dword [ebp - 0x54]
mov esi, dword [ebp - 0x50]
mov dword [ebp - 0x4c], edi
mov dword [ebp - 0x74], edi
mov dword [ebp - 0x70], esi
lea eax, [ebp - 0xa8]
push eax
lea ecx, [ebp - 0x130]
call fcn.0040c654
mov ecx, dword [ebp - 0x12c]
xor eax, eax
xorps xmm0, xmm0
movlpd qword [ebp - 0x54], xmm0
and dword [ebp - 0x50], eax
mov dword [ebp - 0x54], eax
test ecx, ecx
je 0x40c8b1
call fcn.00409de0
mov eax, dword [ebp - 0x54]
mov byte [ebp - 4], 0xa
cmp edi, eax
je 0x40cc10
mov dword [ebp - 0xa0], edi
xor esi, esi
mov eax, dword [ebp - 0x5c]
sub eax, dword [ebp - 0x60]
push 0x18
cdq
pop ecx
idiv ecx
mov dword [ebp - 0x68], esi
cmp esi, eax
jae 0x40cbf7
lea eax, [edi + 0x20]
mov byte [ebp - 4], 0xb
lea ecx, [ebp - 0x148]
mov dword [ebp - 0x64], eax
push ecx
mov ecx, eax
call fcn.0040a97e
push ecx
lea ecx, [ebp - 0x8c]
mov byte [ebp - 4], 0xc
push ecx
mov ecx, eax
call fcn.00412dd2
mov eax, dword [ebp - 0x60]
lea ecx, [ebp - 0x8c]
or dword [ebp - 0x2c], 1
imul edi, esi, 0x18
push 0
add eax, edi
push eax
call fcn.00411b0e
lea ecx, [ebp - 0x8c]
mov esi, eax
call fcn.00412665
lea ecx, [ebp - 0x148]
mov byte [ebp - 4], 0xb
call fcn.00412448
cmp esi, 0xffffffff
je 0x40cbc6
push 0
push 0
call dword [sym.imp.KERNEL32.dll_GetProcessHeap]
push eax
call dword [sym.imp.KERNEL32.dll_HeapFree]
mov ecx, dword [ebp - 0x64]
lea eax, [ebp - 0x8c]
push eax
call fcn.0040a8eb
push ecx
lea ecx, [ebp - 0xc0]
mov byte [ebp - 4], 0xd
push ecx
mov ecx, eax
call fcn.00412dd2
or dword [ebp - 0x2c], 8
lea ecx, [ebp - 0x8c]
mov byte [ebp - 4], 0xf
call fcn.00412448
push ecx
push ecx
lea ecx, [ebp - 0xc0]
call fcn.00411a75
mov esi, eax
lea ecx, [ebp - 0xc0]
push 0xffffffffffffffff
lea eax, [esi + 1]
push eax
lea eax, [ebp - 0x148]
push eax
call fcn.00411a2a
mov byte [ebp - 4], 0x10
xor edx, edx
movaps xmm0, xmmword [0x47cc70]
movups xmmword [ebp - 0x40], xmm0
mov dword [ebp - 0x30], 0x1f0b02
mov cl, byte [ebp - 0x40]
xor cl, byte [ebp + edx - 0x3f]
mov byte [ebp + edx - 0x3f], cl
inc edx
cmp edx, 0x12
jb 0x40c9cb
push ecx
lea eax, [ebp - 0x3f]
mov byte [ebp - 0x2d], 0
push eax
lea ecx, [ebp - 0x148]
call fcn.00411add
cmp eax, 0xffffffff
je 0x40cbb0
push esi
push 0
lea eax, [ebp - 0xdc]
push eax
lea ecx, [ebp - 0xc0]
call fcn.00411a2a
lea ecx, [ebp - 0xc0]
cmp ecx, eax
je 0x40ca2b
mov byte [ebp - 0x94], 0
push dword [ebp - 0x94]
push eax
call fcn.00412943
lea ecx, [ebp - 0xdc]
call fcn.00412665
push ecx
push ecx
lea ecx, [ebp - 0xc0]
call fcn.00411a75
push esi
inc eax
lea ecx, [ebp - 0xc0]
push eax
lea eax, [ebp - 0x8c]
push eax
call fcn.00411a2a
mov byte [ebp - 4], 0x11
mov cl, 0x2d
mov dword [ebp - 0x19], 0x414c7a2d
xor edx, edx
mov dword [ebp - 0x15], 0x5e594841
mov byte [ebp - 0x11], 0
xor byte [ebp + edx - 0x18], cl
inc edx
cmp edx, 7
jae 0x40ca81
mov cl, byte [ebp - 0x19]
jmp 0x40ca72
mov byte [ebp - 0x11], 0
call fcn.0043295d
lea edx, [ebp - 0x18]
mov ecx, eax
call fcn.004324c4
and dword [ebp - 0x34], 0
lea ecx, [ebp - 0x44]
mov esi, eax
mov dword [ebp - 0x30], 0xf
push esi
mov byte [ebp - 0x44], 0
call fcn.004127d6
lea ecx, [ebp - 0x44]
call fcn.0040bf23
lea ecx, [ebp - 0x44]
call fcn.00412665
mov ecx, dword [ebp - 0x60]
lea edx, [ebp - 0x105]
lea ecx, [edi + ecx]
call fcn.004130b1
test al, al
je 0x40cada
mov ecx, 0x4774f4
jmp 0x40cb09
mov cl, 0x5b
mov dword [ebp - 0x25], 0x3e16075b
mov dword [ebp - 0x21], 0x3a163a2f
xor edx, edx
mov dword [ebp - 0x1d], 0x43028
xor byte [ebp + edx - 0x24], cl
inc edx
cmp edx, 0xa
jae 0x40cb02
mov cl, byte [ebp - 0x25]
jmp 0x40caf3
mov byte [ebp - 0x1a], 0
lea ecx, [ebp - 0x24]
mov eax, dword [ebp - 0x48]
mov edx, dword [eax]
call fcn.004324c4
mov edx, eax
mov ecx, esi
call fcn.004324c4
cmp dword [ebp - 0x78], 0x10
lea edx, [ebp - 0x8c]
mov ecx, 0x477d7c
mov esi, eax
cmovae edx, dword [ebp - 0x8c]
call fcn.004324c4
mov edx, eax
mov ecx, esi
call fcn.004324c4
and dword [ebp - 0x34], 0
lea ecx, [ebp - 0x44]
push 0xf
pop esi
push eax
mov dword [ebp - 0x9c], eax
mov dword [ebp - 0x30], esi
mov byte [ebp - 0x44], 0
call fcn.004127d6
lea ecx, [ebp - 0x44]
call fcn.0040bf23
lea ecx, [ebp - 0x44]
call fcn.00412665
mov byte [ebp - 0x98], 0
lea edx, [ebp - 0x9c]
push dword [ebp - 0x98]
lea ecx, [ebp - 0x44]
call fcn.00414112
pop ecx
mov ecx, dword [ebp - 0x64]
lea edx, [ebp - 0x44]
push 0x12
mov byte [ebp - 4], 0x12
call fcn.0040be8d
pop ecx
lea ecx, [ebp - 0x44]
call fcn.00412448
lea ecx, [ebp - 0x8c]
call fcn.00412665
lea ecx, [ebp - 0x148]
call fcn.00412665
lea ecx, [ebp - 0xc0]
call fcn.00412665
mov edi, dword [ebp - 0x4c]
mov dword [ebp - 4], 0xa
jmp 0x40cbee
mov esi, dword [ebp - 0x68]
inc esi
jmp 0x40c8c5
lea ecx, [ebp - 0x74]
call fcn.0040b65d
mov edi, dword [ebp - 0x74]
mov esi, dword [ebp - 0x70]
mov eax, dword [ebp - 0x54]
mov dword [ebp - 0x4c], edi
jmp 0x40c8b5
test esi, esi
je 0x40cc1b
mov ecx, esi
call fcn.00409de0
mov ecx, dword [ebp - 0xa4]
test ecx, ecx
je 0x40cc2a
call fcn.00409de0
lea ecx, [ebp - 0x60]
call fcn.004123d3
xor eax, eax
inc eax
jmp 0x40cc47
mov ecx, dword [ebp - 0xc]
pop edi
pop esi
mov dword fs:[0], ecx
pop ebx
leave
ret