Function at 0x5b5710
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x24
mov edi, dword [esp + 0x3c]
mov edx, dword [0x857d90]
test edi, edi
sete al
mov ecx, dword [0x857d88]
add ecx, dword [ecx]
mov dword [esp + 0x20], ecx
mov ecx, dword [0x7dbacc]
mov dword [esp + 0x18], ecx
mov ebp, dword [0x857d8c]
add ebp, dword [ebp]
mov esi, dword [esp + 0x38]
test esi, esi
sete cl
or cl, al
jne 0x5b5d23
mov dword [esp + 8], edx
mov ecx, dword [edi]
mov eax, dword [edi + 0x6c]
mov edx, dword [0x889b1c]
add eax, edx
inc eax
mov dword [edi + 0x6c], eax
lea eax, [edi + 0x2c]
mov byte [edi + ecx + 0x2c], 0x80
mov edx, dword [edi]
lea ebx, [edx + 1]
mov dword [esp + 0xc], ebx
mov dword [edi], ebx
cmp ecx, 0x37
ja 0x5b57cb
cmp edx, 0x37
mov ebx, dword [esp + 8]
je 0x5b5b20
mov ecx, edx
mov edx, 0x37
mov dword [esp + 4], ecx
sub edx, ecx
cmp dword [0x857d90], 0x1d48585a
jne 0x5b59f8
mov ecx, dword [0x857d84]
lea esi, [ecx + 1]
mov dword [0x857d84], esi
test esi, ecx
je 0x5b59f8
mov cl, 1
jmp 0x5b5a9b
cmp edx, 0x3f
mov ebx, dword [esp + 8]
je 0x5b583e
add eax, dword [esp + 0xc]
mov ecx, 0x3f
mov ebp, edx
sub ecx, edx
mov edx, ecx
and edx, 7
je 0x5b5800
mov ecx, edx
nop word [eax + eax]
mov byte [eax], 0
inc eax
dec ecx
jne 0x5b57f0
add edx, ebp
mov ecx, 0x3f
sub ecx, edx
add ebp, 0xffffffc8
cmp ebp, 7
jb 0x5b583e
xor edx, edx
nop word [eax + eax]
mov byte [eax + edx], 0
mov byte [eax + edx + 1], 0
mov byte [eax + edx + 2], 0
mov byte [eax + edx + 3], 0
mov byte [eax + edx + 4], 0
mov byte [eax + edx + 5], 0
mov byte [eax + edx + 6], 0
mov byte [eax + edx + 7], 0
add edx, 8
cmp ecx, edx
jne 0x5b5810
pxor xmm0, xmm0
movdqu xmm2, xmmword [edi + 0x2c]
movdqu xmm1, xmmword [edi + 0x3c]
movdqa xmm3, xmm2
punpckhbw xmm3, xmm0
pshuflw xmm3, xmm3, 0x1b
pshufhw xmm3, xmm3, 0x1b
punpcklbw xmm2, xmm0
pshuflw xmm2, xmm2, 0x1b
pshufhw xmm2, xmm2, 0x1b
packuswb xmm2, xmm3
movdqu xmmword [edi + 0x2c], xmm2
movdqa xmm2, xmm1
punpckhbw xmm2, xmm0
pshuflw xmm2, xmm2, 0x1b
pshufhw xmm2, xmm2, 0x1b
punpcklbw xmm1, xmm0
pshuflw xmm1, xmm1, 0x1b
pshufhw xmm1, xmm1, 0x1b
packuswb xmm1, xmm2
movdqu xmmword [edi + 0x3c], xmm1
movdqu xmm1, xmmword [edi + 0x4c]
movdqa xmm2, xmm1
punpckhbw xmm2, xmm0
pshuflw xmm2, xmm2, 0x1b
pshufhw xmm2, xmm2, 0x1b
punpcklbw xmm1, xmm0
pshuflw xmm1, xmm1, 0x1b
pshufhw xmm1, xmm1, 0x1b
packuswb xmm1, xmm2
movdqu xmmword [edi + 0x4c], xmm1
movdqu xmm1, xmmword [edi + 0x5c]
movdqa xmm2, xmm1
punpckhbw xmm2, xmm0
pshuflw xmm2, xmm2, 0x1b
pshufhw xmm2, xmm2, 0x1b
punpcklbw xmm1, xmm0
pshuflw xmm0, xmm1, 0x1b
pshufhw xmm0, xmm0, 0x1b
packuswb xmm0, xmm2
movdqu xmmword [edi + 0x5c], xmm0
mov edx, ebx
xor edx, 0xb4931d55
mov ecx, edi
call fcn.005b54f0
mov byte [edi + 0x2c], 0
mov byte [edi + 0x2d], 0
mov byte [edi + 0x2e], 0
mov byte [edi + 0x2f], 0
mov byte [edi + 0x30], 0
mov byte [edi + 0x31], 0
mov byte [edi + 0x32], 0
mov byte [edi + 0x33], 0
mov byte [edi + 0x34], 0
mov byte [edi + 0x35], 0
mov byte [edi + 0x36], 0
mov byte [edi + 0x37], 0
mov byte [edi + 0x38], 0
mov byte [edi + 0x39], 0
mov byte [edi + 0x3a], 0
mov byte [edi + 0x3b], 0
mov byte [edi + 0x3c], 0
mov byte [edi + 0x3d], 0
mov byte [edi + 0x3e], 0
mov byte [edi + 0x3f], 0
mov byte [edi + 0x40], 0
mov byte [edi + 0x41], 0
mov byte [edi + 0x42], 0
mov byte [edi + 0x43], 0
mov byte [edi + 0x44], 0
mov byte [edi + 0x45], 0
mov byte [edi + 0x46], 0
mov byte [edi + 0x47], 0
mov dword [0x857d98], 0x47dfa4d3
mov byte [edi + 0x48], 0
mov byte [edi + 0x49], 0
mov byte [edi + 0x4a], 0
mov byte [edi + 0x4b], 0
mov byte [edi + 0x4c], 0
mov byte [edi + 0x4d], 0
mov byte [edi + 0x4e], 0
mov byte [edi + 0x4f], 0
mov byte [edi + 0x50], 0
mov byte [edi + 0x51], 0
mov byte [edi + 0x52], 0
mov byte [edi + 0x53], 0
mov byte [edi + 0x54], 0
mov byte [edi + 0x55], 0
mov byte [edi + 0x56], 0
mov byte [edi + 0x57], 0
mov byte [edi + 0x58], 0
mov byte [edi + 0x59], 0
mov byte [edi + 0x5a], 0
mov byte [edi + 0x5b], 0
mov byte [edi + 0x5c], 0
mov byte [edi + 0x5d], 0
mov byte [edi + 0x5e], 0
mov byte [edi + 0x5f], 0
mov byte [edi + 0x60], 0
mov byte [edi + 0x61], 0
mov byte [edi + 0x62], 0
mov byte [edi + 0x63], 0
jmp 0x5b5bbe
mov esi, dword [ebp]
xor ecx, ecx
cmp dword [esp + 0x18], 0
jle 0x5b5a9b
mov dword [esp + 0x1c], ebp
add esi, ebp
mov dword [esp + 0x14], esi
mov dword [esp], 0
xor ebp, ebp
mov dword [esp + 0x10], 0
jmp 0x5b5a77
mov esi, dword [esp + 0x1c]
mov ebp, dword [esp + 0x10]
lea ebx, [esi + ebp*4]
add ebx, 4
add ebx, dword [esi + ebp*4 + 4]
mov dword [esp + 0x14], ebx
inc ebp
mov ebx, edi
xor ebx, 4
and edi, 4
lea edi, [ebx + edi*2]
dec edi
mov ebx, edi
xor ebx, ecx
and edi, ecx
lea edi, [ebx + edi*2]
xor esi, esi
mov dword [esp + 0x10], ebp
xor ebp, ebp
mov ebx, dword [esp]
mov ecx, esi
xor bl, cl
mov dword [esp], ebx
inc edi
cmp edi, dword [esp + 0x18]
mov ecx, edi
jge 0x5b5aa4
mov esi, dword [esp + 0x20]
lea ebx, [esi + ecx]
mov edi, dword [esp + 0x14]
sub edi, ebx
mov ebx, ebp
sbb ebx, 0
cmp edi, 1
sbb ebx, 0
movzx ebx, byte [esi + ecx]
jl 0x5b5a30
mov esi, ebx
mov edi, ecx
jmp 0x5b5a64
mov dword [esp], 0
jmp 0x5b5aaa
xor ecx, ecx
mov edi, dword [esp + 0x3c]
add eax, dword [esp + 0xc]
mov esi, dword [esp + 4]
and esi, 0xfffffff8
add esi, 0xffffffc8
or esi, edx
cmp esi, 0xfffffff8
jne 0x5b5d2b
add dword [esp + 4], 0xffffffd0
cmp dword [0x857d94], 0x3d55d14e
movzx ebx, byte [0x7dbad4]
jne 0x5b5d62
cmp dword [esp + 4], 7
mov esi, dword [esp + 0x38]
mov ebx, dword [esp + 8]
jb 0x5b5b20
nop
mov byte [eax], 0
mov byte [eax + 1], 0
mov byte [eax + 2], 0
mov byte [eax + 3], 0
mov byte [eax + 4], 0
mov byte [eax + 5], 0
mov byte [eax + 6], 0
mov ecx, edx
xor ecx, 0xfffffff8
add edx, edx
and edx, 0xfffffff0
mov byte [eax + 7], 0
add eax, 8
add edx, ecx
jne 0x5b5af0
pxor xmm0, xmm0
movdqu xmm2, xmmword [edi + 0x2c]
movdqu xmm1, xmmword [edi + 0x3c]
movdqa xmm3, xmm2
punpckhbw xmm3, xmm0
pshuflw xmm3, xmm3, 0x1b
pshufhw xmm3, xmm3, 0x1b
punpcklbw xmm2, xmm0
pshuflw xmm2, xmm2, 0x1b
pshufhw xmm2, xmm2, 0x1b
packuswb xmm2, xmm3
movdqu xmmword [edi + 0x2c], xmm2
movdqa xmm2, xmm1
punpckhbw xmm2, xmm0
pshuflw xmm2, xmm2, 0x1b
pshufhw xmm2, xmm2, 0x1b
punpcklbw xmm1, xmm0
pshuflw xmm1, xmm1, 0x1b
pshufhw xmm1, xmm1, 0x1b
packuswb xmm1, xmm2
movdqu xmmword [edi + 0x3c], xmm1
movdqu xmm1, xmmword [edi + 0x4c]
movdqa xmm2, xmm1
punpckhbw xmm2, xmm0
pshuflw xmm2, xmm2, 0x1b
pshufhw xmm2, xmm2, 0x1b
punpcklbw xmm1, xmm0
pshuflw xmm0, xmm1, 0x1b
pshufhw xmm0, xmm0, 0x1b
packuswb xmm0, xmm2
movdqu xmmword [edi + 0x4c], xmm0
mov eax, dword [edi + 0x5c]
bswap eax
mov dword [edi + 0x5c], eax
mov eax, dword [edi + 0x60]
bswap eax
mov dword [edi + 0x60], eax
mov eax, dword [edi + 4]
mov ecx, dword [edi + 8]
shld eax, ecx, 3
mov dword [edi + 4], eax
shl ecx, 3
mov dword [edi + 8], ecx
mov dword [edi + 0x64], eax
mov dword [edi + 0x68], ecx
xor ebx, 0xb4931d55
mov ecx, edi
mov edx, ebx
call fcn.005b54f0
movzx eax, byte [edi + 0xc]
mov byte [esi], al
movzx eax, byte [edi + 0xd]
mov byte [esi + 1], al
movzx eax, byte [edi + 0xe]
mov byte [esi + 2], al
movzx eax, byte [edi + 0xf]
mov byte [esi + 3], al
movzx eax, byte [edi + 0x10]
mov byte [esi + 4], al
movzx eax, byte [edi + 0x11]
mov byte [esi + 5], al
movzx eax, byte [edi + 0x12]
mov byte [esi + 6], al
movzx eax, byte [edi + 0x13]
mov byte [esi + 7], al
movzx eax, byte [edi + 0x14]
mov byte [esi + 8], al
movzx eax, byte [edi + 0x15]
mov byte [esi + 9], al
movzx eax, byte [edi + 0x16]
mov byte [esi + 0xa], al
movzx eax, byte [edi + 0x17]
mov byte [esi + 0xb], al
movzx eax, byte [edi + 0x18]
mov byte [esi + 0xc], al
movzx eax, byte [edi + 0x19]
mov byte [esi + 0xd], al
movzx eax, byte [edi + 0x1a]
mov byte [esi + 0xe], al
movzx eax, byte [edi + 0x1b]
mov byte [esi + 0xf], al
movzx eax, byte [edi + 0x1c]
mov byte [esi + 0x10], al
movzx eax, byte [edi + 0x1d]
mov byte [esi + 0x11], al
movzx eax, byte [edi + 0x1e]
mov byte [esi + 0x12], al
movzx eax, byte [edi + 0x1f]
mov byte [esi + 0x13], al
movzx eax, byte [edi + 0x20]
mov byte [esi + 0x14], al
movzx eax, byte [edi + 0x21]
mov byte [esi + 0x15], al
movzx eax, byte [edi + 0x22]
mov byte [esi + 0x16], al
movzx eax, byte [edi + 0x23]
mov byte [esi + 0x17], al
movzx eax, byte [edi + 0x24]
mov byte [esi + 0x18], al
movzx eax, byte [edi + 0x25]
mov byte [esi + 0x19], al
movzx eax, byte [edi + 0x26]
mov byte [esi + 0x1a], al
movzx eax, byte [edi + 0x27]
mov byte [esi + 0x1b], al
movzx eax, byte [edi + 0x28]
mov byte [esi + 0x1c], al
movzx eax, byte [edi + 0x29]
mov byte [esi + 0x1d], al
movzx eax, byte [edi + 0x2a]
mov byte [esi + 0x1e], al
movzx eax, byte [edi + 0x2b]
mov byte [esi + 0x1f], al
pxor xmm0, xmm0
movdqu xmm2, xmmword [esi]
movdqu xmm1, xmmword [esi + 0x10]
movdqa xmm3, xmm2
punpckhbw xmm3, xmm0
pshuflw xmm3, xmm3, 0x1b
pshufhw xmm3, xmm3, 0x1b
punpcklbw xmm2, xmm0
pshuflw xmm2, xmm2, 0x1b
pshufhw xmm2, xmm2, 0x1b
packuswb xmm2, xmm3
movdqu xmmword [esi], xmm2
movdqa xmm2, xmm1
punpckhbw xmm2, xmm0
pshuflw xmm2, xmm2, 0x1b
pshufhw xmm2, xmm2, 0x1b
punpcklbw xmm1, xmm0
pshuflw xmm0, xmm1, 0x1b
pshufhw xmm0, xmm0, 0x1b
packuswb xmm0, xmm2
movdqu xmmword [esi + 0x10], xmm0
add esp, 0x24
pop esi
pop edi
pop ebx
pop ebp
ret
xor edi, edi
nop dword [eax]
mov byte [eax + edi], 0
inc edi
mov ebx, edi
xor ebx, esi
cmp ebx, 0xfffffff8
jne 0x5b5d30
add eax, edi
sub edx, edi
mov edi, dword [esp + 0x3c]
add dword [esp + 4], 0xffffffd0
cmp dword [0x857d94], 0x3d55d14e
movzx ebx, byte [0x7dbad4]
je 0x5b5adf
sub bl, byte [esp]
movzx esi, bl
mov ebx, edi
xor edi, edi
test cl, cl
cmove edi, esi
mov ecx, dword [0x889b1c]
mov esi, edi
xor esi, ecx
and edi, ecx
lea ecx, [esi + edi*2]
mov edi, ebx
mov dword [0x889b1c], ecx
cmp dword [esp + 4], 7
mov esi, dword [esp + 0x38]
mov ebx, dword [esp + 8]
jae 0x5b5af0
jmp 0x5b5b20