Function at 0x4063e0
Capabilities:
Encode data using xor
Read file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x20
push ebx
push 0x46c130
push dword [ebp + 8]
mov ebx, ecx
mov dword [ebp - 0x18], ebx
call fcn.00425170
add esp, 8
mov dword [ebx + 0xc], eax
test eax, eax
jne 0x40640c
xor al, al
pop ebx
mov esp, ebp
pop ebp
ret 4
push esi
push eax
push 1
lea eax, [ebp - 1]
mov byte [ebp - 1], 0
push 1
push eax
call fcn.00429c30
push dword [ebx + 0xc]
push 1
push 2
push ebx
call fcn.00429c30
push dword [ebx + 0xc]
movzx eax, byte [ebp - 1]
lea esi, [ebx + 4]
and eax, 0x3f
push 1
push 1
push esi
movzx eax, word [eax*8 + 0x46bbc0]
xor word [ebx], ax
call fcn.00429c30
movzx eax, byte [ebp - 1]
push dword [ebx + 0xc]
and eax, 0x7f
push 1
push 2
mov al, byte [eax*2 + 0x46bdc0]
xor byte [esi], al
lea esi, [ebx + 2]
push esi
call fcn.00429c30
movzx eax, byte [ebp - 1]
xor ecx, ecx
and eax, 0xf
add esp, 0x40
shl eax, 5
mov edx, 4
movzx eax, word [eax + 0x46bbc0]
xor word [esi], ax
movzx eax, word [esi]
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.0040ca90
mov dword [ebx + 8], eax
xor ecx, ecx
xor eax, eax
add esp, 4
mov dword [ebp - 0xc], eax
cmp cx, word [esi]
jae 0x40670c
push edi
movzx eax, ax
mov dword [ebp - 0x1c], eax
push 0x110
lea ecx, [eax*4]
mov eax, dword [ebx + 8]
mov dword [ebp - 0x20], ecx
mov dword [ecx + eax], 0
call fcn.0040c1f0
mov esi, eax
push 0x104
push 0
lea edi, [esi + 0x108]
mov dword [ebp - 0x14], esi
push esi
mov dword [esi + 0x104], 0
mov dword [edi], 0
mov dword [esi + 0x10c], 0
call fcn.00410bf0
movzx eax, byte [ebx + 4]
add esp, 0x10
dec eax
cmp eax, 3
ja case.default.0x40651c
jmp dword [eax*4 + 0x406748]
push dword [ebx + 0xc]
lea eax, [esi + 0x104]
push 1
push 4
push eax
call fcn.00429c30
mov eax, dword [ebp - 0xc]
add esp, 0x10
and eax, 0xf
shl eax, 5
movzx eax, word [eax + 0x46bbc0]
xor dword [esi + 0x104], eax
jmp case.default.0x40651c
movzx eax, byte [ebp - 1]
push 0x104
push 0
push esi
mov dword [ebp - 0x10], eax
mov dword [ebp - 8], 0
call fcn.00410bf0
push dword [ebx + 0xc]
lea eax, [ebp - 8]
push 1
push 4
push eax
call fcn.00429c30
mov eax, dword [ebp - 0xc]
push dword [ebx + 0xc]
mov ecx, dword [ebp - 8]
and eax, 0x1f
shl eax, 4
push 1
movzx eax, word [eax + 0x46bbc0]
xor ecx, eax
push ecx
push esi
mov dword [ebp - 8], ecx
call fcn.00429c30
mov edx, dword [ebp - 8]
add esp, 0x2c
xor ecx, ecx
test edx, edx
je 0x406640
cmp edx, 0x40
jb 0x406640
mov eax, dword [ebp - 0x10]
cwde
add eax, eax
movzx eax, al
mov al, byte [eax + 0x46bdc0]
movsx eax, al
movd xmm0, eax
mov eax, edx
and eax, 0x3f
punpcklbw xmm0, xmm0
sub edx, eax
punpcklwd xmm0, xmm0
mov dword [ebp - 0x14], edx
xor eax, eax
pshufd xmm2, xmm0, 0
lea edx, [ecx + 0x20]
nop
movups xmm0, xmmword [eax + esi]
add ecx, 0x40
movaps xmm1, xmm2
pxor xmm1, xmm0
movups xmmword [eax + esi], xmm1
lea eax, [edx - 0x10]
movzx eax, ax
movups xmm0, xmmword [eax + esi]
pxor xmm0, xmm2
movups xmmword [eax + esi], xmm0
movzx eax, dx
movups xmm0, xmmword [eax + esi]
pxor xmm0, xmm2
movups xmmword [eax + esi], xmm0
lea eax, [edx + 0x10]
add edx, 0x40
movzx eax, ax
movups xmm0, xmmword [eax + esi]
pxor xmm0, xmm2
movups xmmword [eax + esi], xmm0
movzx eax, cx
cmp eax, dword [ebp - 0x14]
jb 0x4065f0
movzx edx, cx
cmp edx, dword [ebp - 8]
jae case.default.0x40651c
mov eax, dword [ebp - 0x10]
cwde
add eax, eax
movzx eax, al
mov al, byte [eax + 0x46bdc0]
mov byte [ebp - 2], al
mov eax, dword [ebp - 8]
mov bl, byte [ebp - 2]
xor byte [edx + esi], bl
inc ecx
movzx edx, cx
cmp edx, eax
jb 0x406660
mov ebx, dword [ebp - 0x18]
push dword [ebx + 0xc]
push 1
push 4
push edi
call fcn.00429c30
mov eax, dword [ebp - 0x1c]
and eax, 0x1f
shl eax, 4
movzx eax, word [eax + 0x46bbc0]
xor dword [edi], eax
push dword [edi]
call fcn.0040ca90
mov dword [esi + 0x10c], eax
push dword [ebx + 0xc]
push 1
push dword [edi]
push eax
call fcn.00429c30
movzx eax, word [edi]
mov ecx, 0x80
add esp, 0x24
cmp ax, cx
jb 0x4066bb
mov eax, ecx
jmp 0x4066c2
xor ecx, ecx
cmp cx, ax
jae 0x4066f1
xor edx, edx
movzx edi, ax
nop word [eax + eax]
movzx eax, byte [ebp - 1]
mov ecx, dword [esi + 0x10c]
add eax, edx
shl eax, 2
movzx eax, al
mov al, byte [eax + 0x46bdc0]
xor byte [ecx + edx], al
inc edx
sub edi, 1
jne 0x4066d0
mov eax, dword [ebx + 8]
mov ecx, dword [ebp - 0x20]
mov dword [ecx + eax], esi
mov eax, dword [ebp - 0xc]
inc eax
mov dword [ebp - 0xc], eax
cmp ax, word [ebx + 2]
jb 0x4064b5
pop edi
push dword [ebx + 0xc]
call fcn.00416750
push 0x46ba44
push dword [ebp + 8]
call fcn.00425170
add esp, 0xc
mov dword [ebx + 0xc], eax
pop esi
test eax, eax
je 0x40673c
push eax
call fcn.00416750
add esp, 4
mov dword [ebx + 0xc], 0
mov al, 1
pop ebx
mov esp, ebp
pop ebp
ret 4