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

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x66e498
mov eax, dword fs:[0]
push eax
sub esp, 0x978
mov eax, dword [0x6ece84]
xor eax, ebp
mov dword [ebp - 0x10], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov eax, dword [ebp + 8]
xor ecx, ecx
mov esi, dword [ebp + 0xc]
mov dword [ebp - 0x958], ecx
mov dword [ebp - 0x960], ecx
mov dword [ebp - 4], ecx
mov dword [ebp - 0x95c], ecx
mov dword [ebp - 4], 1
cmp dword [eax + 0x14], 8
jb 0x550b09
mov eax, dword [eax]
push 0
push 0
push 0x80
push 3
push 1
push SysReAllocStringLen
push eax
lea ecx, [ebp - 0x960]
call fcn.005509f0
test eax, eax
je 0x550b40
mov dword [ebp - 0x968], 0xffffffff
mov esi, dword [ebp - 0x968]
jmp 0x5511ab
push 0x400
lea eax, [ebp - 0x430]
push 0
push eax
call fcn.00607da0
add esp, 0xc
mov dword [ebp - 0x964], 0
lea eax, [ebp - 0x964]
push 0
push eax
push 0x64
lea eax, [ebp - 0x430]
push eax
push dword [ebp - 0x960]
call dword [sym.imp.KERNEL32.DLL_ReadFile]
test eax, eax
jne 0x550b8f
call fcn.00469e00
test eax, eax
jne 0x551189
cmp dword [ebp - 0x964], 0x64
jne 0x551189
mov eax, dword [ebp + 0x10]
cmp eax, 1
jne 0x550c28
lea eax, [ebp - 0x950]
push eax
call fcn.00551210
add esp, 4
mov byte [ebp - 4], 2
mov edx, 1
mov dword [ebp - 0x958], edx
cmp dword [eax + 0x14], 0x10
jb 0x550bce
mov eax, dword [eax]
lea ecx, [ebp - 0x430]
mov dl, byte [eax]
cmp dl, byte [ecx]
mov byte [ebp - 0x951], dl
mov edx, dword [ebp - 0x958]
jne 0x550c16
cmp byte [ebp - 0x951], 0
je 0x550c12
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
mov byte [ebp - 0x951], dl
mov edx, dword [ebp - 0x958]
jne 0x550c16
add eax, 2
add ecx, 2
cmp byte [ebp - 0x951], 0
jne 0x550bd4
xor eax, eax
jmp 0x550c1b
sbb eax, eax
or eax, 1
test eax, eax
je 0x550cab
jmp 0x550cba
cmp eax, 2
jne 0x550cb4
lea eax, [ebp - 0x938]
push eax
call fcn.00551210
add esp, 4
mov dword [ebp - 4], 3
mov edx, 2
mov dword [ebp - 0x958], edx
cmp dword [eax + 0x14], 0x10
jb 0x550c5a
mov eax, dword [eax]
lea ecx, [ebp - 0x430]
mov dl, byte [eax]
cmp dl, byte [ecx]
mov byte [ebp - 0x951], dl
mov edx, dword [ebp - 0x958]
jne 0x550ca2
cmp byte [ebp - 0x951], 0
je 0x550c9e
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
mov byte [ebp - 0x951], dl
mov edx, dword [ebp - 0x958]
jne 0x550ca2
add eax, 2
add ecx, 2
cmp byte [ebp - 0x951], 0
jne 0x550c60
xor eax, eax
jmp 0x550ca7
sbb eax, eax
or eax, 1
test eax, eax
je 0x550cba
mov byte [ebp - 0x951], 1
jmp 0x550cc1
mov edx, dword [ebp - 0x958]
mov byte [ebp - 0x951], 0
mov dword [ebp - 4], 2
test dl, 2
je 0x550ce7
and edx, 0xfffffffd
lea ecx, [ebp - 0x938]
mov dword [ebp - 0x958], edx
call fcn.00407b00
mov edx, dword [ebp - 0x958]
mov dword [ebp - 4], 1
test dl, 1
je 0x550d07
and edx, 0xfffffffe
lea ecx, [ebp - 0x950]
mov dword [ebp - 0x958], edx
call fcn.00407b00
cmp byte [ebp - 0x951], 0
je 0x550d42
mov eax, dword [ebp - 0x960]
test eax, eax
je 0x550d2d
mov edi, dword [sym.imp.KERNEL32.DLL_CloseHandle]
push eax
call edi
mov dword [ebp - 0x960], 0
mov dword [ebp - 0x968], 0xfffffffe
mov esi, dword [ebp - 0x968]
jmp 0x5511ab
mov eax, dword [ebp - 0x420]
shl eax, 8
cmp byte [ebp - 0x41c], 0xc
movzx eax, ax
jne 0x551165
mov ecx, 0x400
cmp ax, cx
jne 0x551165
push 0
push 0
push 0
lea ecx, [ebp - 0x960]
call fcn.00551710
movups xmm0, xmmword [0x6825ac]
xor ecx, ecx
movups xmmword [ebp - 0x930], xmm0
nop word [eax + eax]
mov eax, ecx
and eax, 0x8000000f
jns 0x550d9e
dec eax
or eax, 0xfffffff0
inc eax
mov al, byte [ebp + eax - 0x930]
mov byte [ebp + ecx - 0x30], al
inc ecx
cmp ecx, 0x20
jl 0x550d90
push 0x100
lea eax, [ebp - 0x30]
push eax
lea eax, [ebp - 0x920]
push eax
call fcn.005c7af0
xor edi, edi
mov dword [ebp - 0x97c], eax
add esp, 0xc
mov dword [ebp - 0x978], edi
mov dword [ebp - 0x970], edi
mov byte [ebp - 4], 4
mov dword [ebp - 0x96c], edi
mov byte [ebp - 4], 5
cmp dword [esi + 0x14], 8
jb 0x550df1
mov esi, dword [esi]
push 0
push 0
push 0x80
push 2
push 1
push 0x40000000
push esi
lea ecx, [ebp - 0x970]
call fcn.005509f0
test eax, eax
je 0x550e1d
mov esi, 0xfffffffb
jmp 0x551142
push 0x400
lea eax, [ebp - 0x830]
push 0
push eax
call fcn.00607da0
mov eax, dword [ebp - 0x96c]
add esp, 0xc
mov dword [ebp - 0x974], eax
mov eax, dword [ebp - 0x970]
mov dword [ebp - 0x968], eax
nop dword [eax + eax]
push 0
lea eax, [ebp - 0x964]
push eax
push 0x400
lea eax, [ebp - 0x430]
push eax
push dword [ebp - 0x960]
call dword [sym.imp.KERNEL32.DLL_ReadFile]
test eax, eax
jne 0x550e82
call fcn.00469e00
test eax, eax
jne 0x551109
cmp dword [ebp - 0x964], 0
jbe 0x551109
test edi, edi
jne 0x550eab
mov eax, dword [ebp - 0x420]
mov dword [ebp - 0x968], eax
mov eax, dword [ebp - 0x41c]
mov dword [ebp - 0x974], eax
xorps xmm0, xmm0
lea eax, [edi + 1]
mov edi, dword [ebp - 0x97c]
movups xmmword [ebp - 0x930], xmm0
mov dword [ebp - 0x980], eax
movq xmm0, qword [ebp - 0x3c]
mov dword [ebp - 0x930], eax
mov eax, dword [ebp - 0x34]
mov dword [ebp - 0x924], eax
lea eax, [ebp - 0x830]
push eax
lea eax, [ebp - 0x930]
movq qword [ebp - 0x92c], xmm0
push eax
lea eax, [ebp - 0x920]
push edi
push eax
call fcn.005c6bc0
add esp, 0x10
xor esi, esi
xor ecx, ecx
lea eax, [ebp - 0x820]
add eax, ecx
push eax
lea eax, [ebp - 0x830]
add eax, ecx
push eax
lea eax, [ebp - 0x920]
push edi
push eax
call fcn.005c6bc0
add esi, 0x10
add esp, 0x10
movzx ecx, si
cmp ecx, 0x3f0
jb 0x550f02
mov edx, dword [ebp - 0x964]
xor eax, eax
mov edi, dword [ebp - 0x978]
test edx, edx
je 0x550ff3
cmp edx, 0x40
jb 0x550fd7
mov ecx, edx
and ecx, 0xffffffc0
nop word [eax + eax]
movups xmm0, xmmword [ebp + eax - 0x430]
movups xmm1, xmmword [ebp + eax - 0x830]
pxor xmm1, xmm0
movups xmmword [ebp + eax - 0x430], xmm1
movups xmm0, xmmword [ebp + eax - 0x420]
movups xmm1, xmmword [ebp + eax - 0x820]
pxor xmm1, xmm0
movups xmmword [ebp + eax - 0x420], xmm1
movups xmm0, xmmword [ebp + eax - 0x410]
movups xmm1, xmmword [ebp + eax - 0x810]
pxor xmm1, xmm0
movups xmmword [ebp + eax - 0x410], xmm1
movups xmm0, xmmword [ebp + eax - 0x400]
movups xmm1, xmmword [ebp + eax - 0x800]
pxor xmm1, xmm0
movups xmmword [ebp + eax - 0x400], xmm1
add eax, 0x40
cmp eax, ecx
jb 0x550f60
cmp eax, edx
jae 0x550ff3
nop dword [eax + eax]
mov cl, byte [ebp + eax - 0x830]
xor byte [ebp + eax - 0x430], cl
inc eax
cmp eax, edx
jb 0x550fe0
movq xmm0, qword [ebp - 0x92c]
mov eax, dword [ebp - 0x924]
movq qword [ebp - 0x3c], xmm0
mov dword [ebp - 0x34], eax
test edi, edi
jne 0x5510cb
cmp dword [ebp + 0x10], 1
mov eax, dword [ebp - 0x968]
mov dword [ebp - 0x420], eax
mov eax, dword [ebp - 0x974]
mov dword [ebp - 0x41c], eax
jne 0x551090
lea eax, [ebp - 0x950]
push eax
call fcn.00551210
add esp, 4
mov byte [ebp - 4], 6
mov ecx, dword [ebp - 0x958]
or ecx, 4
mov dword [ebp - 0x958], ecx
cmp dword [eax + 0x14], 0x10
jb 0x551059
mov eax, dword [eax]
lea ecx, [ebp - 0x430]
nop
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x551080
test dl, dl
je 0x55107c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x551080
add eax, 2
add ecx, 2
test dl, dl
jne 0x551060
xor eax, eax
jmp 0x551085
sbb eax, eax
or eax, 1
mov byte [ebp - 0x951], 1
test eax, eax
jne 0x551097
mov byte [ebp - 0x951], 0
mov dword [ebp - 4], 5
mov eax, dword [ebp - 0x958]
test al, 4
je 0x5510bc
and eax, 0xfffffffb
lea ecx, [ebp - 0x950]
mov dword [ebp - 0x958], eax
call fcn.00407b00
cmp byte [ebp - 0x951], 0
jne 0x551102
mov edx, dword [ebp - 0x964]
push 0
lea eax, [ebp - 0x984]
push eax
push edx
lea eax, [ebp - 0x430]
push eax
push dword [ebp - 0x970]
call dword [sym.imp.KERNEL32.DLL_WriteFile]
test eax, eax
jne 0x5510f1
call fcn.00469e00
mov edi, dword [ebp - 0x980]
mov dword [ebp - 0x978], edi
jmp 0x550e50
mov esi, 0xfffffffa
jmp 0x55110e
mov esi, 1
mov eax, dword [ebp - 0x960]
mov edi, dword [sym.imp.KERNEL32.DLL_CloseHandle]
test eax, eax
je 0x55112b
push eax
call edi
mov dword [ebp - 0x960], 0
mov eax, dword [ebp - 0x970]
test eax, eax
je 0x551142
push eax
call edi
mov dword [ebp - 0x970], 0
mov byte [ebp - 4], 1
mov eax, dword [ebp - 0x970]
mov edi, dword [sym.imp.KERNEL32.DLL_CloseHandle]
test eax, eax
je 0x5511b1
push eax
call edi
mov dword [ebp - 0x970], 0
jmp 0x5511b1
mov eax, dword [ebp - 0x960]
test eax, eax
je 0x551182
mov edi, dword [sym.imp.KERNEL32.DLL_CloseHandle]
push eax
call edi
mov dword [ebp - 0x960], 0
mov esi, 0xfffffffd
jmp 0x5511ab
mov eax, dword [ebp - 0x960]
test eax, eax
je 0x5511a6
mov edi, dword [sym.imp.KERNEL32.DLL_CloseHandle]
push eax
call edi
mov dword [ebp - 0x960], 0
mov esi, 0xfffffffc
mov edi, dword [sym.imp.KERNEL32.DLL_CloseHandle]
mov dword [ebp - 4], 0xffffffff
mov ecx, dword [ebp - 0x960]
test ecx, ecx
je 0x5511cf
push ecx
call edi
mov dword [ebp - 0x960], 0
mov eax, esi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.005e9f40
mov esp, ebp
pop ebp
ret