Function at 0x5d4660
Capabilities:
Encode data using xor

Disassembly:
mov eax, 0x3c
call fcn.004cba10
push ebx
push ebp
push esi
push edi
push dword [esp + 0x50]
mov dword [esp + 0x3c], 0
mov dword [esp + 0x20], 0
call fcn.0056dae0
mov ebp, eax
mov dword [esp + 0x28], 0
push ebp
mov dword [esp + 0x34], 0
xor edi, edi
call fcn.005d4370
push dword [esp + 0x5c]
mov ebx, eax
mov dword [esp + 0x2c], ebx
call fcn.00585420
add esp, 0xc
mov dword [esp + 0x28], eax
xor esi, esi
mov dword [esp + 0x18], edi
test ebx, ebx
je 0x5d4714
test eax, eax
jle 0x5d4714
mov eax, dword [esp + 0x64]
push dword [eax]
push 0xff
push dword [esp + 0x68]
call fcn.004e30c0
push 0x6cbcf0
push dword [esp + 0x6c]
lea eax, [esp + 0x6c]
push eax
push esi
call fcn.00581cf0
add esp, 0x1c
mov dword [esp + 0x2c], eax
test eax, eax
jne 0x5d4792
push 0x11d
push str.crypto_sm2_sm2_crypt.c
push 0x64
push 0x66
push 0x35
call fcn.00575710
add esp, 0x14
xor ebp, ebp
mov eax, dword [esp + 0x64]
push dword [eax]
push 0
push dword [esp + 0x68]
call fcn.004e30c0
add esp, 0xc
push 0x17b
push str.crypto_sm2_sm2_crypt.c
push dword [esp + 0x20]
call fcn.00564b20
push 0x17c
push str.crypto_sm2_sm2_crypt.c
push edi
call fcn.00564b20
push 0x17d
push str.crypto_sm2_sm2_crypt.c
push ebp
call fcn.00564b20
push dword [esp + 0x48]
call fcn.0059cc40
push dword [esp + 0x44]
call fcn.0058a500
push 0x6cbcf0
push dword [esp + 0x5c]
call fcn.00581960
push esi
call fcn.0056c800
mov eax, dword [esp + 0x70]
add esp, 0x38
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x3c
ret
mov ecx, dword [eax + 8]
mov edx, dword [esp + 0x28]
cmp dword [ecx], edx
je 0x5d47ae
push 0x122
push str.crypto_sm2_sm2_crypt.c
push 0x68
jmp 0x5d4708
mov eax, dword [eax + 0xc]
mov ecx, dword [ecx + 8]
mov dword [esp + 0x48], ecx
mov ebx, dword [eax]
mov edi, dword [eax + 8]
mov eax, dword [esp + 0x64]
mov dword [esp + 0x44], ebx
cmp dword [eax], ebx
jae 0x5d47e8
push 0x12a
push str.crypto_sm2_sm2_crypt.c
push 0x6b
push 0x66
push 0x35
call fcn.00575710
add esp, 0x14
xor edi, edi
jmp 0x5d4714
call fcn.0058a6f0
mov dword [esp + 0x1c], eax
test eax, eax
jne 0x5d4814
push pe_nt_image_headers32
push str.crypto_sm2_sm2_crypt.c
push 0x41
push 0x66
push 0x35
call fcn.00575710
add esp, 0x14
xor edi, edi
jmp 0x5d4714
push eax
call fcn.0058a7e0
push dword [esp + 0x20]
call fcn.0058a590
push dword [esp + 0x24]
mov dword [esp + 0x3c], eax
call fcn.0058a590
add esp, 0xc
mov dword [esp + 0x34], eax
test eax, eax
jne 0x5d485a
push 0x139
push str.crypto_sm2_sm2_crypt.c
push 3
push 0x66
push 0x35
call fcn.00575710
add esp, 0x14
xor edi, edi
jmp 0x5d4714
push 0x13d
push str.crypto_sm2_sm2_crypt.c
push ebx
call fcn.00564d80
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x2c]
push 0x13e
add eax, eax
push str.crypto_sm2_sm2_crypt.c
push eax
call fcn.00564d80
push 0x13f
push str.crypto_sm2_sm2_crypt.c
push dword [esp + 0x48]
mov dword [esp + 0x34], eax
call fcn.00564d80
add esp, 0x24
mov dword [esp + 0x14], eax
cmp dword [esp + 0x18], esi
je 0x5d4bc5
cmp dword [esp + 0x10], esi
je 0x5d4bc5
test eax, eax
je 0x5d4bc5
push ebp
call fcn.0059cfa0
mov ecx, eax
add esp, 4
mov dword [esp + 0x24], ecx
test ecx, ecx
jne 0x5d48f6
push 0x148
push str.crypto_sm2_sm2_crypt.c
push 0x41
push 0x66
push 0x35
call fcn.00575710
mov edi, dword [esp + 0x24]
add esp, 0x14
mov ebp, dword [esp + 0x14]
jmp 0x5d4716
mov eax, dword [esp + 0x2c]
push dword [esp + 0x1c]
push dword [eax + 4]
push dword [eax]
push ecx
push ebp
call fcn.0059d0e0
add esp, 0x14
test eax, eax
je 0x5d4bb4
push dword [esp + 0x1c]
push dword [esp + 0x54]
call fcn.005651a0
add esp, 4
push eax
mov eax, dword [esp + 0x2c]
push eax
push 0
push eax
push ebp
call fcn.0059cf50
add esp, 0x18
test eax, eax
je 0x5d4bb4
push dword [esp + 0x1c]
push dword [esp + 0x38]
push dword [esp + 0x38]
push dword [esp + 0x30]
push ebp
call fcn.0059cc70
add esp, 0x14
test eax, eax
je 0x5d4bb4
mov ebp, dword [esp + 0x20]
push ebp
push dword [esp + 0x14]
push dword [esp + 0x38]
call fcn.00568470
add esp, 0xc
test eax, eax
js 0x5d4ba3
mov eax, dword [esp + 0x10]
add eax, ebp
push ebp
push eax
push dword [esp + 0x3c]
call fcn.00568470
add esp, 0xc
test eax, eax
js 0x5d4ba3
push dword [esp + 0x54]
lea eax, [ebp*2]
push 0
push 0
push eax
push dword [esp + 0x20]
push ebx
push dword [esp + 0x30]
call fcn.005d3b10
add esp, 0x1c
test eax, eax
je 0x5d4ba3
xor esi, esi
test ebx, ebx
je 0x5d4ac8
mov ebp, dword [esp + 0x60]
mov edx, dword [esp + 0x18]
cmp ebx, 0x40
jb 0x5d4aa3
lea eax, [edx - 1]
lea ecx, [ebp - 1]
add eax, ebx
add ecx, ebx
cmp ebp, eax
ja 0x5d49f3
cmp ecx, edx
jae 0x5d4aa3
lea eax, [edi - 1]
add eax, ebx
cmp ebp, eax
ja 0x5d4a04
cmp ecx, edi
jae 0x5d4aa3
mov eax, ebx
and eax, 0x8000003f
jns 0x5d4a12
dec eax
or eax, 0xffffffc0
inc eax
mov ecx, ebx
mov ebx, dword [esp + 0x60]
sub ecx, eax
sub ebx, edx
mov dword [esp + 0x40], ecx
lea eax, [edx + 0x10]
lea ecx, [ebp + 0x20]
mov ebp, edi
sub ebp, edx
mov edx, edi
sub edx, dword [esp + 0x60]
mov dword [esp + 0x3c], edx
mov edx, ebx
nop word [eax + eax]
movups xmm0, xmmword [eax - 0x10]
mov ebx, dword [esp + 0x3c]
lea eax, [eax + 0x40]
movups xmm1, xmmword [esi + edi]
lea ecx, [ecx + 0x40]
pxor xmm1, xmm0
movups xmm0, xmmword [eax - 0x40]
movups xmmword [ecx - 0x60], xmm1
movups xmm1, xmmword [eax + ebp - 0x40]
pxor xmm1, xmm0
movups xmm0, xmmword [eax - 0x30]
movups xmmword [edx + eax - 0x40], xmm1
movups xmm1, xmmword [ebx + ecx - 0x40]
mov ebx, dword [esp + 0x44]
pxor xmm1, xmm0
movups xmm0, xmmword [eax - 0x20]
movups xmmword [ecx - 0x40], xmm1
movups xmm1, xmmword [esi + edi + 0x30]
add esi, 0x40
pxor xmm1, xmm0
movups xmmword [ecx - 0x30], xmm1
cmp esi, dword [esp + 0x40]
jne 0x5d4a40
mov edx, dword [esp + 0x18]
mov ebp, dword [esp + 0x60]
cmp esi, ebx
je 0x5d4ac4
lea ecx, [esi + edx]
sub edi, edx
sub ebp, edx
mov edx, ebx
sub edx, esi
mov al, byte [edi + ecx]
lea ecx, [ecx + 1]
xor al, byte [ecx - 1]
mov byte [ecx + ebp - 1], al
sub edx, 1
jne 0x5d4ab2
mov ebp, dword [esp + 0x20]
call fcn.0056c820
mov esi, eax
test esi, esi
jne 0x5d4add
push 0x162
jmp 0x5d48d6
push dword [esp + 0x54]
push esi
call fcn.0056c340
mov edi, dword [esp + 0x18]
add esp, 8
test eax, eax
je 0x5d4b82
push ebp
push edi
push esi
call fcn.0056c4e0
add esp, 0xc
test eax, eax
je 0x5d4b82
push ebx
push dword [esp + 0x64]
push esi
call fcn.0056c4e0
add esp, 0xc
test eax, eax
je 0x5d4b82
push ebp
lea eax, [edi + ebp]
push eax
push esi
call fcn.0056c4e0
mov ebp, dword [esp + 0x20]
add esp, 0xc
test eax, eax
je 0x5d4b86
push 0
push ebp
push esi
call fcn.0056c1b0
add esp, 0xc
test eax, eax
je 0x5d4b86
push dword [esp + 0x28]
push dword [esp + 0x4c]
push ebp
call fcn.00401390
add esp, 0xc
test eax, eax
je 0x5d4b6f
push 0x170
push str.crypto_sm2_sm2_crypt.c
push 0x66
push 0x66
push 0x35
call fcn.00575710
add esp, 0x14
jmp 0x5d4716
mov eax, dword [esp + 0x64]
mov dword [esp + 0x38], 1
mov dword [eax], ebx
jmp 0x5d472a
mov ebp, dword [esp + 0x14]
push 0x16b
push str.crypto_sm2_sm2_crypt.c
push 6
push 0x66
push 0x35
call fcn.00575710
add esp, 0x14
jmp 0x5d4716
push 0x159
push str.crypto_sm2_sm2_crypt.c
push 0x44
jmp 0x5d48dd
push 0x151
push str.crypto_sm2_sm2_crypt.c
push 0x10
jmp 0x5d48dd
push 0x142
jmp 0x5d48d6