Function at 0x55b6d0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x24
mov esi, ecx
mov ecx, dword [ecx + 0x7c]
mov eax, dword [esi + 0xc4]
lea edx, [ecx - 0x106]
mov dword [esp + 0x10], edx
mov dword [esp + 8], ecx
movd xmm0, ecx
pshufd xmm0, xmm0, 0x50
movdqu xmmword [esp + 0x14], xmm0
xor ebp, ebp
nop word cs:[eax + eax]
mov ebx, dword [esi + 0x8c]
mov ecx, dword [esi + 0xbc]
add eax, ecx
sub ebx, eax
mov eax, dword [esi + 0x7c]
add eax, dword [esp + 0x10]
cmp ecx, eax
jb 0x55b92c
mov eax, dword [esi + 0x88]
mov edi, dword [esp + 8]
lea ecx, [eax + edi]
mov edx, edi
sub edx, ebx
push edx
push ecx
push eax
call sub.api_ms_win_crt_private_l1_1_0.dll_memcpy
add esp, 0xc
movq xmm0, qword [esi + 0xbc]
movdqu xmm1, xmmword [esp + 0x14]
psubd xmm0, xmm1
movq qword [esi + 0xbc], xmm0
sub dword [esi + 0xac], edi
movd eax, xmm0
cmp dword [esi + 0x1704], eax
jbe 0x55b77d
mov dword [esi + 0x1704], eax
mov dword [esp + 0xc], ebx
mov eax, dword [esi + 0x7c]
mov edi, dword [esi + 0x94]
mov edx, dword [esi + 0x9c]
lea ecx, [edi + edx*2]
movd xmm0, eax
cmp edx, 8
movdqa xmm5, xmmword [0x59f2e0]
movdqa xmm6, xmmword [0x59f2f0]
pcmpeqd xmm7, xmm7
jb 0x55b83d
mov dword [esp], edi
mov edi, edx
and edi, 0xfffffff8
mov ebp, edx
and edx, 7
sub ecx, edi
sub ecx, edi
pshufd xmm1, xmm0, 0
mov dword [esp + 4], ebp
mov ebx, dword [esp]
lea ebp, [ebx + ebp*2]
add ebp, 0xfffffff0
mov dword [esp], edi
neg edi
xor ebx, ebx
nop
movdqu xmm2, xmmword [ebp + ebx*2]
movdqa xmm3, xmm1
pxor xmm3, xmm5
movdqa xmm4, xmm6
pcmpgtd xmm4, xmm3
movdqa xmm3, xmm1
pand xmm3, xmm4
pxor xmm4, xmm7
por xmm4, xmm3
pslld xmm4, 0x10
psrad xmm4, 0x10
packssdw xmm4, xmm4
pshuflw xmm3, xmm4, 0x1b
pshufhw xmm3, xmm3, 0x1b
psubusw xmm2, xmm3
movdqu xmmword [ebp + ebx*2], xmm2
add ebx, 0xfffffff8
cmp edi, ebx
jne 0x55b7e0
mov edi, dword [esp]
cmp dword [esp + 4], edi
mov ebp, 0
je 0x55b864
neg edx
xor edi, edi
nop word cs:[eax + eax]
movzx ebx, word [ecx + edi*2 - 2]
sub ebx, eax
cmovb ebx, ebp
mov word [ecx + edi*2 - 2], bx
dec edi
cmp edx, edi
jne 0x55b850
mov edx, dword [esi + 0x90]
lea ecx, [edx + eax*2]
cmp eax, 8
jae 0x55b880
mov edx, eax
jmp 0x55b90a
mov edi, eax
and edi, 0xfffffff8
mov ebp, edx
mov edx, eax
and edx, 7
sub ecx, edi
sub ecx, edi
pshufd xmm0, xmm0, 0
lea ebp, [ebp + eax*2 - 0x10]
mov dword [esp + 4], edi
neg edi
xor ebx, ebx
nop word cs:[eax + eax]
movdqu xmm1, xmmword [ebp + ebx*2]
movdqa xmm2, xmm0
pxor xmm2, xmm5
movdqa xmm3, xmm6
pcmpgtd xmm3, xmm2
movdqa xmm2, xmm0
pand xmm2, xmm3
pxor xmm3, xmm7
por xmm3, xmm2
pslld xmm3, 0x10
psrad xmm3, 0x10
packssdw xmm3, xmm3
pshuflw xmm2, xmm3, 0x1b
pshufhw xmm2, xmm2, 0x1b
psubusw xmm1, xmm2
movdqu xmmword [ebp + ebx*2], xmm1
add ebx, 0xfffffff8
cmp edi, ebx
jne 0x55b8b0
cmp eax, dword [esp + 4]
mov ebp, 0
je 0x55b924
neg edx
xor edi, edi
nop
movzx ebx, word [ecx + edi*2 - 2]
sub ebx, eax
cmovb ebx, ebp
mov word [ecx + edi*2 - 2], bx
dec edi
cmp edx, edi
jne 0x55b910
mov ebx, dword [esp + 0xc]
add ebx, dword [esp + 8]
mov edi, dword [esi]
mov ecx, dword [edi + 4]
test ecx, ecx
je 0x55bb63
mov eax, dword [esi + 0xc4]
cmp ecx, ebx
cmovb ebx, ecx
test ebx, ebx
je 0x55b9b2
mov ebp, dword [esi + 0x88]
add ebp, dword [esi + 0xbc]
add ebp, eax
sub ecx, ebx
mov dword [edi + 4], ecx
mov eax, dword [edi + 0x1c]
cmp dword [eax + 0x18], 2
jne 0x55b980
push ebx
push ebp
push edi
call fcn.004cf0d0
add esp, 0xc
jmp 0x55b9a5
push ebx
push dword [edi]
push ebp
call sub.api_ms_win_crt_private_l1_1_0.dll_memcpy
add esp, 0xc
mov eax, dword [edi + 0x1c]
cmp dword [eax + 0x18], 1
jne 0x55b9a5
push ebx
push ebp
push dword [edi + 0x30]
call fcn.0053d0f0
add esp, 0xc
mov dword [edi + 0x30], eax
add dword [edi], ebx
add dword [edi + 8], ebx
mov eax, dword [esi + 0xc4]
xor ebp, ebp
add eax, ebx
mov dword [esi + 0xc4], eax
mov edi, dword [esi + 0x1704]
lea ecx, [edi + eax]
cmp dword [esi + 0x1714], 0
je 0x55ba80
cmp ecx, 4
jb 0x55bb50
test edi, edi
je 0x55bb50
mov edx, dword [esi + 0xbc]
sub edx, edi
nop dword [eax]
mov edi, dword [esi + 0x98]
movzx ecx, byte [esi + 0xa8]
shl edi, cl
movzx eax, dx
mov ecx, dword [esi + 0x88]
movzx ecx, byte [eax + ecx + 2]
xor ecx, edi
and ecx, dword [esi + 0xa4]
mov edi, dword [esi + 0x90]
mov dword [esi + 0x98], ecx
mov ebx, dword [esi + 0x94]
movzx ecx, word [ebx + ecx*2]
mov ebx, dword [esi + 0x84]
and ebx, eax
mov word [edi + ebx*2], cx
mov ecx, dword [esi + 0x94]
mov edi, dword [esi + 0x98]
mov word [ecx + edi*2], ax
mov edi, dword [esi + 0x1704]
lea ecx, [edi - 1]
mov dword [esi + 0x1704], ecx
mov eax, dword [esi + 0xc4]
add edi, eax
dec edi
cmp edi, 4
jb 0x55bb50
inc edx
test ecx, ecx
jne 0x55b9f0
jmp 0x55bb50
cmp ecx, 3
jb 0x55bb50
mov edx, dword [esi + 0xbc]
sub edx, edi
mov ebx, dword [esi + 0x88]
movzx ebp, byte [ebx + edx]
mov dword [esi + 0x98], ebp
movzx ecx, byte [esi + 0xa8]
shl ebp, cl
movzx ecx, byte [ebx + edx + 1]
xor ecx, ebp
xor ebp, ebp
and ecx, dword [esi + 0xa4]
mov dword [esi + 0x98], ecx
test edi, edi
je 0x55bb50
nop word [eax + eax]
mov eax, dword [esi + 0x98]
movzx ecx, byte [esi + 0xa8]
shl eax, cl
mov ecx, dword [esi + 0x88]
movzx ecx, byte [ecx + edx + 2]
xor ecx, eax
and ecx, dword [esi + 0xa4]
mov eax, dword [esi + 0x90]
mov dword [esi + 0x98], ecx
mov edi, dword [esi + 0x94]
movzx ecx, word [edi + ecx*2]
mov edi, dword [esi + 0x84]
and edi, edx
mov word [eax + edi*2], cx
mov eax, dword [esi + 0x94]
mov ecx, dword [esi + 0x98]
mov word [eax + ecx*2], dx
mov edi, dword [esi + 0x1704]
lea ecx, [edi - 1]
mov dword [esi + 0x1704], ecx
mov eax, dword [esi + 0xc4]
add edi, eax
dec edi
cmp edi, 3
jb 0x55bb50
inc edx
test ecx, ecx
jne 0x55bad0
nop word cs:[eax + eax]
cmp eax, 0x105
ja 0x55bb63
mov ecx, dword [esi]
cmp dword [ecx + 4], 0
jne 0x55b710
mov eax, dword [esi + 0x1710]
mov ecx, dword [esi + 0x8c]
mov edi, ecx
sub edi, eax
jbe 0x55bbda
mov ebx, dword [esi + 0xc4]
add ebx, dword [esi + 0xbc]
cmp eax, ebx
jae 0x55bbad
sub ecx, ebx
cmp ecx, 0x102
mov edi, 0x102
cmovb edi, ecx
mov eax, dword [esi + 0x88]
add eax, ebx
push edi
push 0
push eax
call sub.api_ms_win_crt_string_l1_1_0.dll_memset
add esp, 0xc
add edi, ebx
jmp 0x55bbd4
add ebx, 0x102
sub ebx, eax
jbe 0x55bbda
cmp ebx, edi
cmovb edi, ebx
add eax, dword [esi + 0x88]
push edi
push 0
push eax
call sub.api_ms_win_crt_string_l1_1_0.dll_memset
add esp, 0xc
add edi, dword [esi + 0x1710]
mov dword [esi + 0x1710], edi
add esp, 0x24
pop esi
pop edi
pop ebx
pop ebp
ret