Function at 0x5b7480
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xe0
mov eax, dword [0x6ba00c]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 8]
push ebx
mov ebx, dword [ebp + 0x18]
mov dword [ebp - 0xd4], eax
mov eax, dword [ebp + 0x20]
push esi
mov esi, dword [ebp + 0x14]
mov dword [ebp - 0xe0], eax
mov eax, dword [ebp + 0x24]
push edi
mov edi, dword [ebp + 0x10]
mov dword [ebp - 0xd8], eax
mov eax, dword [ebp + 0x28]
shr edi, 3
mov dword [ebp - 0xdc], eax
mov eax, dword [ebp + 0x2c]
mov dword [ebp - 0x98], esi
mov dword [ebp - 0xac], ebx
mov dword [ebp - 0x94], eax
mov dword [ebp - 0xc0], 0
mov dword [ebp - 0xa8], 0
mov dword [ebp - 0x88], 0
mov dword [ebp - 0xbc], 2
cmp edi, 0x14
je 0x5b7512
cmp edi, 0x1c
je 0x5b7512
cmp edi, 0x20
jne 0x5b7590
test esi, esi
jne 0x5b754d
cmp edi, 0x14
jne 0x5b752a
call fcn.00520ef0
mov esi, eax
mov dword [ebp - 0x98], esi
jmp 0x5b7558
cmp edi, 0x1c
jne 0x5b753e
call fcn.00520f00
mov esi, eax
mov dword [ebp - 0x98], esi
jmp 0x5b7558
call fcn.00520f10
mov esi, eax
mov dword [ebp - 0x98], esi
jmp 0x5b7558
push esi
call fcn.00533790
add esp, 4
mov edi, eax
mov eax, 0x200
cmp dword [ebp + 0xc], eax
cmovae eax, dword [ebp + 0xc]
add eax, 0x3f
and eax, 0xffffffc0
mov dword [ebp - 0xb0], eax
test ebx, ebx
je 0x5b75b4
mov eax, dword [ebp + 0x1c]
cmp eax, edi
jae 0x5b75a3
push 0x55
push 0x678638
push 0x6e
push 0x7d
push 0xa
call fcn.005288a0
add esp, 0x14
pop edi
pop esi
xor eax, eax
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0049a6f7
mov esp, ebp
pop ebp
ret
cmova eax, edi
push eax
lea eax, [ebp - 0x64]
push ebx
push eax
call fcn.005e0280
add esp, 0xc
call fcn.005531b0
mov dword [ebp - 0xa4], eax
test eax, eax
je 0x5b7c33
call fcn.00558340
mov ebx, eax
mov dword [ebp - 0x88], ebx
test ebx, ebx
je 0x5b7c33
push ebx
call fcn.005583b0
push ebx
call fcn.005582d0
push ebx
mov dword [ebp - 0xcc], eax
call fcn.005582d0
push ebx
mov dword [ebp - 0xa0], eax
call fcn.005582d0
push ebx
mov dword [ebp - 0xb4], eax
call fcn.005582d0
push ebx
mov dword [ebp - 0x9c], eax
call fcn.005582d0
push ebx
mov dword [ebp - 0xd0], eax
call fcn.005582d0
push ebx
mov dword [ebp - 0xc8], eax
call fcn.005582d0
push ebx
mov dword [ebp - 0x90], eax
call fcn.005582d0
mov ebx, eax
add esp, 0x24
mov dword [ebp - 0x8c], ebx
test ebx, ebx
je 0x5b7c33
mov eax, dword [ebp - 0xb0]
dec eax
push eax
call fcn.0051d520
push eax
push ebx
call fcn.0056e750
add esp, 0xc
test eax, eax
je 0x5b7c33
nop
push dword [ebp - 0xa8]
xor ebx, ebx
cmp dword [ebp - 0xac], ebx
push 0
push dword [ebp - 0x94]
sete bl
call fcn.00594470
inc dword [ebp - 0xa8]
add esp, 0xc
test eax, eax
je 0x5b7c33
cmp dword [ebp - 0xac], 0
jne 0x5b76bf
lea eax, [ebp - 0x64]
push edi
push eax
call fcn.00525cb0
add esp, 8
test eax, eax
jle 0x5b7c33
jmp 0x5b76c9
mov dword [ebp - 0xac], 0
push edi
lea eax, [ebp - 0x64]
push eax
lea eax, [ebp - 0x44]
push eax
call fcn.005e0280
push edi
lea eax, [ebp - 0x64]
push eax
lea eax, [ebp - 0x84]
push eax
call fcn.005e0280
lea eax, [edi - 1]
add esp, 0x18
test eax, eax
js 0x5b76fe
add byte [ebp + eax - 0x44], 1
jne 0x5b76fe
sub eax, 1
jns 0x5b76f2
push 0
push esi
push 0
lea eax, [ebp - 0x24]
push eax
lea eax, [ebp - 0x64]
push edi
push eax
call fcn.00520520
add esp, 0x18
test eax, eax
je 0x5b7c33
push 0
push esi
push 0
lea eax, [ebp - 0x84]
push eax
lea eax, [ebp - 0x44]
push edi
push eax
call fcn.00520520
add esp, 0x18
test eax, eax
je 0x5b7c33
xor ecx, ecx
test edi, edi
jle 0x5b77a4
cmp edi, 0x20
jb 0x5b7790
mov eax, edi
and eax, 0x8000001f
jns 0x5b7756
dec eax
or eax, 0xffffffe0
inc eax
mov edx, edi
sub edx, eax
nop word [eax + eax]
movups xmm0, xmmword [ebp + ecx - 0x24]
movups xmm1, xmmword [ebp + ecx - 0x84]
pxor xmm1, xmm0
movups xmmword [ebp + ecx - 0x24], xmm1
movups xmm0, xmmword [ebp + ecx - 0x14]
movups xmm1, xmmword [ebp + ecx - 0x74]
pxor xmm1, xmm0
movups xmmword [ebp + ecx - 0x14], xmm1
add ecx, 0x20
cmp ecx, edx
jl 0x5b7760
cmp ecx, edi
jge 0x5b77a4
mov al, byte [ebp + ecx - 0x84]
xor byte [ebp + ecx - 0x24], al
inc ecx
cmp ecx, edi
jl 0x5b7794
push dword [ebp - 0x9c]
or byte [ebp - 0x24], 0x80
lea eax, [ebp - 0x24]
or byte [ebp + edi - 0x25], 1
push edi
push eax
call fcn.0051cb40
add esp, 0xc
test eax, eax
je 0x5b7c33
push dword [ebp - 0x94]
push ebx
push dword [ebp - 0x88]
push 0x40
push dword [ebp - 0x9c]
call fcn.00594720
add esp, 0x14
test eax, eax
jg 0x5b77f4
je 0x5b7670
jmp 0x5b7c33
mov ebx, dword [ebp - 0x94]
push 0
push 2
push ebx
call fcn.00594470
add esp, 0xc
test eax, eax
je 0x5b7c33
push 0
push 3
push ebx
call fcn.00594470
add esp, 0xc
test eax, eax
je 0x5b7c33
mov ecx, dword [ebp - 0xb0]
mov eax, 0xcccccccd
mov ebx, dword [ebp - 0xcc]
xor esi, esi
mov dword [ebp - 0xb8], esi
lea ecx, [ecx - 1]
mul ecx
mov eax, edx
shr eax, 7
mov dword [ebp - 0xc4], eax
nop dword [eax]
test esi, esi
je 0x5b786d
push esi
push 0
push dword [ebp - 0x94]
call fcn.00594470
add esp, 0xc
test eax, eax
je 0x5b7c33
push 0
push dword [ebp - 0xb4]
call fcn.0051d460
xor esi, esi
add esp, 8
cmp dword [ebp - 0xc4], esi
jl 0x5b791f
nop dword [eax + eax]
lea eax, [edi - 1]
test eax, eax
js 0x5b78a3
add byte [ebp + eax - 0x44], 1
jne 0x5b78a3
sub eax, 1
jns 0x5b7897
push 0
push dword [ebp - 0x98]
lea eax, [ebp - 0x24]
push 0
push eax
lea eax, [ebp - 0x44]
push edi
push eax
call fcn.00520520
add esp, 0x18
test eax, eax
je 0x5b7c33
push ebx
lea eax, [ebp - 0x24]
push edi
push eax
call fcn.0051cb40
add esp, 0xc
test eax, eax
je 0x5b7c33
lea eax, [edi*8]
imul eax, esi
push eax
push ebx
push ebx
call fcn.0056e750
add esp, 0xc
test eax, eax
je 0x5b7c33
mov eax, dword [ebp - 0xb4]
push ebx
push eax
push eax
call fcn.00558700
add esp, 0xc
test eax, eax
je 0x5b7c33
inc esi
cmp esi, dword [ebp - 0xc4]
jle 0x5b7890
mov eax, dword [ebp - 0xb0]
mov esi, dword [ebp - 0xb4]
dec eax
push eax
push esi
call fcn.0051d180
add esp, 8
test eax, eax
je 0x5b7c33
push esi
mov esi, dword [ebp - 0xd0]
push esi
call fcn.0051cf60
add esp, 8
test eax, eax
je 0x5b7c33
push dword [ebp - 0x8c]
push esi
push esi
call fcn.00558700
add esp, 0xc
test eax, eax
je 0x5b7c33
push dword [ebp - 0x9c]
push ebx
call fcn.0056e7a0
add esp, 8
test eax, eax
je 0x5b7c33
push dword [ebp - 0x88]
push ebx
push esi
push dword [ebp - 0xc8]
push 0
call fcn.0058cb60
add esp, 0x14
test eax, eax
je 0x5b7c33
call fcn.0051d520
push eax
push dword [ebp - 0xc8]
push ebx
call fcn.00558790
add esp, 0xc
test eax, eax
je 0x5b7c33
push ebx
push esi
mov esi, dword [ebp - 0x90]
push esi
call fcn.00558790
add esp, 0xc
test eax, eax
je 0x5b7c33
push dword [ebp - 0x8c]
push esi
call fcn.0051cd20
add esp, 8
test eax, eax
js 0x5b7a17
mov esi, dword [ebp - 0x94]
push esi
push 1
push dword [ebp - 0x88]
push 0x40
push dword [ebp - 0x90]
call fcn.00594720
add esp, 0x14
test eax, eax
jg 0x5b7a3b
jne 0x5b7c33
mov esi, dword [ebp - 0xb8]
inc esi
mov dword [ebp - 0xb8], esi
cmp esi, 0x1000
jl 0x5b7850
mov esi, dword [ebp - 0x98]
jmp 0x5b7670
push 1
push 2
push esi
call fcn.00594470
add esp, 0xc
test eax, eax
je 0x5b7c33
call fcn.0051d520
push eax
push dword [ebp - 0x90]
push dword [ebp - 0x8c]
call fcn.00558790
add esp, 0xc
test eax, eax
je 0x5b7c33
push dword [ebp - 0x88]
push dword [ebp - 0x9c]
push dword [ebp - 0x8c]
push 0
push ebx
call fcn.0058cb60
add esp, 0x14
test eax, eax
je 0x5b7c33
push 2
push dword [ebp - 0x8c]
call fcn.0051d460
add esp, 8
test eax, eax
je 0x5b7c33
push dword [ebp - 0x88]
push dword [ebp - 0x90]
push dword [ebp - 0xa4]
call fcn.00553200
add esp, 0xc
test eax, eax
je 0x5b7c33
push dword [ebp - 0xa4]
push dword [ebp - 0x88]
push dword [ebp - 0x90]
push ebx
push dword [ebp - 0x8c]
push dword [ebp - 0xa0]
call fcn.0058ae30
add esp, 0x18
test eax, eax
je 0x5b7c33
push dword [ebp - 0xa0]
call fcn.0051d110
add esp, 4
test eax, eax
je 0x5b7b66
call fcn.0051d520
push eax
mov eax, dword [ebp - 0x8c]
push eax
push eax
call fcn.00558700
add esp, 0xc
test eax, eax
je 0x5b7c33
push dword [ebp - 0xa4]
inc dword [ebp - 0xbc]
push dword [ebp - 0x88]
push dword [ebp - 0x90]
push ebx
push dword [ebp - 0x8c]
push dword [ebp - 0xa0]
call fcn.0058ae30
add esp, 0x18
test eax, eax
jne 0x5b7b00
jmp 0x5b7c33
push 1
push 3
push esi
call fcn.00594470
add esp, 0xc
test eax, eax
je 0x5b7c33
mov dword [ebp - 0xc0], 1
nop word [eax + eax]
mov ebx, dword [ebp - 0xd4]
push dword [ebx + 8]
call fcn.0051d030
push dword [ebx + 0xc]
call fcn.0051d030
push dword [ebx + 0x10]
call fcn.0051d030
push dword [ebp - 0x90]
call fcn.0051cfd0
push dword [ebp - 0x9c]
mov dword [ebx + 8], eax
call fcn.0051cfd0
push dword [ebp - 0xa0]
mov dword [ebx + 0xc], eax
call fcn.0051cfd0
add esp, 0x18
mov dword [ebx + 0x10], eax
cmp dword [ebx + 8], 0
je 0x5b7c29
cmp dword [ebx + 0xc], 0
je 0x5b7c29
test eax, eax
je 0x5b7c29
mov ecx, dword [ebp - 0xd8]
test ecx, ecx
je 0x5b7bfd
mov eax, dword [ebp - 0xb8]
mov dword [ecx], eax
mov ecx, dword [ebp - 0xdc]
test ecx, ecx
je 0x5b7c0f
mov eax, dword [ebp - 0xbc]
mov dword [ecx], eax
mov eax, dword [ebp - 0xe0]
test eax, eax
je 0x5b7c33
push edi
lea ecx, [ebp - 0x64]
push ecx
push eax
call fcn.005e0280
add esp, 0xc
jmp 0x5b7c33
mov dword [ebp - 0xc0], 0
mov esi, dword [ebp - 0x88]
push esi
call fcn.00558250
push esi
call fcn.005582a0
push dword [ebp - 0xa4]
call fcn.00553110
mov ecx, dword [ebp - 4]
add esp, 0xc
mov eax, dword [ebp - 0xc0]
xor ecx, ebp
pop edi
pop esi
pop ebx
call fcn.0049a6f7
mov esp, ebp
pop ebp
ret