Function at 0x415700
Capabilities:
Encode data using xor
Write file on windows

Disassembly:
sub esp, 0x148
mov eax, dword [esp + 0x14c]
xorps xmm0, xmm0
movlpd qword [esp + 0x18], xmm0
movaps xmm0, xmmword [0x41d620]
push ebx
movups xmmword [esp + 0x44], xmm0
push ebp
movups xmm0, xmmword [eax]
push esi
mov esi, edx
mov dword [esp + 0x5c], 0x8d2780ea
movups xmmword [esp + 0x30], xmm0
mov ebx, dword [esp + 0x3c]
movq xmm0, qword [eax + 0x10]
mov ebp, dword [esp + 0x38]
movq qword [esp + 0x40], xmm0
mov ecx, dword [esp + 0x44]
mov edx, dword [esp + 0x40]
push edi
mov dword [esp + 0x24], esi
xor edi, edi
mov dword [esp + 0x64], 0x3cea7d3b
add ebp, dword [esp + 0x34]
push ecx
adc ebx, dword [esp + 0x3c]
push edx
push ecx
push edx
call fcn.00412aa0
add eax, ebp
adc edx, ebx
xor ecx, ecx
or ecx, eax
mov al, byte [esp + edi + 0x50]
xor al, dl
mov byte [esp + edi + 0x68], al
inc edi
cmp edi, 0x18
jb 0x415761
movups xmm0, xmmword [esp + 0x68]
lea ecx, [esp + 0x1c]
xor al, al
push ecx
push 0xf003f
push 0
lea ecx, [esp + 0x40]
mov byte [esp + 0x58], al
mov eax, dword [esi + 4]
movups xmmword [esp + 0x40], xmm0
push ecx
movq xmm0, qword [esp + 0x88]
push 0x80000001
movq qword [esp + 0x58], xmm0
call eax
test eax, eax
je 0x415817
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.RegOpenKey_failed:__u_n
push 0x100000
push 0x420410
call fcn.00401010
add esp, 0x10
mov esi, eax
mov dword [0x42040c], esi
push 0xfffffffffffffff5
call dword [sym.imp.KERNEL32.dll_GetStdHandle]
push 0
push 0x420408
push esi
push 0x420410
push eax
call dword [sym.imp.KERNEL32.dll_WriteFile]
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x148
ret
push 0x64
lea eax, [esp + 0xf4]
push 0
push eax
call fcn.004020a0
add esp, 0xc
lea eax, [esp + 0x88]
push 0x64
push 0
push eax
call fcn.004020a0
mov eax, dword [esi + 0x10]
lea ecx, [esp + 0x20]
add esp, 0xc
mov dword [esp + 0x18], 0x64
xor ebp, ebp
mov dword [esp + 0x14], 0x64
push ecx
lea ecx, [esp + 0x8c]
push ecx
push ebp
push ebp
lea ecx, [esp + 0x28]
push ecx
lea ecx, [esp + 0x104]
push ecx
push ebp
push dword [esp + 0x38]
call eax
mov ebx, dword [esp + 0x28]
test eax, eax
jne 0x41596b
mov dword [esp + 0x20], ebx
nop word [eax + eax]
mov dl, byte [esp + 0x88]
xor eax, eax
mov esi, 0x2d2df613
mov edi, 0xeda415ee
test dl, dl
je 0x415926
lea ebx, [esp + 0x88]
movsx ecx, dl
lea ebx, [ebx + 1]
add edi, ecx
imul edi, ecx
imul ecx, edi
mov edx, edi
imul edx, esi
add esi, ecx
mov ecx, esi
shl esi, 0xf
shr ecx, 0x11
or esi, ecx
lea ecx, [edx + eax]
ror ecx, 0x10
imul ecx, esi
mov eax, ecx
shl ecx, 0x11
shr eax, 0xf
or eax, ecx
mov cl, byte [ebx]
mov dl, cl
test cl, cl
jne 0x4158b2
cmp eax, 0xc9dcaee3
je 0x41590f
cmp eax, 0x48a14a85
je 0x41590f
cmp eax, 0x5f85840b
je 0x41590f
cmp eax, 0x6c43b0d0
je 0x41590f
cmp eax, 0x1e2929cf
jne 0x415922
mov ebx, 0xab913acd
mov dword [esp + 0x2c], 0
mov dword [esp + 0x20], ebx
jmp 0x415926
mov ebx, dword [esp + 0x20]
mov esi, dword [esp + 0x24]
lea ecx, [esp + 0x14]
push ecx
lea ecx, [esp + 0x8c]
mov dword [esp + 0x1c], 0x64
push ecx
mov eax, dword [esi + 0x10]
lea ecx, [esp + 0x20]
push 0
push 0
push ecx
lea ecx, [esp + 0x104]
mov dword [esp + 0x28], 0x64
push ecx
inc ebp
push ebp
push dword [esp + 0x38]
call eax
test eax, eax
je 0x415890
mov ecx, dword [esi + 0xc]
push 0x80000001
call ecx
push dword [esp + 0x1c]
mov ecx, dword [esi + 0xc]
call ecx
pop edi
pop esi
pop ebp
mov eax, ebx
pop ebx
add esp, 0x148
ret