Function at 0x62ac30
Capabilities:
Encode data using xor

Disassembly:
mov eax, 0x60
call fcn.00655180
push ebx
push ebp
push esi
push edi
mov dword [esp + 0x54], 0
xor edi, edi
call fcn.005291e0
mov esi, dword [esp + 0x74]
mov ebp, eax
push esi
mov dword [esp + 0x1c], ebp
call fcn.00454b30
mov ebx, eax
push ebx
call fcn.005131a0
push esi
mov dword [esp + 0x4c], eax
call fcn.005138e0
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.005139d0
push esi
mov dword [esp + 0x44], eax
mov dword [esp + 0x64], edi
call fcn.00460890
push esi
mov dword [esp + 0x40], eax
call fcn.0057bd70
add esp, 0x18
mov dword [esp + 0x44], eax
mov dword [esp + 0x6c], edi
mov dword [esp + 0x68], edi
test ebp, ebp
je 0x62b2b4
cmp dword [esp + 0x30], edi
jle 0x62b2b4
push ebx
call fcn.00516330
add esp, 4
test eax, eax
je 0x62b2a3
push eax
call fcn.0051f4d0
add eax, 7
add esp, 4
cdq
and edx, 7
lea ebp, [edx + eax]
sar ebp, 3
mov dword [esp + 0x2c], ebp
test ebp, ebp
je 0x62b2a3
push ebx
call fcn.0057a380
push ebx
mov dword [esp + 0x24], eax
call fcn.0057a380
add esp, 8
mov dword [esp + 0x24], eax
cmp dword [esp + 0x1c], edi
je 0x62b292
test eax, eax
je 0x62b292
push dword [esp + 0x28]
call fcn.00560fb0
mov edi, eax
add esp, 4
test edi, edi
jne 0x62ad5f
call fcn.00514490
push str.ossl_sm2_encrypt
push 0x9f
push str.crypto_sm2_sm2_crypt.c
call fcn.00514590
push 0
push 0x80003
jmp 0x62b2d4
push edi
call fcn.00561050
push edi
call fcn.00560e60
push edi
mov esi, eax
call fcn.00560e60
push edi
mov dword [esp + 0x58], eax
call fcn.00560e60
push edi
mov dword [esp + 0x48], eax
call fcn.00560e60
push edi
mov dword [esp + 0x64], eax
call fcn.00560e60
add esp, 0x18
mov dword [esp + 0x38], eax
test eax, eax
jne 0x62adad
call fcn.00514490
push str.ossl_sm2_encrypt
push 0xab
jmp 0x62ad49
push 0xaf
lea eax, [ebp*2]
push str.crypto_sm2_sm2_crypt.c
push eax
mov dword [esp + 0x48], eax
call fcn.0050ec40
push 0xb0
push str.crypto_sm2_sm2_crypt.c
push dword [esp + 0x44]
mov dword [esp + 0x2c], eax
call fcn.0050ec40
add esp, 0x18
mov dword [esp + 0x20], eax
cmp dword [esp + 0x14], 0
je 0x62b2de
test eax, eax
je 0x62b2de
mov eax, dword [esp + 0x88]
push dword [eax]
push 0
push dword [esp + 0x8c]
call fcn.00656e20
mov ebp, dword [esp + 0x8c]
push 0xb7
push str.crypto_sm2_sm2_crypt.c
push ebp
call fcn.0050ec40
add esp, 0x18
mov dword [esp + 0x10], eax
test eax, eax
je 0x62b2de
push edi
push 0
push dword [esp + 0x48]
push esi
call fcn.005fd630
add esp, 0x10
test eax, eax
je 0x62af6c
nop
push edi
push 0
push 0
push esi
push dword [esp + 0x2c]
push ebx
call fcn.0057a240
add esp, 0x18
test eax, eax
je 0x62b270
push edi
push dword [esp + 0x50]
push dword [esp + 0x50]
push dword [esp + 0x28]
push ebx
call fcn.00579f50
add esp, 0x14
test eax, eax
je 0x62b270
push edi
push esi
push dword [esp + 0x60]
push 0
push dword [esp + 0x34]
push ebx
call fcn.0057a240
add esp, 0x18
test eax, eax
je 0x62b270
push edi
push dword [esp + 0x3c]
push dword [esp + 0x3c]
push dword [esp + 0x30]
push ebx
call fcn.00579f50
add esp, 0x14
test eax, eax
je 0x62b270
push dword [esp + 0x2c]
push dword [esp + 0x18]
push dword [esp + 0x3c]
call fcn.0051ee40
add esp, 0xc
test eax, eax
js 0x62b25f
mov ecx, dword [esp + 0x2c]
mov eax, dword [esp + 0x14]
add eax, ecx
push ecx
push eax
push dword [esp + 0x40]
mov dword [esp + 0x68], eax
call fcn.0051ee40
add esp, 0xc
test eax, eax
js 0x62b25f
push dword [esp + 0x44]
push dword [esp + 0x2c]
push dword [esp + 0x80]
push 0
push 0
push dword [esp + 0x50]
push dword [esp + 0x2c]
push ebp
push dword [esp + 0x30]
call fcn.0057e590
add esp, 0x24
test eax, eax
je 0x62b24e
push ebp
push dword [esp + 0x14]
call fcn.0062a3c0
add esp, 8
test eax, eax
je 0x62af80
push dword [esp + 0x3c]
push 0
push dword [esp + 0x1c]
call fcn.00656e20
push edi
push 0
push dword [esp + 0x54]
push esi
call fcn.005fd630
add esp, 0x1c
test eax, eax
jne 0x62ae50
call fcn.00514490
push str.ossl_sm2_encrypt
push 0xbd
jmp 0x62b2c3
xor edx, edx
test ebp, ebp
je 0x62b08e
mov ebx, dword [esp + 0x10]
cmp ebp, 8
jb 0x62b070
mov esi, dword [esp + 0x7c]
lea ecx, [ebx - 1]
add ecx, ebp
lea eax, [esi - 1]
add eax, ebp
cmp ebx, eax
ja 0x62afb1
cmp ecx, esi
jae 0x62b070
cmp ebp, 0x40
jb 0x62b03b
mov ecx, ebp
mov eax, ebp
and ecx, 0x3f
mov ebp, esi
sub eax, ecx
mov dword [esp + 0x40], 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 0x62afe4
cmp dword [esp + 0x40], 8
mov esi, dword [esp + 0x7c]
jb 0x62b06c
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 0x62b050
cmp edx, ebp
je 0x62b092
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 0x62b080
mov ebx, dword [esp + 0x10]
push dword [esp + 0x44]
push dword [esp + 0x7c]
call fcn.00513960
add esp, 4
push eax
push dword [esp + 0x30]
call fcn.00529270
add esp, 0xc
mov dword [esp + 0x50], eax
test eax, eax
jne 0x62b0cb
call fcn.00514490
push str.ossl_sm2_encrypt
push 0xe0
jmp 0x62b2c3
mov esi, dword [esp + 0x18]
push eax
push esi
call fcn.00528b50
add esp, 8
test eax, eax
je 0x62b229
mov esi, dword [esp + 0x2c]
push esi
push dword [esp + 0x18]
push dword [esp + 0x20]
call fcn.00528bb0
add esp, 0xc
test eax, eax
je 0x62b229
push ebp
push dword [esp + 0x80]
push dword [esp + 0x20]
call fcn.00528bb0
add esp, 0xc
test eax, eax
je 0x62b229
push esi
push dword [esp + 0x60]
mov esi, dword [esp + 0x20]
push esi
call fcn.00528bb0
add esp, 0xc
test eax, eax
je 0x62b229
push 0
push dword [esp + 0x24]
push esi
call fcn.00528790
add esp, 0xc
test eax, eax
je 0x62b229
mov eax, dword [esp + 0x48]
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x64], eax
call fcn.00528020
mov dword [esp + 0x68], eax
call fcn.00528020
mov ecx, dword [esp + 0x68]
mov dword [esp + 0x6c], eax
test ecx, ecx
je 0x62b204
test eax, eax
je 0x62b204
push dword [esp + 0x30]
push dword [esp + 0x24]
push ecx
call fcn.00547c90
add esp, 0xc
test eax, eax
je 0x62b1f0
push ebp
push ebx
push dword [esp + 0x74]
call fcn.00547c90
add esp, 0xc
test eax, eax
je 0x62b1f0
push 0x6fe588
lea eax, [esp + 0x88]
push eax
lea eax, [esp + 0x68]
push eax
call fcn.00546d40
add esp, 0xc
test eax, eax
jns 0x62b1da
call fcn.00514490
push str.ossl_sm2_encrypt
push 0xfe
jmp 0x62b2c3
mov ecx, dword [esp + 0x88]
mov dword [esp + 0x54], 1
mov dword [ecx], eax
jmp 0x62b2de
call fcn.00514490
push str.ossl_sm2_encrypt
push 0xf7
jmp 0x62b2c3
call fcn.00514490
push str.ossl_sm2_encrypt
push 0xf2
push str.crypto_sm2_sm2_crypt.c
call fcn.00514590
push 0
push 0x8000d
jmp 0x62b2d4
call fcn.00514490
push str.ossl_sm2_encrypt
push 0xe8
push str.crypto_sm2_sm2_crypt.c
call fcn.00514590
push 0
push 0x80006
jmp 0x62b2d4
call fcn.00514490
push str.ossl_sm2_encrypt
push 0xd2
jmp 0x62b238
call fcn.00514490
push str.ossl_sm2_encrypt
push 0xcb
jmp 0x62b2c3
call fcn.00514490
push str.ossl_sm2_encrypt
push 0xc5
push str.crypto_sm2_sm2_crypt.c
call fcn.00514590
push 0
push 0x80010
jmp 0x62b2d4
call fcn.00514490
push str.ossl_sm2_encrypt
push 0x9a
jmp 0x62b27f
call fcn.00514490
push str.ossl_sm2_encrypt
push 0x93
jmp 0x62b2c3
call fcn.00514490
push str.ossl_sm2_encrypt
push 0x8d
push str.crypto_sm2_sm2_crypt.c
call fcn.00514590
push 0
push 0xc0103
push 0x35
call fcn.005146a0
add esp, 0x18
push dword [esp + 0x50]
call fcn.005292a0
push dword [esp + 0x70]
call fcn.00527f10
push dword [esp + 0x70]
call fcn.00527f10
push 0x109
push str.crypto_sm2_sm2_crypt.c
push dword [esp + 0x24]
call fcn.0050ea40
push 0x10a
push str.crypto_sm2_sm2_crypt.c
push dword [esp + 0x34]
call fcn.0050ea40
push 0x10b
push str.crypto_sm2_sm2_crypt.c
push dword [esp + 0x4c]
call fcn.0050ea40
push dword [esp + 0x48]
call fcn.00529150
push edi
call fcn.00560dd0
push dword [esp + 0x54]
call fcn.00579f20
push dword [esp + 0x60]
call fcn.00579f20
mov eax, dword [esp + 0x94]
add esp, 0x40
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x60
ret