Function at 0x58cfd0
Capabilities:
Encode data using xor

Disassembly:
mov eax, 0x60
call fcn.0059eec0
push ebx
push ebp
push esi
push edi
mov dword [esp + 0x54], 0
xor edi, edi
call fcn.00492600
mov esi, dword [esp + 0x74]
push esi
mov dword [esp + 0x1c], eax
call fcn.0045ff70
mov ebx, eax
push ebx
call fcn.00472040
push esi
mov dword [esp + 0x48], eax
call fcn.00475480
push dword [esp + 0x84]
mov dword [esp + 0x68], eax
mov dword [esp + 0x2c], edi
mov dword [esp + 0x34], edi
mov dword [esp + 0x20], edi
mov dword [esp + 0x24], edi
mov dword [esp + 0x30], edi
call fcn.00480a60
mov ebp, eax
mov dword [esp + 0x60], edi
push esi
mov dword [esp + 0x60], ebp
call fcn.0045fdf0
push esi
mov dword [esp + 0x40], eax
call fcn.00475da0
add esp, 0x18
mov dword [esp + 0x40], eax
mov dword [esp + 0x6c], edi
mov dword [esp + 0x68], edi
cmp dword [esp + 0x18], edi
je 0x58d62f
test ebp, ebp
jle 0x58d62f
push ebx
call fcn.0058c770
mov ebp, eax
add esp, 4
mov dword [esp + 0x2c], ebp
test ebp, ebp
jne 0x58d093
call fcn.00471c50
push str.ossl_sm2_encrypt
push 0xa0
jmp 0x58d63e
push ebx
call fcn.00497f70
push ebx
mov dword [esp + 0x24], eax
call fcn.00497f70
add esp, 8
mov dword [esp + 0x24], eax
cmp dword [esp + 0x1c], edi
je 0x58d61e
test eax, eax
je 0x58d61e
push dword [esp + 0x28]
call fcn.00486e10
mov edi, eax
add esp, 4
test edi, edi
jne 0x58d0f3
call fcn.00471c50
push str.ossl_sm2_encrypt
push 0xac
push str.crypto_sm2_sm2_crypt.c
call fcn.00471d50
push 0
push 0x80003
jmp 0x58d64f
push edi
call fcn.00486eb0
push edi
call fcn.00486cc0
push edi
mov esi, eax
call fcn.00486cc0
push edi
mov dword [esp + 0x54], eax
call fcn.00486cc0
push edi
mov dword [esp + 0x44], eax
call fcn.00486cc0
push edi
mov dword [esp + 0x60], eax
call fcn.00486cc0
add esp, 0x18
mov dword [esp + 0x34], eax
test eax, eax
jne 0x58d141
call fcn.00471c50
push str.ossl_sm2_encrypt
push 0xb8
jmp 0x58d0dd
push 0xbc
lea eax, [ebp*2]
push str.crypto_sm2_sm2_crypt.c
push eax
mov dword [esp + 0x44], eax
call fcn.0046d800
push 0xbd
push str.crypto_sm2_sm2_crypt.c
push dword [esp + 0x60]
mov dword [esp + 0x2c], eax
call fcn.0046d800
add esp, 0x18
mov dword [esp + 0x20], eax
cmp dword [esp + 0x14], 0
je 0x58d659
test eax, eax
je 0x58d659
mov eax, dword [esp + 0x88]
push dword [eax]
push 0
push dword [esp + 0x8c]
call fcn.005b6630
mov ebp, dword [esp + 0x8c]
push 0xc4
push str.crypto_sm2_sm2_crypt.c
push ebp
call fcn.0046d800
add esp, 0x18
mov dword [esp + 0x10], eax
test eax, eax
je 0x58d659
push edi
push 0
push dword [esp + 0x44]
push esi
call fcn.004aaca0
add esp, 0x10
test eax, eax
je 0x58d2fe
push edi
push 0
push 0
push esi
push dword [esp + 0x2c]
push ebx
call fcn.00497e30
add esp, 0x18
test eax, eax
je 0x58d5fc
push edi
push dword [esp + 0x4c]
push dword [esp + 0x4c]
push dword [esp + 0x28]
push ebx
call fcn.00497b40
add esp, 0x14
test eax, eax
je 0x58d5fc
push edi
push esi
push dword [esp + 0x60]
push 0
push dword [esp + 0x34]
push ebx
call fcn.00497e30
add esp, 0x18
test eax, eax
je 0x58d5fc
push edi
push dword [esp + 0x38]
push dword [esp + 0x38]
push dword [esp + 0x30]
push ebx
call fcn.00497b40
add esp, 0x14
test eax, eax
je 0x58d5fc
push dword [esp + 0x2c]
push dword [esp + 0x18]
push dword [esp + 0x38]
call fcn.00461f10
add esp, 0xc
test eax, eax
js 0x58d5eb
mov ecx, dword [esp + 0x2c]
mov eax, dword [esp + 0x14]
add eax, ecx
push ecx
push eax
push dword [esp + 0x3c]
mov dword [esp + 0x68], eax
call fcn.00461f10
add esp, 0xc
test eax, eax
js 0x58d5eb
push dword [esp + 0x40]
push dword [esp + 0x2c]
push dword [esp + 0x80]
push 0
push 0
push dword [esp + 0x4c]
push dword [esp + 0x2c]
push ebp
push dword [esp + 0x30]
call fcn.004f85f0
add esp, 0x24
test eax, eax
je 0x58d5da
push ebp
push dword [esp + 0x14]
call fcn.0058c7e0
add esp, 8
test eax, eax
je 0x58d312
push dword [esp + 0x38]
push 0
push dword [esp + 0x1c]
call fcn.005b6630
push edi
push 0
push dword [esp + 0x50]
push esi
call fcn.004aaca0
add esp, 0x1c
test eax, eax
jne 0x58d1e2
call fcn.00471c50
push str.ossl_sm2_encrypt
push 0xca
jmp 0x58d63e
xor edx, edx
test ebp, ebp
je 0x58d41e
mov ebx, dword [esp + 0x10]
cmp ebp, 8
jb 0x58d400
mov esi, dword [esp + 0x7c]
lea ecx, [ebx - 1]
add ecx, ebp
lea eax, [esi - 1]
add eax, ebp
cmp ebx, eax
ja 0x58d343
cmp ecx, esi
jae 0x58d400
cmp ebp, 0x40
jb 0x58d3cd
mov ecx, ebp
mov eax, ebp
and ecx, 0x3f
mov ebp, esi
sub eax, ecx
mov dword [esp + 0x3c], ecx
sub ebp, ebx
mov dword [esp + 0x50], eax
mov dword [esp + 0x58], ebp
lea ecx, [esi + 0x30]
mov ebp, dword [esp + 0x80]
lea eax, [ebx + 0x10]
mov esi, dword [esp + 0x58]
movups xmm0, xmmword [eax - 0x10]
add edx, 0x40
lea ecx, [ecx + 0x40]
lea eax, [eax + 0x40]
movups xmm1, xmmword [ecx - 0x70]
xorps xmm1, xmm0
movups xmmword [eax - 0x50], xmm1
movups xmm0, xmmword [eax - 0x40]
movups xmm1, xmmword [esi + eax - 0x40]
xorps xmm1, xmm0
movups xmmword [eax - 0x40], xmm1
movups xmm0, xmmword [eax - 0x30]
movups xmm1, xmmword [ecx - 0x50]
xorps xmm1, xmm0
movups xmmword [eax - 0x30], xmm1
movups xmm1, xmmword [eax - 0x20]
movups xmm0, xmmword [ecx - 0x40]
xorps xmm1, xmm0
movups xmmword [eax - 0x20], xmm1
cmp edx, dword [esp + 0x50]
jne 0x58d376
cmp dword [esp + 0x3c], 8
mov esi, dword [esp + 0x7c]
jb 0x58d3fc
mov ecx, ebp
lea eax, [edx + ebx]
and ecx, 0xfffffff8
sub esi, ebx
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 - 8], xmm1
cmp edx, ecx
jne 0x58d3e0
cmp edx, ebp
je 0x58d422
lea ecx, [edx + ebx]
mov esi, ebp
mov ebx, dword [esp + 0x7c]
sub ebx, dword [esp + 0x10]
sub esi, edx
nop
mov al, byte [ebx + ecx]
lea ecx, [ecx + 1]
xor byte [ecx - 1], al
sub esi, 1
jne 0x58d410
mov ebx, dword [esp + 0x10]
push dword [esp + 0x40]
push dword [esp + 0x7c]
call fcn.00480a00
add esp, 4
push eax
push dword [esp + 0x30]
call fcn.00492690
add esp, 0xc
mov dword [esp + 0x50], eax
test eax, eax
jne 0x58d45b
call fcn.00471c50
push str.ossl_sm2_encrypt
push 0xed
jmp 0x58d63e
push eax
push dword [esp + 0x1c]
call fcn.00491f70
add esp, 8
test eax, eax
je 0x58d5b8
mov esi, dword [esp + 0x2c]
push esi
push dword [esp + 0x18]
push dword [esp + 0x20]
call fcn.00491fd0
add esp, 0xc
test eax, eax
je 0x58d5b8
push ebp
push dword [esp + 0x80]
push dword [esp + 0x20]
call fcn.00491fd0
add esp, 0xc
test eax, eax
je 0x58d5b8
push esi
push dword [esp + 0x60]
mov esi, dword [esp + 0x20]
push esi
call fcn.00491fd0
add esp, 0xc
test eax, eax
je 0x58d5b8
push 0
push dword [esp + 0x24]
push esi
call fcn.00491bb0
add esp, 0xc
test eax, eax
je 0x58d5b8
mov eax, dword [esp + 0x44]
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0x48]
mov dword [esp + 0x64], eax
call fcn.004b0b80
mov dword [esp + 0x68], eax
call fcn.004b0b80
mov ecx, dword [esp + 0x68]
mov dword [esp + 0x6c], eax
test ecx, ecx
je 0x58d593
test eax, eax
je 0x58d593
push dword [esp + 0x4c]
push dword [esp + 0x24]
push ecx
call fcn.004b7b10
add esp, 0xc
test eax, eax
je 0x58d57f
push ebp
push ebx
push dword [esp + 0x74]
call fcn.004b7b10
add esp, 0xc
test eax, eax
je 0x58d57f
push 0x6543c8
lea eax, [esp + 0x88]
push eax
lea eax, [esp + 0x68]
push eax
call fcn.004b4380
add esp, 0xc
test eax, eax
jns 0x58d569
call fcn.00471c50
push str.ossl_sm2_encrypt
push 0x10b
jmp 0x58d63e
mov ecx, dword [esp + 0x88]
mov dword [esp + 0x54], 1
mov dword [ecx], eax
jmp 0x58d659
call fcn.00471c50
push str.ossl_sm2_encrypt
push 0x104
jmp 0x58d63e
call fcn.00471c50
push str.ossl_sm2_encrypt
push 0xff
push str.crypto_sm2_sm2_crypt.c
call fcn.00471d50
push 0
push 0x8000d
jmp 0x58d64f
call fcn.00471c50
push str.ossl_sm2_encrypt
push 0xf5
push str.crypto_sm2_sm2_crypt.c
call fcn.00471d50
push 0
push 0x80006
jmp 0x58d64f
call fcn.00471c50
push str.ossl_sm2_encrypt
push 0xdf
jmp 0x58d5c7
call fcn.00471c50
push str.ossl_sm2_encrypt
push 0xd8
jmp 0x58d63e
call fcn.00471c50
push str.ossl_sm2_encrypt
push 0xd2
push str.crypto_sm2_sm2_crypt.c
call fcn.00471d50
push 0
push 0x80010
jmp 0x58d64f
call fcn.00471c50
push str.ossl_sm2_encrypt
push 0xa7
jmp 0x58d60b
call fcn.00471c50
push str.ossl_sm2_encrypt
push 0x9a
push str.crypto_sm2_sm2_crypt.c
call fcn.00471d50
push 0
push 0xc0103
push 0x35
call fcn.00471e60
add esp, 0x18
push dword [esp + 0x50]
call fcn.004926c0
push dword [esp + 0x70]
call fcn.004b0a70
push dword [esp + 0x70]
call fcn.004b0a70
push 0x116
push str.crypto_sm2_sm2_crypt.c
push dword [esp + 0x24]
call fcn.0046d600
push 0x117
push str.crypto_sm2_sm2_crypt.c
push dword [esp + 0x34]
call fcn.0046d600
push 0x118
push str.crypto_sm2_sm2_crypt.c
push dword [esp + 0x4c]
call fcn.0046d600
push dword [esp + 0x48]
call fcn.00492570
push edi
call fcn.00486c30
push dword [esp + 0x54]
call fcn.00497b10
push dword [esp + 0x60]
call fcn.00497b10
mov eax, dword [esp + 0x94]
add esp, 0x40
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x60
ret