Function at 0x5f80cee6
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ecx
push ecx
push dword [ebp + 0x14]
push dword [ebp + 0x10]
push dword [ebp + 0xc]
push dword [ebp + 8]
call fcn.5f80cd8c
add esp, 0x10
cmp eax, 0xffffffff
mov dword [ebp - 8], eax
jne 0x5f80d022
call 0x5f7f6ed0
cmp dword [eax], 2
jne 0x5f80d022
push 0x2f
push dword [ebp + 0xc]
call 0x5f7fd702
test eax, eax
pop ecx
pop ecx
jne 0x5f80d022
push edi
push 0x7c381958
call 0x5f8130ee
mov edi, eax
test edi, edi
pop ecx
je 0x5f80d021
push esi
push 0x208
call 0x5f7ee6e9
mov esi, eax
test esi, esi
pop ecx
je 0x5f80d020
push ebx
mov ebx, 0x103
push ebx
push esi
push edi
jmp 0x5f80d005
inc dword [ebx - 0x77ce73c]
dec dword [ecx + 0x4175f845]
les ebx, [eax]
cmp eax, 0xffffffff
mov dword [ebp - 8], eax
jne 0x5f80d018
call 0x5f7f6ed0
cmp dword [eax], 2
je 0x5f80d000
mov ax, word [esi]
cmp ax, 0x5c
je 0x5f80cff0
cmp eax, 0x674005c
cmp ax, 0x2f
jne 0x5f80d018
mov ax, word [esi + 2]
cmp ax, 0x5c
je 0x5f80d000
cmp ax, 0x2f
jne 0x5f80d018
sub byte [eax - 0x576f5778], 0x98
test al, 0x98
test al, 0xa0
test al, 0xa8
test al, 0
adc byte [ecx], cl
add ah, bl
add byte [eax], al
add byte [eax], ah
mov eax, dword [0xa130a128]
test al, 0xa8
add byte [eax], dl
or dword [eax], eax
fadd qword [eax]
add byte [eax], al
and byte [ecx - 0x5ecf5ed8], ah
xor byte [ecx - 0x5ebf5ec8], ah
dec eax
mov eax, dword [0xa158a150]
pushal
mov eax, dword [0xa170a168]
cmp byte [ecx - 0x5eb75ec0], ah
push eax
mov eax, dword [0xa160a158]
push 0x78a170a1
mov eax, dword [0xa188a180]
nop
mov eax, dword [0xa1a0a198]
mov al, 0xa1
pop eax
mov eax, dword [0xa168a160]
jo 0x5f80cfcb
js 0x5f80cfcd
and byte [ecx - 0x5e6f5e78], 0x98
mov eax, dword [0xa1b0a1a0]
mov eax, 0xc8a1c0a1
mov eax, dword [0xa1d8a1d0]
loopne 0x5f80cfe5
call 0x5822c0ea
mov eax, dword [0xa208a200]
adc byte [edx - 0x5ddf5de8], ah
sub byte [edx - 0x5dc75dd0], ah
inc eax
mov byte [0xa250a248], al
pop eax
mov byte [0xa268a260], al
jo 0x5f80d00a
mov byte [0xa210a208], al
sbb byte [edx - 0x5dd75de0], ah
xor byte [edx - 0x5dbf5dc8], ah
dec eax
mov byte [0xa258a250], al
pushal
mov byte [0xa270a268], al
mov byte [0xa278a270], al
js 0x5f80d00c
and byte [edx - 0x5d6f5d78], 0x98
mov byte [0xa2a8a2a0], al
mov al, 0xa2
mov eax, 0xd0a2c0a2
mov byte [0xa2e0a2d8], al
call 0x5823c129
mov byte [0xa308a300], al
adc byte [ebx - 0x5cdf5ce8], ah
sub byte [ebx - 0x5cc75cd0], ah
inc eax
mov dword [0xa350a348], eax
pop eax
mov dword [0xa368a360], eax
jo 0x5f80d049
js 0x5f80d04b
and byte [ebx - 0x5c6f5c78], 0x98
mov dword [0xa3a8a3a0], eax
mov dword [0xa3a0a398], eax
test al, 0xa3
mov al, 0xa3
mov eax, 0xc8a3c0a3
mov dword [0xa3d8a3d0], eax
loopne 0x5f80d065
call 0x5824c16a
mov dword [0xa408a400], eax
adc byte [eax + ebx - 0x3f5bdf5c], ah
movsb byte es:[edi], byte [esi]
enter 0xffffffffffffd0a4, 0xffffffffffffffa4
fsub dword [eax - 0xf5b175c]
movsb byte es:[edi], byte [esi]
clc
movsb byte es:[edi], byte [esi]
shr byte [eax + ecx*8 + 0xacd0ac], 0xd0
or dword [eax], eax
test byte [eax], al
add byte [eax], al
xor byte [ecx - 0x56bf56c8], ch
dec eax
test eax, 0xa958a950
pushal
test eax, 0xa970a968
js 0x5f80d0ad
sub byte [ecx - 0x566f5678], 0x98
test eax, 0xa9a8a9a0
mov al, 0xa9
mov eax, 0xc8a9c0a9
test eax, 0xa9d8a9d0
loopne 0x5f80d0c7
call 0x582ac1cc
test eax, 0xaa08aa00
adc byte [edx - 0x55df55e8], ch
sub byte [edx - 0x55c755d0], ch
inc eax
stosb byte es:[edi], al
dec eax
stosb byte es:[edi], al
push eax
stosb byte es:[edi], al
pop eax
stosb byte es:[edi], al
pushal
stosb byte es:[edi], al
push 0x78aa70aa
stosb byte es:[edi], al
sub byte [edx - 0x556f5578], 0x98
stosb byte es:[edi], al
mov al, byte [0xb0aaa8aa]
stosb byte es:[edi], al
mov eax, 0xc8aac0aa
stosb byte es:[edi], al
shr byte [edx - 0x551f5528], 1
call 0x582bc20d
stosb byte es:[edi], al
add byte [ebx - 0x54ef54f8], ch
add byte [eax], al
add byte [eax], al
lock or dword [eax], eax