Function at 0x101a10b0
Capabilities:
Encode data using xor

Disassembly:
mov eax, 0x3c
call fcn.10107170
push ebx
push ebp
push esi
push edi
push dword [esp + 0x50]
mov dword [esp + 0x40], 0
mov dword [esp + 0x28], 0
call fcn.1015dab0
push eax
mov dword [esp + 0x30], eax
xor edi, edi
mov dword [esp + 0x34], 0
xor ebp, ebp
call fcn.101a0fc0
push dword [esp + 0x5c]
mov ebx, eax
mov dword [esp + 0x2c], ebx
call fcn.1015e000
add esp, 0xc
mov dword [esp + 0x30], eax
xor esi, esi
mov dword [esp + 0x1c], edi
test ebx, ebx
je 0x101a1162
test eax, eax
jle 0x101a1162
mov eax, dword [esp + 0x64]
push dword [eax]
push 0xff
push dword [esp + 0x68]
call fcn.1012de20
push 0x1027e0b0
push dword [esp + 0x6c]
lea eax, [esp + 0x6c]
push eax
push esi
call fcn.1019bfc0
mov edi, eax
add esp, 0x1c
mov dword [esp + 0x10], edi
test edi, edi
jne 0x101a11dd
push 0x126
push str.crypto_sm2_sm2_crypt.c
push 0x64
push 0x66
push 0x35
call fcn.1015d200
add esp, 0x14
xor ebx, ebx
mov eax, dword [esp + 0x64]
push dword [eax]
push 0
push dword [esp + 0x68]
call fcn.1012de20
add esp, 0xc
push 0x180
push str.crypto_sm2_sm2_crypt.c
push dword [esp + 0x24]
call fcn.10167d80
push 0x181
push str.crypto_sm2_sm2_crypt.c
push ebp
call fcn.10167d80
push 0x182
push str.crypto_sm2_sm2_crypt.c
push ebx
call fcn.10167d80
push dword [esp + 0x50]
call fcn.1017be30
push dword [esp + 0x4c]
call fcn.1016c4d0
push 0x1027e0b0
push edi
call fcn.10191d20
push esi
call fcn.10177a80
mov eax, dword [esp + 0x74]
add esp, 0x38
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x3c
ret
mov ecx, dword [edi + 8]
mov eax, dword [esp + 0x30]
cmp dword [ecx], eax
je 0x101a11f9
push 0x12b
push str.crypto_sm2_sm2_crypt.c
push 0x68
jmp 0x101a1156
mov eax, dword [edi + 0xc]
mov ecx, dword [ecx + 8]
mov dword [esp + 0x48], ecx
mov edi, dword [eax]
mov ebx, dword [eax + 8]
mov dword [esp + 0x44], edi
call fcn.1016c6b0
mov ebp, eax
mov dword [esp + 0x24], ebp
test ebp, ebp
jne 0x101a123e
push 0x135
push str.crypto_sm2_sm2_crypt.c
push 0x41
push 0x66
push 0x35
call fcn.1015d200
mov edi, dword [esp + 0x24]
add esp, 0x14
xor ebp, ebp
jmp 0x101a1162
push ebp
call fcn.1016c7a0
push ebp
call fcn.1016c560
push ebp
mov dword [esp + 0x40], eax
call fcn.1016c560
add esp, 0xc
mov dword [esp + 0x38], eax
test eax, eax
jne 0x101a126d
push 0x13e
push str.crypto_sm2_sm2_crypt.c
push 3
jmp 0x101a1227
push 0x142
push str.crypto_sm2_sm2_crypt.c
push edi
call fcn.10167ff0
mov ecx, dword [esp + 0x2c]
mov ebp, eax
push 0x143
push str.crypto_sm2_sm2_crypt.c
mov dword [esp + 0x30], ebp
lea eax, [ecx + ecx]
push eax
call fcn.10167ff0
push 0x144
push str.crypto_sm2_sm2_crypt.c
push dword [esp + 0x50]
mov dword [esp + 0x38], eax
call fcn.10167ff0
add esp, 0x24
mov dword [esp + 0x18], eax
test ebp, ebp
je 0x101a1659
cmp dword [esp + 0x14], esi
je 0x101a1659
test eax, eax
je 0x101a1659
push dword [esp + 0x28]
call fcn.1017c180
mov ecx, eax
add esp, 4
mov dword [esp + 0x2c], ecx
test ecx, ecx
jne 0x101a1311
push 0x14d
push str.crypto_sm2_sm2_crypt.c
push 0x41
push 0x66
push 0x35
call fcn.1015d200
mov ebp, dword [esp + 0x28]
add esp, 0x14
mov edi, dword [esp + 0x10]
mov ebx, dword [esp + 0x18]
jmp 0x101a1164
mov eax, dword [esp + 0x10]
push dword [esp + 0x24]
push dword [eax + 4]
push dword [eax]
push ecx
push dword [esp + 0x38]
call fcn.1017c2c0
add esp, 0x14
test eax, eax
je 0x101a1648
push dword [esp + 0x24]
push dword [esp + 0x54]
call fcn.1015fce0
add esp, 4
push eax
mov eax, dword [esp + 0x34]
push eax
push 0
push eax
push dword [esp + 0x3c]
call fcn.1017c130
add esp, 0x18
test eax, eax
je 0x101a1648
push dword [esp + 0x24]
push dword [esp + 0x3c]
push dword [esp + 0x3c]
push dword [esp + 0x38]
push dword [esp + 0x38]
call fcn.1017be60
add esp, 0x14
test eax, eax
je 0x101a1648
push dword [esp + 0x20]
push dword [esp + 0x18]
push dword [esp + 0x3c]
call fcn.10166180
add esp, 0xc
test eax, eax
js 0x101a1637
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x14]
push eax
add ecx, eax
push ecx
push dword [esp + 0x40]
call fcn.10166180
add esp, 0xc
test eax, eax
js 0x101a1637
push dword [esp + 0x54]
mov ecx, dword [esp + 0x24]
push 0
push 0
lea eax, [ecx + ecx]
push eax
push dword [esp + 0x24]
push edi
push ebp
call fcn.101a03a0
add esp, 0x1c
test eax, eax
je 0x101a1637
xor edx, edx
test edi, edi
je 0x101a1548
cmp edi, 8
jb 0x101a1525
mov esi, dword [esp + 0x60]
lea eax, [ebp - 1]
add eax, edi
lea ecx, [esi - 1]
add ecx, edi
cmp esi, eax
ja 0x101a1413
cmp ecx, ebp
jae 0x101a1525
lea eax, [ebx - 1]
add eax, edi
cmp esi, eax
ja 0x101a1424
cmp ecx, ebx
jae 0x101a1525
cmp edi, 0x40
jb 0x101a14d5
mov eax, edi
and eax, 0x8000003f
jns 0x101a143b
dec eax
or eax, 0xffffffc0
inc eax
mov ecx, edi
mov edi, dword [esp + 0x60]
sub ecx, eax
sub edi, ebp
mov dword [esp + 0x38], ecx
lea eax, [ebp + 0x10]
lea ecx, [esi + 0x20]
mov dword [esp + 0x28], edi
mov esi, ebx
sub esi, ebp
mov ebp, ebx
sub ebp, dword [esp + 0x60]
mov dword [esp + 0x34], esi
mov esi, dword [esp + 0x38]
mov dword [esp + 0x40], ebp
mov ebp, dword [esp + 0x34]
nop dword [eax]
movups xmm0, xmmword [eax - 0x10]
mov edi, dword [esp + 0x28]
lea eax, [eax + 0x40]
movups xmm1, xmmword [edx + ebx]
lea ecx, [ecx + 0x40]
xorps xmm1, xmm0
movups xmmword [ecx - 0x60], xmm1
movups xmm0, xmmword [eax - 0x40]
movups xmm1, xmmword [eax + ebp - 0x40]
xorps xmm1, xmm0
movups xmmword [edi + eax - 0x40], xmm1
mov edi, dword [esp + 0x40]
movups xmm0, xmmword [eax - 0x30]
movups xmm1, xmmword [edi + ecx - 0x40]
mov edi, dword [esp + 0x44]
xorps xmm1, xmm0
movups xmmword [ecx - 0x40], xmm1
movups xmm1, xmmword [ebx + edx + 0x30]
add edx, 0x40
movups xmm0, xmmword [eax - 0x20]
xorps xmm1, xmm0
movups xmmword [ecx - 0x30], xmm1
cmp edx, esi
jne 0x101a1470
mov ebp, dword [esp + 0x1c]
mov eax, edi
and al, 0x3f
cmp al, 8
jb 0x101a1521
mov eax, edi
and eax, 0x80000007
jns 0x101a14e3
dec eax
or eax, 0xfffffff8
inc eax
mov ecx, edi
mov esi, ebx
sub ecx, eax
sub esi, ebp
lea eax, [edx + ebp]
mov ebp, dword [esp + 0x60]
sub ebp, dword [esp + 0x1c]
nop word [eax + eax]
movq xmm1, qword [esi + eax]
lea eax, [eax + 8]
movq xmm0, qword [eax - 8]
add edx, 8
xorps xmm1, xmm0
movq qword [eax + ebp - 8], xmm1
cmp edx, ecx
jne 0x101a1500
mov ebp, dword [esp + 0x1c]
cmp edx, edi
je 0x101a1548
sub ebx, ebp
lea ecx, [edx + ebp]
mov ebp, dword [esp + 0x60]
mov esi, edi
sub ebp, dword [esp + 0x1c]
sub esi, edx
mov al, byte [ebx + ecx]
lea ecx, [ecx + 1]
xor al, byte [ecx - 1]
mov byte [ecx + ebp - 1], al
sub esi, 1
jne 0x101a1536
call fcn.10177aa0
mov esi, eax
test esi, esi
jne 0x101a155d
push 0x167
jmp 0x101a12ed
push dword [esp + 0x54]
push esi
call fcn.10177720
mov ebp, dword [esp + 0x1c]
add esp, 8
test eax, eax
je 0x101a1612
mov ebx, dword [esp + 0x20]
push ebx
push ebp
push esi
call fcn.101778f0
add esp, 0xc
test eax, eax
je 0x101a1612
push edi
push dword [esp + 0x64]
push esi
call fcn.101778f0
add esp, 0xc
test eax, eax
je 0x101a1612
push ebx
lea eax, [ebx + ebp]
push eax
push esi
call fcn.101778f0
mov ebx, dword [esp + 0x24]
add esp, 0xc
test eax, eax
je 0x101a1616
push 0
push ebx
push esi
call fcn.10177590
add esp, 0xc
test eax, eax
je 0x101a1616
push dword [esp + 0x30]
push dword [esp + 0x4c]
push ebx
call fcn.10001390
add esp, 0xc
test eax, eax
je 0x101a15fb
push 0x175
push str.crypto_sm2_sm2_crypt.c
push 0x66
push 0x66
push 0x35
call fcn.1015d200
mov edi, dword [esp + 0x24]
add esp, 0x14
jmp 0x101a1164
mov eax, dword [esp + 0x64]
mov dword [esp + 0x3c], 1
mov dword [eax], edi
mov edi, dword [esp + 0x10]
jmp 0x101a1178
mov ebx, dword [esp + 0x18]
push 0x170
push str.crypto_sm2_sm2_crypt.c
push 6
push 0x66
push 0x35
call fcn.1015d200
mov edi, dword [esp + 0x24]
add esp, 0x14
jmp 0x101a1164
push 0x15e
push str.crypto_sm2_sm2_crypt.c
push 0x44
jmp 0x101a12f4
push 0x156
push str.crypto_sm2_sm2_crypt.c
push 0x10
jmp 0x101a12f4
push 0x147
jmp 0x101a12ed