Function at 0x595450
Capabilities:
Encode data using xor

Disassembly:
mov eax, 0x5c
call fcn.005dfc90
push ebx
push ebp
push esi
push edi
mov dword [esp + 0x48], 0
call fcn.004b0400
mov esi, dword [esp + 0x70]
push esi
mov dword [esp + 0x20], eax
call fcn.004939b0
mov edi, eax
push edi
call fcn.00470680
push esi
mov dword [esp + 0x58], eax
call fcn.00493b20
push dword [esp + 0x80]
xor ebp, ebp
mov dword [esp + 0x60], eax
mov dword [esp + 0x30], 0
mov dword [esp + 0x34], 0
mov dword [esp + 0x24], ebp
call fcn.00498340
mov ebx, eax
mov dword [esp + 0x54], ebp
push esi
mov dword [esp + 0x54], ebx
call fcn.004f1b50
push esi
mov dword [esp + 0x40], eax
call fcn.004f1b40
add esp, 0x18
mov dword [esp + 0x34], eax
mov dword [esp + 0x68], ebp
mov dword [esp + 0x64], ebp
cmp dword [esp + 0x1c], ebp
je 0x595b49
test ebx, ebx
jle 0x595b49
push edi
call fcn.00594c90
add esp, 4
mov dword [esp + 0x2c], eax
test eax, eax
jne 0x595511
call fcn.0046b450
push str.ossl_sm2_encrypt
push 0x94
jmp 0x595b58
push edi
call fcn.00501090
push edi
mov dword [esp + 0x28], eax
call fcn.00501090
push dword [esp + 0x30]
mov ebx, eax
mov dword [esp + 0x30], ebx
call fcn.004e8e60
add esp, 0xc
mov esi, eax
mov dword [esp + 0x18], esi
cmp dword [esp + 0x20], ebp
je 0x595b20
test ebx, ebx
je 0x595b20
test esi, esi
je 0x595b20
push esi
call fcn.004e8f30
push esi
call fcn.004e8ce0
push esi
mov ebx, eax
call fcn.004e8ce0
push esi
mov dword [esp + 0x48], eax
call fcn.004e8ce0
push esi
mov dword [esp + 0x44], eax
call fcn.004e8ce0
push esi
mov dword [esp + 0x54], eax
call fcn.004e8ce0
add esp, 0x18
mov dword [esp + 0x54], eax
test eax, eax
jne 0x5955bc
call fcn.0046b450
push str.ossl_sm2_encrypt
push 0xa8
push str.crypto_sm2_sm2_crypt.c
call fcn.0046b550
push 0
push 0x80003
push 0x35
call fcn.0046b600
jmp 0x595b72
mov eax, dword [esp + 0x2c]
push 0xac
add eax, eax
push str.crypto_sm2_sm2_crypt.c
push eax
mov dword [esp + 0x64], eax
call fcn.00467c10
push 0xad
push str.crypto_sm2_sm2_crypt.c
push dword [esp + 0x54]
mov dword [esp + 0x2c], eax
call fcn.00467c10
add esp, 0x18
mov dword [esp + 0x10], eax
cmp dword [esp + 0x14], ebp
je 0x595af0
test eax, eax
je 0x595af0
mov eax, dword [esp + 0x84]
push dword [eax]
push 0
push dword [esp + 0x88]
call fcn.005e1610
push esi
push 0
push dword [esp + 0x60]
push ebx
call fcn.004edc80
add esp, 0x1c
test eax, eax
jne 0x595664
call fcn.0046b450
push str.ossl_sm2_encrypt
push 0xb7
push str.crypto_sm2_sm2_crypt.c
call fcn.0046b550
push 0
push 0xc0103
push 0x35
call fcn.0046b600
mov ebx, dword [esp + 0x28]
add esp, 0x18
jmp 0x595b77
push esi
push 0
push 0
push ebx
push dword [esp + 0x30]
push edi
call fcn.00500f50
add esp, 0x18
test eax, eax
je 0x595abd
push esi
push dword [esp + 0x40]
push dword [esp + 0x40]
push dword [esp + 0x2c]
push edi
call fcn.00500c60
add esp, 0x14
test eax, eax
je 0x595abd
push esi
push ebx
push dword [esp + 0x58]
push 0
push dword [esp + 0x34]
push edi
call fcn.00500f50
add esp, 0x18
test eax, eax
je 0x595abd
mov ebx, dword [esp + 0x54]
push esi
push ebx
push dword [esp + 0x38]
push dword [esp + 0x30]
push edi
call fcn.00500c60
add esp, 0x14
test eax, eax
je 0x595abd
mov edi, dword [esp + 0x2c]
push edi
push dword [esp + 0x18]
push dword [esp + 0x38]
call fcn.0049a0d0
add esp, 0xc
test eax, eax
js 0x595aa9
mov eax, dword [esp + 0x14]
add eax, edi
push edi
push eax
push ebx
mov dword [esp + 0x5c], eax
call fcn.0049a0d0
add esp, 0xc
test eax, eax
js 0x595aa9
mov edi, dword [esp + 0x7c]
push 0xc9
push str.crypto_sm2_sm2_crypt.c
push edi
call fcn.00467c10
mov ebp, eax
add esp, 0xc
test ebp, ebp
jne 0x595744
call fcn.0046b450
push str.ossl_sm2_encrypt
push 0xcb
jmp 0x595aff
push dword [esp + 0x34]
push dword [esp + 0x2c]
push dword [esp + 0x7c]
push 0
push 0
push dword [esp + 0x6c]
push dword [esp + 0x2c]
push edi
push ebp
call fcn.00525580
add esp, 0x24
test eax, eax
jne 0x59579d
call fcn.0046b450
push str.ossl_sm2_encrypt
push 0xd2
push str.crypto_sm2_sm2_crypt.c
call fcn.0046b550
push 0
push 0x80006
push 0x35
call fcn.0046b600
mov ebx, dword [esp + 0x28]
add esp, 0x18
jmp 0x595b77
xor edx, edx
test edi, edi
je 0x59588e
mov ebx, dword [esp + 0x78]
cmp edi, 8
jb 0x595873
lea eax, [ebx - 1]
lea ecx, [edi - 1]
add eax, edi
add ecx, ebp
cmp ebp, eax
ja 0x5957ca
cmp ecx, ebx
jae 0x595873
cmp edi, 0x40
jb 0x595847
mov eax, edi
lea ecx, [ebx + 0x30]
and eax, 0x3f
mov esi, edi
mov edi, ebx
mov dword [esp + 0x54], eax
sub esi, eax
sub edi, ebp
mov dword [esp + 0x58], edi
lea eax, [ebp + 0x10]
mov edi, dword [esp + 0x7c]
mov ebx, 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 [ebx + 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, esi
jne 0x5957f2
cmp dword [esp + 0x54], 8
mov ebx, dword [esp + 0x78]
jb 0x59586f
mov ecx, edi
lea eax, [edx + ebp]
mov esi, ebx
and ecx, 0xfffffff8
sub esi, ebp
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 0x595853
cmp edx, edi
je 0x595892
mov esi, edi
lea ecx, [edx + ebp]
sub ebx, ebp
sub esi, edx
nop dword [eax]
mov al, byte [ebx + ecx]
lea ecx, [ecx + 1]
xor byte [ecx - 1], al
sub esi, 1
jne 0x595880
mov ebx, dword [esp + 0x78]
push dword [esp + 0x34]
push dword [esp + 0x78]
call fcn.004982d0
add esp, 4
push eax
push dword [esp + 0x30]
call fcn.004b0490
add esp, 0xc
mov dword [esp + 0x44], eax
test eax, eax
jne 0x5958ee
call fcn.0046b450
push str.ossl_sm2_encrypt
push 0xdb
push str.crypto_sm2_sm2_crypt.c
call fcn.0046b550
push 0
push 0xc0103
push 0x35
call fcn.0046b600
mov esi, dword [esp + 0x30]
add esp, 0x18
mov ebx, dword [esp + 0x10]
jmp 0x595b77
mov esi, dword [esp + 0x1c]
push eax
push esi
call fcn.004afb70
add esp, 8
test eax, eax
je 0x595a72
mov esi, dword [esp + 0x2c]
push esi
push dword [esp + 0x18]
push dword [esp + 0x24]
call fcn.004afbd0
add esp, 0xc
test eax, eax
je 0x595a72
push edi
push ebx
push dword [esp + 0x24]
call fcn.004afbd0
add esp, 0xc
test eax, eax
je 0x595a72
push esi
push dword [esp + 0x54]
mov esi, dword [esp + 0x24]
push esi
call fcn.004afbd0
mov ebx, dword [esp + 0x1c]
add esp, 0xc
test eax, eax
je 0x595a76
push 0
push ebx
push esi
call fcn.004af890
add esp, 0xc
test eax, eax
je 0x595a76
mov eax, dword [esp + 0x38]
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x60], eax
call fcn.004a6e30
mov dword [esp + 0x64], eax
call fcn.004a6e30
mov ecx, dword [esp + 0x64]
mov dword [esp + 0x68], eax
test ecx, ecx
je 0x595a3f
test eax, eax
je 0x595a3f
push dword [esp + 0x40]
push ebx
push ecx
call fcn.004a7030
add esp, 0xc
test eax, eax
je 0x595a0c
push edi
push ebp
push dword [esp + 0x70]
call fcn.004a7030
add esp, 0xc
test eax, eax
je 0x595a0c
push 0x683448
lea eax, [esp + 0x84]
push eax
lea eax, [esp + 0x64]
push eax
call fcn.00508c80
add esp, 0xc
test eax, eax
jns 0x5959f2
call fcn.0046b450
push str.ossl_sm2_encrypt
push 0xf9
jmp 0x595a1b
mov ecx, dword [esp + 0x84]
mov esi, dword [esp + 0x18]
mov dword [esp + 0x48], 1
mov dword [ecx], eax
jmp 0x595b77
call fcn.0046b450
push str.ossl_sm2_encrypt
push 0xf2
push str.crypto_sm2_sm2_crypt.c
call fcn.0046b550
push 0
push 0xc0103
push 0x35
call fcn.0046b600
mov esi, dword [esp + 0x30]
add esp, 0x18
jmp 0x595b77
call fcn.0046b450
push str.ossl_sm2_encrypt
push 0xed
push str.crypto_sm2_sm2_crypt.c
call fcn.0046b550
push 0
push 0xc0100
push 0x35
call fcn.0046b600
mov esi, dword [esp + 0x30]
add esp, 0x18
jmp 0x595b77
mov ebx, dword [esp + 0x10]
call fcn.0046b450
push str.ossl_sm2_encrypt
push 0xe3
push str.crypto_sm2_sm2_crypt.c
call fcn.0046b550
push 0
push 0x80006
push 0x35
call fcn.0046b600
mov esi, dword [esp + 0x30]
add esp, 0x18
jmp 0x595b77
call fcn.0046b450
push str.ossl_sm2_encrypt
push 0xc5
jmp 0x595640
call fcn.0046b450
push str.ossl_sm2_encrypt
push 0xbf
push str.crypto_sm2_sm2_crypt.c
call fcn.0046b550
push 0
push 0x80010
push 0x35
call fcn.0046b600
mov ebx, dword [esp + 0x28]
add esp, 0x18
jmp 0x595b77
call fcn.0046b450
push str.ossl_sm2_encrypt
push 0xb0
push str.crypto_sm2_sm2_crypt.c
call fcn.0046b550
push 0
push 0xc0100
push 0x35
call fcn.0046b600
mov ebx, dword [esp + 0x28]
add esp, 0x18
jmp 0x595b77
call fcn.0046b450
push str.ossl_sm2_encrypt
push 0x9c
push str.crypto_sm2_sm2_crypt.c
call fcn.0046b550
push 0
push 0xc0100
push 0x35
call fcn.0046b600
jmp 0x595b72
call fcn.0046b450
push str.ossl_sm2_encrypt
push 0x8e
push str.crypto_sm2_sm2_crypt.c
call fcn.0046b550
push 0
push 0xc0103
push 0x35
call fcn.0046b600
xor esi, esi
add esp, 0x18
xor ebx, ebx
push dword [esp + 0x44]
call fcn.004b04c0
push dword [esp + 0x6c]
call fcn.004a6d20
push dword [esp + 0x6c]
call fcn.004a6d20
push 0x104
push str.crypto_sm2_sm2_crypt.c
push ebp
call fcn.004679c0
push 0x105
push str.crypto_sm2_sm2_crypt.c
push dword [esp + 0x34]
call fcn.004679c0
push 0x106
push str.crypto_sm2_sm2_crypt.c
push ebx
call fcn.004679c0
push dword [esp + 0x4c]
call fcn.004b0370
push esi
call fcn.004e8c50
push dword [esp + 0x58]
call fcn.00500c30
push dword [esp + 0x60]
call fcn.00500c30
mov eax, dword [esp + 0x88]
add esp, 0x40
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x5c
ret