Function at 0x45e130
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 0x45e38c
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 0x45e1dd
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 [0x4a6f70]
movdqa xmm6, xmmword [0x4a6f80]
pcmpeqd xmm7, xmm7
jb 0x45e29d
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 0x45e240
mov edi, dword [esp]
cmp dword [esp + 4], edi
mov ebp, 0
je 0x45e2c4
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 0x45e2b0
mov edx, dword [esi + 0x90]
lea ecx, [edx + eax*2]
cmp eax, 8
jae 0x45e2e0
mov edx, eax
jmp 0x45e36a
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 0x45e310
cmp eax, dword [esp + 4]
mov ebp, 0
je 0x45e384
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 0x45e370
mov ebx, dword [esp + 0xc]
add ebx, dword [esp + 8]
mov edi, dword [esi]
mov ecx, dword [edi + 4]
test ecx, ecx
je 0x45e5c3
mov eax, dword [esi + 0xc4]
cmp ecx, ebx
cmovb ebx, ecx
test ebx, ebx
je 0x45e412
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 0x45e3e0
push ebx
push ebp
push edi
call fcn.00469f70
add esp, 0xc
jmp 0x45e405
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 0x45e405
push ebx
push ebp
push dword [edi + 0x30]
call fcn.004695a0
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 0x45e4e0
cmp ecx, 4
jb 0x45e5b0
test edi, edi
je 0x45e5b0
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 0x45e5b0
inc edx
test ecx, ecx
jne 0x45e450
jmp 0x45e5b0
cmp ecx, 3
jb 0x45e5b0
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 0x45e5b0
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 0x45e5b0
inc edx
test ecx, ecx
jne 0x45e530
nop word cs:[eax + eax]
cmp eax, 0x105
ja 0x45e5c3
mov ecx, dword [esi]
cmp dword [ecx + 4], 0
jne 0x45e170
mov eax, dword [esi + 0x1710]
mov ecx, dword [esi + 0x8c]
mov edi, ecx
sub edi, eax
jbe 0x45e63a
mov ebx, dword [esi + 0xc4]
add ebx, dword [esi + 0xbc]
cmp eax, ebx
jae 0x45e60d
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 0x45e634
add ebx, 0x102
sub ebx, eax
jbe 0x45e63a
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