Function at 0x5fd0c8
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
mov ecx, 0xe
push 0
push 0
dec ecx
jne 0x5fd0d0
push ebx
push esi
push edi
mov esi, edx
mov ebx, eax
xor eax, eax
push ebp
push 0x5fd690
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, ebx
call fcn.005fac70
mov byte [ebp - 2], al
lea eax, [ebp - 0x28]
mov edx, esi
call fcn.00404534
cmp byte [ebx + 0xac], 2
jne 0x5fd115
lea edx, [ebp - 0x28]
mov eax, esi
call fcn.004d21d0
jmp 0x5fd11f
lea eax, [ebp - 0x28]
mov edx, esi
call fcn.00404534
cmp byte [ebp - 2], 0
jne 0x5fd132
cmp dword [ebp - 0x28], 0
sete byte [ebp - 1]
jmp 0x5fd64a
cmp dword [ebx + 0x88], 0x28
jne 0x5fd144
mov byte [ebx + 0x132], 0
jmp 0x5fd14b
mov byte [ebx + 0x132], 1
cmp byte [ebx + 0xac], 1
jne 0x5fd15b
mov byte [ebx + 0x132], 2
cmp byte [ebx + 0xac], 2
jne 0x5fd4ae
cmp dword [ebx + 0x8c], 6
jne 0x5fd17a
mov byte [ebx + 0x132], 6
jmp 0x5fd181
mov byte [ebx + 0x132], 3
mov eax, dword [ebp - 0x28]
call fcn.0040456c
mov esi, eax
mov eax, dword [ebp - 0x28]
call fcn.0040456c
cmp eax, 0x7f
jle 0x5fd19d
mov esi, 0x7f
lea edi, [esi + 0x38]
push edi
lea eax, [ebp - 0x10]
mov ecx, 1
mov edx, dword [0x4aa614]
call fcn.00405974
add esp, 4
mov eax, dword [ebp - 0x28]
call fcn.0040456c
test eax, eax
jle 0x5fd1d5
lea eax, [ebp - 0x28]
call fcn.004047c4
mov edx, dword [ebp - 0x10]
mov ecx, esi
call fcn.004029a4
mov eax, dword [ebx + 0x94]
call fcn.0040456c
cmp eax, 0x30
jl 0x5fd202
lea eax, [ebx + 0x94]
call fcn.004047c4
add eax, 0x20
mov edx, dword [ebp - 0x10]
add edx, esi
mov ecx, 8
call fcn.004029a4
mov eax, dword [ebx + 0x98]
call fcn.0040456c
cmp eax, 0x30
jl 0x5fd22e
lea eax, [ebx + 0x98]
call fcn.004047c4
mov edx, dword [ebp - 0x10]
lea edx, [edx + esi + 8]
mov ecx, 0x30
call fcn.004029a4
mov eax, dword [ebx + 0x8c]
cmp eax, 5
jne 0x5fd274
mov eax, dword [ebp - 0x10]
call fcn.004057c0
mov edx, eax
lea ecx, [ebp - 0x48]
mov eax, dword [ebp - 0x10]
call fcn.004c64ac
lea eax, [ebp - 0x14]
mov edx, 0x20
call fcn.004048f8
lea eax, [ebp - 0x14]
call fcn.004047c4
mov edx, eax
lea eax, [ebp - 0x48]
mov ecx, 0x20
call fcn.004029a4
jmp 0x5fd2a8
cmp eax, 6
jne 0x5fd2a8
push esi
lea eax, [ebp - 0x4c]
push eax
mov ecx, 0x30
mov edx, 1
mov eax, dword [ebx + 0x98]
call fcn.004d3670
mov eax, dword [ebp - 0x4c]
push eax
lea eax, [ebp - 0x14]
push eax
lea edx, [ebp - 0x10]
mov ecx, dword [ebp - 0x28]
mov eax, ebx
call fcn.005fdb1c
lea eax, [ebp - 0x50]
push eax
mov ecx, 0x20
mov edx, 1
mov eax, dword [ebx + 0x94]
call fcn.004d3670
mov edx, dword [ebp - 0x50]
mov eax, dword [ebp - 0x14]
call fcn.004046b8
jne 0x5fd4a5
mov byte [ebp - 1], 1
push edi
lea eax, [ebp - 0x10]
mov ecx, 1
mov edx, dword [0x4aa614]
call fcn.00405974
add esp, 4
mov eax, dword [ebp - 0x28]
call fcn.0040456c
test eax, eax
jle 0x5fd30b
lea eax, [ebp - 0x28]
call fcn.004047c4
mov edx, dword [ebp - 0x10]
mov ecx, esi
call fcn.004029a4
mov eax, dword [ebx + 0x94]
call fcn.0040456c
cmp eax, 0x30
jl 0x5fd338
lea eax, [ebx + 0x94]
call fcn.004047c4
add eax, 0x28
mov edx, dword [ebp - 0x10]
add edx, esi
mov ecx, 8
call fcn.004029a4
mov eax, dword [ebx + 0x98]
call fcn.0040456c
cmp eax, 0x30
jl 0x5fd364
lea eax, [ebx + 0x98]
call fcn.004047c4
mov edx, dword [ebp - 0x10]
lea edx, [edx + esi + 8]
mov ecx, 0x30
call fcn.004029a4
mov eax, dword [ebx + 0x8c]
cmp eax, 5
jne 0x5fd3aa
mov eax, dword [ebp - 0x10]
call fcn.004057c0
mov edx, eax
lea ecx, [ebp - 0x48]
mov eax, dword [ebp - 0x10]
call fcn.004c64ac
lea eax, [ebp - 0x18]
mov edx, 0x20
call fcn.004048f8
lea eax, [ebp - 0x18]
call fcn.004047c4
mov edx, eax
lea eax, [ebp - 0x48]
mov ecx, 0x20
call fcn.004029a4
jmp 0x5fd3de
cmp eax, 6
jne 0x5fd3de
push esi
lea eax, [ebp - 0x54]
push eax
mov ecx, 0x30
mov edx, 1
mov eax, dword [ebx + 0x98]
call fcn.004d3670
mov eax, dword [ebp - 0x54]
push eax
lea eax, [ebp - 0x18]
push eax
lea edx, [ebp - 0x10]
mov ecx, dword [ebp - 0x28]
mov eax, ebx
call fcn.005fdb1c
lea ecx, [ebp - 0x58]
mov edx, 0x10
xor eax, eax
call fcn.0040495c
mov edx, dword [ebp - 0x58]
lea eax, [ebp - 0x1c]
call fcn.00404344
lea eax, [ebp - 0x5c]
push eax
mov ecx, dword [ebx + 0x9c]
mov edx, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x18]
call fcn.005b8fb0
mov edx, dword [ebp - 0x5c]
lea eax, [ebx + 0x128]
call fcn.00404300
lea ecx, [ebp - 0x60]
mov edx, 0x10
xor eax, eax
call fcn.0040495c
mov edx, dword [ebp - 0x60]
lea eax, [ebp - 0x1c]
call fcn.00404344
lea eax, [ebp - 0x20]
push eax
mov ecx, dword [ebx + 0xa4]
mov edx, dword [ebp - 0x1c]
mov eax, dword [ebx + 0x128]
call fcn.005b8fb0
mov eax, dword [ebp - 0x20]
call fcn.0040456c
test eax, eax
jle 0x5fd64a
mov edx, dword [ebp - 0x20]
mov eax, 0x5fd6ac
call fcn.004d3654
cmp eax, 0xa
jne 0x5fd64a
lea eax, [ebp - 0x20]
call fcn.004047c4
lea edx, [ebp - 0x24]
mov ecx, 4
call fcn.004029a4
mov eax, dword [ebp - 0x24]
cmp eax, dword [ebx + 0xa8]
je 0x5fd64a
mov eax, dword [ebp - 0x24]
mov dword [ebx + 0xa8], eax
jmp 0x5fd64a
mov byte [ebp - 1], 0
jmp 0x5fd64a
lea eax, [ebx + 0x148]
mov edx, dword [ebp - 0x28]
call fcn.00404300
lea eax, [ebx + 0x150]
mov edx, dword [ebp - 0x28]
call fcn.00404300
lea eax, [ebx + 0x134]
call fcn.004042ac
lea eax, [ebx + 0x138]
mov edx, dword [ebx + 0x98]
call fcn.00404300
xor edx, edx
mov eax, ebx
call fcn.005fbf7c
cmp dword [ebx + 0x8c], 2
jne 0x5fd51a
lea ecx, [ebp - 0x64]
mov edx, dword [ebx + 0x94]
mov eax, dword [ebx + 0x128]
call fcn.005c053c
mov edx, dword [ebp - 0x64]
lea eax, [ebx + 0x150]
call fcn.00404300
mov eax, dword [ebx + 0x8c]
cmp eax, 3
je 0x5fd52a
cmp eax, 4
jne 0x5fd5a8
lea eax, [ebp - 8]
mov edx, dword [ebx + 0x128]
call fcn.00404344
lea eax, [ebx + 0x150]
mov edx, dword [ebx + 0x94]
call fcn.00404300
mov dword [ebp - 0xc], 0x13
mov eax, dword [ebp - 8]
call fcn.0040456c
mov edi, eax
test edi, edi
jle 0x5fd580
mov esi, 1
lea eax, [ebp - 8]
call fcn.004047c4
mov dl, byte [ebp - 0xc]
mov ecx, dword [ebx + 0x128]
xor dl, byte [ecx + esi - 1]
mov byte [eax + esi - 1], dl
inc esi
dec edi
jne 0x5fd563
lea ecx, [ebp - 0x68]
mov edx, dword [ebx + 0x150]
mov eax, dword [ebp - 8]
call fcn.005c053c
mov edx, dword [ebp - 0x68]
lea eax, [ebx + 0x150]
call fcn.00404300
dec dword [ebp - 0xc]
cmp dword [ebp - 0xc], 0xffffffff
jne 0x5fd550
lea eax, [ebx + 0x150]
mov edx, dword [ebx + 0x150]
call fcn.00404300
lea eax, [ebx + 0x134]
mov edx, dword [ebx + 0x94]
call fcn.00404300
lea eax, [ebx + 0x138]
call fcn.004042ac
xor edx, edx
mov eax, ebx
call fcn.005fbf7c
cmp dword [ebx + 0x88], 0x28
jne 0x5fd607
cmp dword [ebx + 0x8c], 3
jge 0x5fd607
mov eax, dword [ebx + 0x138]
mov edx, dword [ebx + 0x98]
call fcn.004046b8
sete byte [ebp - 1]
jmp 0x5fd64a
lea eax, [ebp - 0x6c]
push eax
mov ecx, 0x10
mov edx, 1
mov eax, dword [ebx + 0x138]
call fcn.004d3670
mov eax, dword [ebp - 0x6c]
push eax
lea eax, [ebp - 0x70]
push eax
mov ecx, 0x10
mov edx, 1
mov eax, dword [ebx + 0x98]
call fcn.004d3670
mov edx, dword [ebp - 0x70]
pop eax
call fcn.004046b8
sete byte [ebp - 1]
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x5fd697
lea eax, [ebp - 0x70]
mov edx, 0xa
call fcn.004042d0
lea eax, [ebp - 0x28]
call fcn.004042ac
lea eax, [ebp - 0x20]
mov edx, 4
call fcn.004042d0
lea eax, [ebp - 0x10]
mov edx, dword [0x4aa614]
call fcn.00405a94
lea eax, [ebp - 8]
call fcn.004042ac
ret