Function at 0x101713f0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
mov eax, 0x4002c
call fcn.10187310
mov eax, dword [0x1022c068]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
mov ebx, ecx
mov dword [ebp - 0x40028], ebx
mov eax, ebx
mov dword [ebp - 0x40018], eax
push esi
mov esi, dword [ebp + 0xc]
lea ecx, [ebx + edx]
mov dword [ebp - 0x4000c], ecx
push edi
mov edi, dword [ebp + 8]
mov dword [ebp - 0x4002c], edi
lea ecx, [edi + esi]
mov dword [ebp - 0x40010], ecx
test edx, edx
je 0x101717e2
test esi, esi
je 0x101717e2
movzx esi, byte [ebx]
xor edx, edx
movzx ecx, byte [ebx + 1]
inc edi
shl esi, 8
or esi, ecx
mov dword [ebp - 0x40008], edx
mov ecx, dword [ebp - 0x4000c]
add ecx, 0xfffffffe
cmp ebx, ecx
jae 0x10171778
nop
mov bl, byte [eax + 2]
shl esi, 8
movzx ecx, bl
or esi, ecx
mov edx, esi
mov dword [ebp - 0x40024], esi
shr edx, 5
xor edx, esi
shr edx, 3
lea ecx, [esi + esi*4]
sub edx, ecx
movzx ecx, dx
mov edx, dword [ebp + ecx*4 - 0x40004]
mov dword [ebp + ecx*4 - 0x40004], eax
mov ecx, eax
sub ecx, edx
mov dword [ebp - 0x4001c], edx
dec ecx
mov dword [ebp - 0x40020], ecx
cmp ecx, 0x2000
jae 0x1017172e
cmp edx, dword [ebp - 0x40028]
jbe 0x1017172e
cmp byte [edx + 2], bl
jne 0x1017172e
movzx esi, byte [edx + 1]
movzx ecx, byte [edx]
movzx edx, byte [eax + 1]
shl esi, 8
or esi, ecx
shl edx, 8
movzx ecx, byte [eax]
or edx, ecx
cmp esi, edx
jne 0x10171728
mov ecx, dword [ebp - 0x4000c]
mov edx, 0x108
add ecx, 0xfffffffe
mov ebx, 2
sub ecx, eax
cmp ecx, 0x108
cmova ecx, edx
mov dword [ebp - 0x40014], ecx
lea ecx, [edi + 4]
cmp ecx, dword [ebp - 0x40010]
jb 0x10171540
xor edx, edx
mov ecx, edi
cmp dword [ebp - 0x40008], edx
sete dl
sub ecx, edx
add ecx, 4
cmp ecx, dword [ebp - 0x40010]
jae 0x101717e2
mov esi, dword [ebp - 0x40008]
mov ecx, edi
mov dl, byte [ebp - 0x40008]
sub ecx, esi
dec dl
mov byte [ecx - 1], dl
xor ecx, ecx
mov edx, dword [ebp - 0x4001c]
test esi, esi
sete cl
sub edi, ecx
cmp dword [ebp - 0x40014], 0x10
jbe 0x10171661
mov cl, byte [edx + 3]
mov ebx, 3
cmp cl, byte [eax + 3]
jne 0x10171685
mov cl, byte [edx + 4]
mov ebx, 4
cmp cl, byte [eax + 4]
jne 0x10171685
mov cl, byte [edx + 5]
mov ebx, 5
cmp cl, byte [eax + 5]
jne 0x10171685
mov cl, byte [edx + 6]
mov ebx, 6
cmp cl, byte [eax + 6]
jne 0x10171685
mov cl, byte [edx + 7]
mov ebx, 7
cmp cl, byte [eax + 7]
jne 0x10171685
mov cl, byte [edx + 8]
mov ebx, 8
cmp cl, byte [eax + 8]
jne 0x10171685
mov cl, byte [edx + 9]
mov ebx, 9
cmp cl, byte [eax + 9]
jne 0x10171685
mov cl, byte [edx + 0xa]
mov ebx, 0xa
cmp cl, byte [eax + 0xa]
jne 0x10171685
mov cl, byte [edx + 0xb]
mov ebx, 0xb
cmp cl, byte [eax + 0xb]
jne 0x10171685
mov cl, byte [edx + 0xc]
mov ebx, 0xc
cmp cl, byte [eax + 0xc]
jne 0x10171685
mov cl, byte [edx + 0xd]
mov ebx, 0xd
cmp cl, byte [eax + 0xd]
jne 0x10171685
mov cl, byte [edx + 0xe]
mov ebx, 0xe
cmp cl, byte [eax + 0xe]
jne 0x10171685
mov cl, byte [edx + 0xf]
mov ebx, 0xf
cmp cl, byte [eax + 0xf]
jne 0x10171685
mov cl, byte [edx + 0x10]
mov ebx, 0x10
cmp cl, byte [eax + 0x10]
jne 0x10171685
mov cl, byte [edx + 0x11]
mov ebx, 0x11
cmp cl, byte [eax + 0x11]
jne 0x10171685
mov cl, byte [edx + 0x12]
mov ebx, 0x12
cmp cl, byte [eax + 0x12]
jne 0x10171685
lea esi, [ebx + eax]
sub edx, eax
mov eax, dword [ebp - 0x40014]
nop dword [eax]
inc ebx
lea esi, [esi + 1]
cmp ebx, eax
jae 0x1017167f
mov cl, byte [edx + esi]
cmp cl, byte [esi]
je 0x10171670
mov eax, dword [ebp - 0x40018]
mov edx, dword [ebp - 0x40020]
mov dword [ebp - 0x40014], ebx
sub ebx, 2
shr edx, 8
cmp ebx, 7
jae 0x101716a8
mov cl, bl
shl cl, 5
add cl, dl
mov byte [edi], cl
inc edi
jmp 0x101716b6
sub dl, 0x20
lea ecx, [ebx - 7]
mov byte [edi], dl
mov byte [edi + 1], cl
add edi, 2
mov ecx, dword [ebp - 0x40020]
xor edx, edx
add eax, dword [ebp - 0x40014]
mov byte [edi], cl
add edi, 2
mov ecx, dword [ebp - 0x4000c]
add ecx, 0xfffffffe
mov dword [ebp - 0x40008], edx
cmp eax, ecx
jae 0x10171778
mov esi, dword [ebp - 0x40024]
or ecx, 0xffffffff
sub ecx, ebx
add eax, ecx
nop dword [eax]
movzx ecx, byte [eax + 2]
shl esi, 8
or esi, ecx
mov edx, esi
shr edx, 5
xor edx, esi
shr edx, 3
lea ecx, [esi + esi*4]
sub edx, ecx
movzx ecx, dx
mov dword [ebp + ecx*4 - 0x40004], eax
mov ecx, ebx
inc eax
dec ebx
test ecx, ecx
jne 0x101716f0
mov edx, dword [ebp - 0x40008]
mov dword [ebp - 0x40018], eax
jmp 0x10171765
mov esi, dword [ebp - 0x40024]
cmp edi, dword [ebp - 0x40010]
jae 0x101717e2
mov edx, dword [ebp - 0x40008]
mov cl, byte [eax]
inc edx
mov byte [edi], cl
inc eax
inc edi
mov dword [ebp - 0x40008], edx
mov dword [ebp - 0x40018], eax
cmp edx, 0x20
jne 0x10171765
xor edx, edx
mov byte [edi - 0x21], 0x1f
mov dword [ebp - 0x40008], edx
inc edi
mov ebx, dword [ebp - 0x4000c]
lea ecx, [ebx - 2]
cmp eax, ecx
jb 0x10171470
jmp 0x1017177e
mov ebx, dword [ebp - 0x4000c]
lea ecx, [edi + 3]
cmp ecx, dword [ebp - 0x40010]
ja 0x101717e2
lfence
cmp eax, ebx
jae 0x101717b1
lea esi, [edi - 0x21]
mov cl, byte [eax]
inc edx
mov byte [edi], cl
inc esi
inc edi
inc eax
cmp edx, 0x20
jne 0x101717a7
mov byte [esi], 0x1f
xor edx, edx
inc edi
inc esi
cmp eax, ebx
jb 0x10171793
mov dword [ebp - 0x40008], edx
mov eax, dword [ebp - 0x40008]
mov ecx, edi
sub ecx, eax
dec dl
mov byte [ecx - 1], dl
xor ecx, ecx
test eax, eax
sete cl
sub edi, ecx
sub edi, dword [ebp - 0x4002c]
mov eax, edi
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.10186332
mov esp, ebp
pop ebp
ret
mov ecx, dword [ebp - 4]
xor eax, eax
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.10186332
mov esp, ebp
pop ebp
ret