Function at 0x1017e380
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x30
mov eax, dword [0x10205ac8]
xor eax, esp
mov dword [esp + 0x2c], eax
push ebx
mov ebx, dword [esp + 0x38]
push ebp
push esi
mov esi, dword [esp + 0x44]
mov edx, dword [ebx]
mov dword [esp + 0x1c], esi
mov dword [esp + 0x18], edx
push edi
mov edi, dword [esp + 0x4c]
mov dword [esp + 0x18], edi
cmp edx, 0x60
ja case.0x1017e3bc.1
movzx eax, byte [edx + 0x1017e7e8]
jmp dword [eax*4 + 0x1017e7d4]
push dword [esp + 0x50]
push edi
push esi
push ebx
call fcn.1017e320
add esp, 0x10
jmp case.0x1017e3bc.1
mov al, byte [ebx + 0x14]
mov ecx, dword [esp + 0x50]
mov ebp, dword [ebx + 0x10]
mov byte [esp + 0x13], al
mov dword [esp + 0x14], ecx
test al, al
je 0x1017e430
cmp ecx, 8
jb 0x1017e6d3
test esi, esi
je 0x1017e430
cmp esi, edi
jne 0x1017e430
cmp edx, 0x20
je 0x1017e41d
cmp edx, 0x30
jne case.0x1017e3bc.1
push ecx
push esi
lea eax, [ebx + 0x20]
push eax
push ebp
call fcn.1017f380
jmp case.0x1017e3bc.1
push ecx
push esi
lea eax, [ebx + 0x20]
push eax
push ebp
call fcn.1017f2a0
jmp case.0x1017e3bc.1
cmp ecx, 0x10
jae 0x1017e446
cmp ecx, 8
jb 0x1017e4d8
test al, al
jne 0x1017e4e4
mov eax, dword [edi]
mov ecx, dword [edi + 4]
add edi, 8
mov dword [esp + 0x2c], eax
mov dword [esp + 0x30], ecx
mov dword [esp + 0x18], edi
cmp edx, 0x20
je 0x1017e487
cmp edx, 0x30
jne 0x1017e4ac
cmp byte [esp + 0x13], 0
lea eax, [esp + 0x2c]
je 0x1017e47e
push 8
push eax
lea eax, [ebx + 0x20]
push eax
push ebp
call fcn.1017f380
jmp 0x1017e4a8
push eax
push ebp
call fcn.1017f0e0
jmp 0x1017e4a8
cmp byte [esp + 0x13], 0
lea eax, [esp + 0x2c]
je 0x1017e4a1
push 8
push eax
lea eax, [ebx + 0x20]
push eax
push ebp
call fcn.1017f2a0
jmp 0x1017e4a8
push eax
push ebp
call fcn.1017f040
mov edx, dword [esp + 0x1c]
test esi, esi
je 0x1017e4c4
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x30]
mov dword [esi], eax
mov dword [esi + 4], ecx
add esi, 8
mov dword [esp + 0x20], esi
mov ecx, dword [esp + 0x14]
mov al, byte [esp + 0x13]
sub ecx, 8
mov dword [esp + 0x14], ecx
jmp 0x1017e430
test ecx, ecx
je case.0x1017e3bc.1
test al, al
je 0x1017e54b
push ecx
lea eax, [esp + 0x30]
push edi
push eax
call fcn.101b6150
mov eax, dword [esp + 0x28]
add esp, 0xc
mov edi, dword [esp + 0x14]
cmp eax, 0x20
je 0x1017e517
cmp eax, 0x30
jne 0x1017e527
push edi
lea eax, [esp + 0x30]
push eax
lea eax, [ebx + 0x20]
push eax
push ebp
call fcn.1017f380
jmp 0x1017e527
push edi
lea eax, [esp + 0x30]
push eax
lea eax, [ebx + 0x20]
push eax
push ebp
call fcn.1017f2a0
test esi, esi
je case.0x1017e3bc.1
push edi
lea eax, [esp + 0x30]
push eax
push esi
call fcn.101b6150
add esp, 0xc
jmp case.0x1017e3bc.1
mov ecx, dword [esp + 0x50]
mov dword [esp + 0x14], ecx
mov eax, dword [ebx + 0x10]
mov dword [esp + 0x24], eax
test ecx, ecx
je case.0x1017e3bc.1
nop word [eax + eax]
mov edx, dword [ebx + 0xc]
lea eax, [esp + 0x2c]
mov ebp, 8
xorps xmm0, xmm0
cmp ecx, ebp
movlpd qword [esp + 0x2c], xmm0
mov esi, 8
mov edi, eax
cmovb ebp, ecx
mov ecx, dword [ebx + 8]
mov dword [esp + 0x28], ebp
mov ebp, eax
nop word [eax + eax]
mov al, byte [edx + ebx + 0x18]
lea edi, [edi + 1]
mov ah, byte [edi - 1]
dec esi
add byte [ecx + ebx + 0x18], al
xor ah, byte [ecx + ebx + 0x18]
test ebp, ebp
je 0x1017e5ab
mov byte [ebp], ah
inc ebp
test ecx, ecx
je 0x1017e5b2
dec ecx
jmp 0x1017e5b5
mov ecx, dword [ebx + 4]
test edx, edx
je 0x1017e5bc
dec edx
jmp 0x1017e5bf
mov edx, dword [ebx + 4]
test esi, esi
jne 0x1017e590
lea eax, [esp + 0x2c]
mov dword [ebx + 8], ecx
push eax
push dword [esp + 0x28]
mov dword [ebx + 0xc], edx
call fcn.1017f0e0
mov esi, dword [esp + 0x20]
mov edi, dword [esp + 0x18]
mov ebp, dword [esp + 0x28]
test esi, esi
je 0x1017e6a5
xor ecx, ecx
test ebp, ebp
je 0x1017e6ab
cmp ebp, 0x40
jb 0x1017e690
lea eax, [ebp - 1]
lea edx, [ebp - 1]
add eax, edi
add edx, esi
cmp esi, eax
ja 0x1017e614
cmp edx, edi
jae 0x1017e690
lea eax, [esp + ebp + 0x2b]
cmp esi, eax
ja 0x1017e624
lea eax, [esp + 0x2c]
cmp edx, eax
jae 0x1017e690
mov eax, ebp
and eax, 0xffffffc0
nop dword [eax]
movups xmm0, xmmword [edi]
movups xmm1, xmmword [esp + ecx + 0x2c]
pxor xmm1, xmm0
movups xmm0, xmmword [edi + 0x10]
movups xmmword [esi], xmm1
movups xmm1, xmmword [esp + ecx + 0x3c]
pxor xmm1, xmm0
movups xmm0, xmmword [edi + 0x20]
movups xmmword [esi + 0x10], xmm1
movups xmm1, xmmword [esp + ecx + 0x4c]
pxor xmm1, xmm0
movups xmm0, xmmword [edi + 0x30]
add edi, 0x40
movups xmmword [esi + 0x20], xmm1
movups xmm1, xmmword [esp + ecx + 0x5c]
add ecx, 0x40
pxor xmm1, xmm0
movups xmmword [esi + 0x30], xmm1
add esi, 0x40
cmp ecx, eax
jb 0x1017e630
mov dword [esp + 0x18], edi
mov dword [esp + 0x20], esi
cmp ecx, ebp
jae 0x1017e6ab
nop dword [eax + eax]
mov al, byte [esp + ecx + 0x2c]
inc ecx
xor al, byte [edi]
inc edi
mov byte [esi], al
inc esi
cmp ecx, ebp
jb 0x1017e690
mov dword [esp + 0x20], esi
jmp 0x1017e6a7
add edi, ebp
mov dword [esp + 0x18], edi
mov ecx, dword [esp + 0x14]
sub ecx, ebp
mov dword [esp + 0x14], ecx
jne 0x1017e560
jmp case.0x1017e3bc.1
mov eax, dword [ebx + 8]
mov ebp, dword [esp + 0x50]
dec eax
mov ecx, dword [ebx + 4]
mov dword [esp + 0x18], ecx
test ebp, eax
je 0x1017e6ed
pop edi
pop esi
pop ebp
mov eax, 4
pop ebx
mov ecx, dword [esp + 0x2c]
xor ecx, esp
call fcn.101b4a00
add esp, 0x30
ret 0x10
test esi, esi
je 0x1017e708
cmp edi, esi
je 0x1017e708
push ebp
push edi
push esi
call fcn.101b6150
mov edx, dword [esp + 0x28]
add esp, 0xc
mov ecx, dword [esp + 0x18]
shr ebp, cl
cmp ebp, 2
jl case.0x1017e3bc.1
dec ebp
mov eax, 1
cmp edx, 0x40
mov edx, dword [ebx + 0x18]
mov dword [esp + 0x24], edx
mov edx, dword [ebx + 0x1c]
cmove eax, ebp
mov ebx, dword [esp + 0x1c]
mov dword [esp + 0x14], eax
mov dword [esp + 0x28], edx
mov edi, eax
lea edx, [eax + 1]
shl edi, cl
add edi, esi
mov dword [esp + 0x20], edx
test al, 1
mov eax, dword [esp + 0x28]
cmovne eax, dword [esp + 0x24]
xor edx, edx
div dword [esp + 0x20]
shl edx, cl
add edx, esi
test esi, esi
je case.default.0x1017e760
cmp ecx, 3
ja case.default.0x1017e760
jmp dword [ecx*4 + 0x1017e84c]
mov al, byte [edx]
mov cl, byte [edi]
mov byte [edi], al
mov byte [edx], cl
jmp 0x1017e79d
mov ax, word [edx]
movzx ecx, word [edi]
mov word [edi], ax
mov word [edx], cx
jmp 0x1017e79d
mov ecx, dword [edi]
mov eax, dword [edx]
mov dword [edi], eax
mov dword [edx], ecx
jmp 0x1017e79d
mov ecx, dword [edi]
mov eax, dword [edx]
mov dword [edi], eax
mov eax, dword [edx + 4]
mov dword [edx], ecx
mov ecx, dword [edi + 4]
mov dword [edi + 4], eax
mov dword [edx + 4], ecx
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x14]
dec ebp
dec eax
cmp ebx, 0x40
cmovne eax, dword [esp + 0x20]
mov dword [esp + 0x14], eax
test ebp, ebp
jg 0x1017e735
mov ecx, dword [esp + 0x3c]
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.101b4a00
add esp, 0x30
ret 0x10