Function at 0x5fbf7c
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
mov ecx, 0x12
push 0
push 0
dec ecx
jne 0x5fbf84
push ebx
push esi
push edi
mov ebx, eax
xor eax, eax
push ebp
push 0x5fc62d
push dword fs:[eax]
mov dword fs:[eax], esp
mov al, byte [ebx + 0x132]
cmp al, 3
je 0x5fbfac
cmp al, 6
jne 0x5fbfbf
mov byte [ebx + 0xac], 2
mov eax, ebx
call fcn.005fc664
jmp 0x5fc5e8
lea eax, [ebx + 0x128]
call fcn.004042ac
mov al, byte [ebx + 0x132]
sub al, 1
jb 0x5fbfe0
je 0x5fbfe9
dec al
je 0x5fbff2
sub al, 3
je 0x5fbffb
jmp 0x5fc010
mov dword [ebp - 0x10], 5
jmp 0x5fc017
mov dword [ebp - 0x10], 0x10
jmp 0x5fc017
mov dword [ebp - 0x10], 0x10
jmp 0x5fc017
mov eax, dword [ebx + 0x88]
test eax, eax
jns 0x5fc008
add eax, 7
sar eax, 3
mov dword [ebp - 0x10], eax
jmp 0x5fc017
mov dword [ebp - 0x10], 5
lea eax, [ebp - 8]
mov edx, 0x20
call fcn.004048f8
mov esi, 1
mov edi, 0x651624
lea eax, [ebp - 8]
call fcn.004047c4
mov dl, byte [edi]
mov byte [eax + esi - 1], dl
inc esi
inc edi
cmp esi, 0x21
jne 0x5fc02e
xor ecx, ecx
mov edx, 0x5fc644
mov eax, dword [ebx + 0x6c]
call fcn.004c8500
test eax, eax
je 0x5fc06e
mov eax, ebx
call fcn.005fcdbc
xor edx, edx
call fcn.004cb1f4
lea edx, [ebp - 0x18]
call fcn.004cab9c
jmp 0x5fc076
lea eax, [ebp - 0x18]
call fcn.004042ac
cmp dword [ebx + 0x134], 0
jne 0x5fc2d3
cmp dword [ebx + 0x148], 0
jne 0x5fc09f
lea eax, [ebx + 0x134]
mov edx, dword [ebx + 0x150]
call fcn.00404300
jmp 0x5fc0b0
lea eax, [ebx + 0x134]
mov edx, dword [ebx + 0x148]
call fcn.00404300
mov eax, dword [ebx + 0x134]
call fcn.0040456c
cmp eax, 0x20
jle 0x5fc0e7
lea eax, [ebp - 0x34]
push eax
mov ecx, 0x20
mov edx, 1
mov eax, dword [ebx + 0x134]
call fcn.004d3670
mov edx, dword [ebp - 0x34]
lea eax, [ebx + 0x134]
call fcn.00404300
lea eax, [ebx + 0x134]
mov edx, dword [ebp - 8]
call fcn.00404574
lea eax, [ebp - 0x38]
push eax
mov ecx, 0x20
mov edx, 1
mov eax, dword [ebx + 0x134]
call fcn.004d3670
mov edx, dword [ebp - 0x38]
lea eax, [ebx + 0x134]
call fcn.00404300
lea edx, [ebp - 0x30]
mov eax, dword [ebx + 0x134]
call fcn.004b8fa8
cmp byte [ebx + 0x132], 0
jne 0x5fc13c
cmp dword [ebx + 0x8c], 3
jl 0x5fc166
mov esi, 0x32
lea edx, [ebp - 0x4c]
lea eax, [ebp - 0x30]
call fcn.004b9168
mov eax, dword [ebp - 0x4c]
lea edx, [ebp - 0x48]
call fcn.004b8fa8
push esi
lea esi, [ebp - 0x48]
lea edi, [ebp - 0x30]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
pop esi
dec esi
jne 0x5fc141
lea eax, [ebp - 4]
mov edx, dword [ebp - 0x10]
call fcn.004048f8
mov edi, dword [ebp - 0x10]
test edi, edi
jle 0x5fc19b
mov esi, 1
lea eax, [ebp - 0x30]
mov dword [ebp - 0x1c], eax
lea eax, [ebp - 4]
call fcn.004047c4
mov edx, dword [ebp - 0x1c]
mov dl, byte [edx]
mov byte [eax + esi - 1], dl
inc esi
inc dword [ebp - 0x1c]
dec edi
jne 0x5fc183
cmp dword [ebx + 0x138], 0
jne 0x5fc1b7
lea eax, [ebx + 0x138]
mov edx, dword [ebx + 0x150]
call fcn.00404300
jmp 0x5fc1c5
lea eax, [ebx + 0x128]
mov edx, dword [ebp - 4]
call fcn.00404300
mov eax, dword [ebx + 0x138]
call fcn.0040456c
cmp eax, 0x20
jle 0x5fc1fc
lea eax, [ebp - 0x50]
push eax
mov ecx, 0x20
mov edx, 1
mov eax, dword [ebx + 0x138]
call fcn.004d3670
mov edx, dword [ebp - 0x50]
lea eax, [ebx + 0x138]
call fcn.00404300
lea eax, [ebx + 0x138]
mov edx, dword [ebp - 8]
call fcn.00404574
lea eax, [ebp - 0x54]
push eax
mov ecx, 0x20
mov edx, 1
mov eax, dword [ebx + 0x138]
call fcn.004d3670
mov edx, dword [ebp - 0x54]
lea eax, [ebx + 0x138]
call fcn.00404300
lea ecx, [ebp - 0x58]
mov edx, dword [ebx + 0x138]
mov eax, dword [ebp - 4]
call fcn.005c053c
mov edx, dword [ebp - 0x58]
lea eax, [ebx + 0x134]
call fcn.00404300
cmp byte [ebx + 0x132], 0
jne 0x5fc262
cmp dword [ebx + 0x8c], 3
jl 0x5fc2d3
lea eax, [ebp - 0x14]
mov edx, dword [ebp - 4]
call fcn.00404344
mov esi, 1
mov eax, dword [ebp - 0x14]
call fcn.0040456c
mov edi, eax
test edi, edi
jle 0x5fc2ae
mov dword [ebp - 0xc], 1
lea eax, [ebp - 4]
call fcn.004047c4
mov edx, dword [ebp - 0xc]
lea eax, [eax + edx - 1]
push eax
mov eax, dword [ebp - 0x14]
mov edx, dword [ebp - 0xc]
mov al, byte [eax + edx - 1]
mov edx, esi
xor al, dl
pop edx
mov byte [edx], al
inc dword [ebp - 0xc]
dec edi
jne 0x5fc287
lea ecx, [ebp - 0x5c]
mov edx, dword [ebx + 0x134]
mov eax, dword [ebp - 4]
call fcn.005c053c
mov edx, dword [ebp - 0x5c]
lea eax, [ebx + 0x134]
call fcn.00404300
inc esi
cmp esi, 0x14
jne 0x5fc272
cmp byte [ebx + 0x155], 0
je 0x5fc2e6
and dword [ebx + 0x12c], 0xffff
lea eax, [ebx + 0x138]
mov edx, dword [ebx + 0x150]
call fcn.00404300
mov eax, dword [ebx + 0x138]
call fcn.0040456c
cmp eax, 0x20
jle 0x5fc32e
lea eax, [ebp - 0x60]
push eax
mov ecx, 0x20
mov edx, 1
mov eax, dword [ebx + 0x138]
call fcn.004d3670
mov edx, dword [ebp - 0x60]
lea eax, [ebx + 0x138]
call fcn.00404300
lea eax, [ebx + 0x138]
mov edx, dword [ebp - 8]
call fcn.00404574
lea eax, [ebp - 0x64]
push eax
mov ecx, 0x20
mov edx, 1
mov eax, dword [ebx + 0x138]
call fcn.004d3670
mov edx, dword [ebp - 0x64]
lea eax, [ebx + 0x138]
call fcn.00404300
lea eax, [ebx + 0x138]
mov edx, dword [ebx + 0x134]
call fcn.00404574
lea eax, [ebp - 0x68]
mov dl, byte [ebx + 0x12c]
and dl, 0xff
call fcn.00404494
mov edx, dword [ebp - 0x68]
lea eax, [ebx + 0x138]
call fcn.00404574
lea eax, [ebp - 0x6c]
mov edx, dword [ebx + 0x12c]
and edx, 0xff00
shr edx, 8
call fcn.00404494
mov edx, dword [ebp - 0x6c]
lea eax, [ebx + 0x138]
call fcn.00404574
lea eax, [ebp - 0x70]
mov edx, dword [ebx + 0x12c]
and edx, 0xff0000
shr edx, 0x10
call fcn.00404494
mov edx, dword [ebp - 0x70]
lea eax, [ebx + 0x138]
call fcn.00404574
lea eax, [ebp - 0x74]
mov edx, dword [ebx + 0x12c]
and edx, 0xff000000
shr edx, 0x18
call fcn.00404494
mov edx, dword [ebp - 0x74]
lea eax, [ebx + 0x138]
call fcn.00404574
lea eax, [ebx + 0x138]
mov edx, dword [ebp - 0x18]
call fcn.00404574
cmp byte [ebx + 0xb4], 0
jne 0x5fc429
lea eax, [ebx + 0x138]
mov edx, 0x5fc650
call fcn.00404574
lea edx, [ebp - 0x30]
mov eax, dword [ebx + 0x138]
call fcn.004b8fa8
cmp byte [ebx + 0x132], 0
jne 0x5fc449
cmp dword [ebx + 0x8c], 3
jl 0x5fc487
mov esi, 0x32
lea eax, [ebp - 0x78]
push eax
lea edx, [ebp - 0x7c]
lea eax, [ebp - 0x30]
call fcn.004b9168
mov eax, dword [ebp - 0x7c]
mov ecx, dword [ebp - 0x10]
mov edx, 1
call fcn.004d3670
mov eax, dword [ebp - 0x78]
lea edx, [ebp - 0x48]
call fcn.004b8fa8
push esi
lea esi, [ebp - 0x48]
lea edi, [ebp - 0x30]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
pop esi
dec esi
jne 0x5fc44e
lea eax, [ebp - 4]
mov edx, dword [ebp - 0x10]
call fcn.004048f8
mov edi, dword [ebp - 0x10]
test edi, edi
jle 0x5fc4bc
mov esi, 1
lea eax, [ebp - 0x30]
mov dword [ebp - 0x20], eax
lea eax, [ebp - 4]
call fcn.004047c4
mov edx, dword [ebp - 0x20]
mov dl, byte [edx]
mov byte [eax + esi - 1], dl
inc esi
inc dword [ebp - 0x20]
dec edi
jne 0x5fc4a4
cmp dword [ebx + 0x128], 0
jne 0x5fc4d3
lea eax, [ebx + 0x128]
mov edx, dword [ebp - 4]
call fcn.00404300
cmp byte [ebx + 0x132], 0
jne 0x5fc4e9
cmp dword [ebx + 0x8c], 3
jl 0x5fc5c6
lea eax, [ebp - 0x80]
mov ecx, dword [ebp - 0x18]
mov edx, dword [ebp - 8]
call fcn.004045b8
mov eax, dword [ebp - 0x80]
lea edx, [ebp - 0x30]
call fcn.004b8fa8
lea edx, [ebp - 0x88]
lea eax, [ebp - 0x30]
call fcn.004b9168
mov edx, dword [ebp - 0x88]
lea ecx, [ebp - 0x84]
mov eax, dword [ebp - 4]
call fcn.005c053c
mov edx, dword [ebp - 0x84]
lea eax, [ebx + 0x138]
call fcn.00404300
lea eax, [ebp - 0x14]
mov edx, dword [ebp - 4]
call fcn.00404344
mov esi, 1
mov eax, dword [ebp - 0x14]
call fcn.0040456c
mov edi, eax
test edi, edi
jle 0x5fc581
mov dword [ebp - 0xc], 1
lea eax, [ebp - 4]
call fcn.004047c4
mov edx, dword [ebp - 0xc]
lea eax, [eax + edx - 1]
push eax
mov eax, dword [ebp - 0x14]
mov edx, dword [ebp - 0xc]
mov al, byte [eax + edx - 1]
mov edx, esi
xor al, dl
pop edx
mov byte [edx], al
inc dword [ebp - 0xc]
dec edi
jne 0x5fc55a
lea ecx, [ebp - 0x8c]
mov edx, dword [ebx + 0x138]
mov eax, dword [ebp - 4]
call fcn.005c053c
mov edx, dword [ebp - 0x8c]
lea eax, [ebx + 0x138]
call fcn.00404300
inc esi
cmp esi, 0x14
jne 0x5fc545
mov esi, 0x10
lea eax, [ebx + 0x138]
mov edx, 0x5fc660
call fcn.00404574
dec esi
jne 0x5fc5b1
jmp 0x5fc5e8
lea ecx, [ebp - 0x90]
mov edx, dword [ebp - 8]
mov eax, dword [ebp - 4]
call fcn.005c053c
mov edx, dword [ebp - 0x90]
lea eax, [ebx + 0x138]
call fcn.00404300
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x5fc634
lea eax, [ebp - 0x90]
mov edx, 0x12
call fcn.004042d0
lea eax, [ebp - 0x38]
mov edx, 2
call fcn.004042d0
lea eax, [ebp - 0x18]
mov edx, 2
call fcn.004042d0
lea eax, [ebp - 8]
mov edx, 2
call fcn.004042d0
ret