Function at 0x576e90
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x9b0
mov dword [esp + 4], ecx
lea ecx, [esp + 0x4e0]
mov dword [esp + 0x24], edx
call fcn.0056f060
mov edi, dword [esp + 0x4e4]
cmp dword [esp + 0x4e0], 1
mov ebx, dword [esp + 0x4ec]
mov esi, dword [esp + 0x4e8]
je 0x576f77
lea eax, [esp + 0x4f0]
lea ecx, [esp + 0x3c]
push 0x37c
push eax
push ecx
call sub.msvcrt.dll_memcpy
add esp, 0xc
mov dword [esp + 0x30], edi
mov dword [esp + 0x38], ebx
mov dword [esp + 0x34], esi
lea ecx, [esp + 0x4e0]
lea edx, [esp + 0x30]
push 0
call fcn.0056f3a0
add esp, 4
cmp dword [esp + 0x4e0], 1
je 0x576f59
lea ecx, [esp + 0x4e0]
lea edx, [esp + 0x30]
push 0
call fcn.0056f3a0
add esp, 4
cmp dword [esp + 0x4e0], 1
je 0x576f59
lea ecx, [esp + 0x4e0]
lea edx, [esp + 0x30]
push 0
call fcn.0056f3a0
add esp, 4
cmp dword [esp + 0x4e0], 1
jne 0x576f92
mov edi, dword [esp + 0x4e4]
mov esi, dword [esp + 0x4e8]
mov ebx, dword [esp + 0x4ec]
lea ecx, [esp + 0x30]
call fcn.0056f6e0
mov eax, dword [esp + 4]
mov dword [eax + 4], edi
mov dword [eax + 8], esi
mov dword [eax + 0xc], ebx
mov dword [eax], 1
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 8]
test ecx, ecx
je 0x5772df
mov edx, dword [eax]
lea eax, [ecx + ecx*2]
mov dword [esp + 0xc], 0
lea eax, [edx + eax*4]
mov dword [esp + 0x14], eax
jmp 0x576fcb
mov edx, dword [esp + 0x20]
inc dword [esp + 0xc]
add edx, 0xc
cmp edx, dword [esp + 0x14]
je 0x5772df
mov esi, dword [edx + 8]
mov eax, dword [esp + 0x288]
mov ecx, dword [edx]
mov edi, dword [esp + 0x284]
mov dword [esp + 0x20], edx
cmp eax, esi
mov dword [esp + 0x18], ecx
mov dword [esp + 0x1c], esi
cmovbe eax, esi
mov dword [esp + 0x288], eax
inc dword [esp + 0x28c]
test esi, esi
je 0x57726b
lea eax, [ecx + esi]
mov esi, ecx
mov dword [esp], edi
mov dword [esp + 0x10], 0
mov dword [esp + 0x28], eax
xor eax, eax
jmp 0x57704e
or bl, 0x20
mov eax, ebx
mov ecx, dword [esp + 0x29c]
movzx edx, al
lea ecx, [ecx + esi*4]
push edi
call fcn.0056f510
add esp, 4
mov esi, dword [esp + 0x2c]
mov eax, dword [esp + 8]
mov dword [esp], edi
inc esi
cmp esi, dword [esp + 0x28]
je 0x57726b
movzx ebx, byte [esi]
mov edi, dword [esp]
test al, 1
mov cl, 1
jne 0x57707b
mov edx, dword [esp + 0x2a4]
cmp edx, edi
jbe 0x5778c0
mov eax, dword [esp + 0x29c]
lea ecx, [edi + edi*8]
cmp dword [eax + ecx*4 + 0x1c], 0
setne cl
mov eax, dword [esp + 0x30]
cmp byte [eax + 4], 1
jne 0x57708d
test cl, cl
jne 0x576fb6
test ebx, ebx
mov dword [esp + 8], ecx
je 0x5770b2
mov edx, dword [esp + 0x3b4]
lea ecx, [ebx - 1]
cmp edx, ecx
jbe 0x5778d1
mov eax, dword [esp + 0x3ac]
mov byte [eax + ecx], 1
mov edx, dword [esp + 0x3b4]
cmp edx, ebx
jbe 0x5778e0
mov eax, dword [esp + 0x3ac]
mov byte [eax + ebx], 1
mov eax, dword [esp + 0x30]
cmp byte [eax + 7], 0
je 0x577144
mov eax, ebx
add al, 0xbf
cmp al, 0x19
ja 0x5770f0
mov eax, ebx
or al, 0x20
jmp 0x577109
mov eax, ebx
mov ecx, ebx
add al, 0x9f
and cl, 0xdf
cmp al, 0x1a
movzx eax, cl
cmovae eax, ebx
test al, al
je 0x577252
mov edx, dword [esp + 0x3b4]
movzx ecx, al
dec ecx
cmp edx, ecx
jbe 0x5778d1
mov edx, dword [esp + 0x3ac]
mov byte [edx + ecx], 1
mov edx, dword [esp + 0x3b4]
movzx ecx, al
cmp edx, ecx
jbe 0x577902
mov eax, dword [esp + 0x3ac]
mov byte [eax + ecx], 1
mov edx, dword [esp + 0x2a4]
cmp edx, edi
jbe 0x5778c0
mov edx, dword [esp + 0x29c]
mov dword [esp + 0x2c], esi
lea esi, [edi + edi*8]
inc dword [esp + 0x10]
cmp dword [edx + esi*4], 1
lea eax, [edx + esi*4 + 4]
jne 0x577190
mov edx, dword [edx + esi*4 + 0xc]
cmp edx, ebx
jbe 0x577923
lea edx, [ebx*4]
add edx, dword [eax]
jmp 0x5771b1
mov ecx, dword [eax]
mov eax, dword [edx + esi*4 + 0xc]
add ecx, 0xfffffffc
shl eax, 3
nop dword [eax]
test eax, eax
je 0x5771bb
add eax, 0xfffffff8
cmp byte [ecx + 4], bl
lea edx, [ecx + 8]
mov ecx, edx
jne 0x5771a0
mov edi, dword [edx]
test edi, edi
jne 0x577038
lea ecx, [esp + 0x4e0]
lea edx, [esp + 0x30]
push dword [esp + 0x10]
call fcn.0056f3a0
add esp, 4
mov edi, dword [esp + 0x4e4]
cmp dword [esp + 0x4e0], 1
je 0x5772d6
mov edx, dword [esp + 0x2a4]
cmp edx, dword [esp]
jbe 0x577911
lea ecx, [esi*4]
mov edx, ebx
add ecx, dword [esp + 0x29c]
push edi
call fcn.0056f510
add esp, 4
mov eax, dword [esp + 0x30]
cmp byte [eax + 7], 0
je 0x577038
mov edx, dword [esp + 0x2a4]
mov ecx, dword [esp]
cmp edx, ecx
jbe 0x577934
mov eax, ebx
add al, 0xbf
cmp al, 0x1a
jb 0x57701d
mov eax, ebx
mov ecx, ebx
add al, 0x9f
and cl, 0xdf
cmp al, 0x1a
movzx eax, cl
cmovae eax, ebx
jmp 0x577022
xor eax, eax
mov edx, dword [esp + 0x3b4]
movzx ecx, al
cmp edx, ecx
ja 0x577139
jmp 0x577902
mov edx, dword [esp + 0x2a4]
cmp edx, edi
jbe 0x577943
mov eax, dword [esp + 0x29c]
lea ecx, [edi + edi*8]
mov edi, dword [esp + 0x1c]
mov edx, dword [eax + ecx*4 + 0x1c]
lea esi, [eax + ecx*4 + 0x14]
cmp edx, dword [eax + ecx*4 + 0x18]
jne 0x5772a0
mov ecx, esi
call fcn.00415b20
mov edx, dword [esi + 8]
mov eax, dword [esi]
mov ecx, dword [esp + 0xc]
mov dword [eax + edx*8], ecx
mov dword [eax + edx*8 + 4], edi
inc dword [esi + 8]
mov eax, dword [esp + 0x30]
cmp byte [eax + 5], 0
je 0x576fb6
mov edx, dword [esp + 0x18]
mov ebx, edi
lea ecx, [esp + 0x34]
push edi
call fcn.004077f0
add esp, 4
jmp 0x576fb6
cmp edi, 2
jne 0x576f60
lea ecx, [esp + 0x30]
call fcn.0056f610
mov edx, dword [esp + 0x2a4]
cmp edx, 1
jbe 0x577954
mov esi, dword [esp + 0x29c]
xor edx, edx
add esi, 0x24
movzx eax, dx
cmp eax, 0x100
je 0x57732b
nop
lea edi, [edx + 1]
mov ecx, esi
push 1
call fcn.0056f510
add esp, 4
mov edx, edi
movzx eax, dx
cmp eax, 0x100
jne 0x577310
mov eax, dword [esp + 0x30]
cmp byte [eax + 6], 0
jne 0x57734e
mov al, byte [eax + 4]
lea ecx, [esp + 0x30]
dec al
cmp al, 2
jae 0x577349
call fcn.0056fff0
jmp 0x57734e
call fcn.0056f9e0
lea ecx, [esp + 0x30]
call fcn.0056f8b0
mov ecx, dword [esp + 0x3b4]
mov edx, dword [esp + 0x3ac]
xorps xmm0, xmm0
mov edi, 0xffffff01
xor ebx, ebx
movaps xmmword [esp + 0x5d0], xmm0
movaps xmmword [esp + 0x5c0], xmm0
movaps xmmword [esp + 0x5b0], xmm0
movaps xmmword [esp + 0x5a0], xmm0
movaps xmmword [esp + 0x590], xmm0
movaps xmmword [esp + 0x580], xmm0
movaps xmmword [esp + 0x570], xmm0
movaps xmmword [esp + 0x560], xmm0
movaps xmmword [esp + 0x550], xmm0
movaps xmmword [esp + 0x540], xmm0
movaps xmmword [esp + 0x530], xmm0
movaps xmmword [esp + 0x520], xmm0
movaps xmmword [esp + 0x510], xmm0
movaps xmmword [esp + 0x500], xmm0
movaps xmmword [esp + 0x4f0], xmm0
movaps xmmword [esp + 0x4e0], xmm0
mov esi, ecx
neg esi
jmp 0x57740a
mov byte [esp + edi + 0x5e0], bl
inc edi
je 0x57743f
lea eax, [esi + edi]
cmp eax, 0xffffff01
je 0x5778f1
cmp byte [edx + edi + 0xff], 0
je 0x577400
inc bl
jne 0x577400
mov ecx, str.called__Option::unwrap____on_a__None__value_rustc_532d2b14c05f9bc20b2d27cbb5f4550d28343a36librarycore_src_strpattern.rs
mov edx, 0x2b
push 0x6080f4
call fcn.0045aec0
add esp, 4
ud2
push 0x100
lea eax, [esp + 0x4e4]
push eax
lea eax, [esp + 0x2b2]
push eax
call sub.msvcrt.dll_memcpy
add esp, 0xc
mov eax, dword [esp + 0x30]
cmp byte [eax + 6], 0
jne 0x5774c4
lea ecx, [esp + 0x34]
call fcn.00405f90
mov esi, eax
mov eax, dword [esp + 0x294]
mov edi, edx
test eax, eax
je 0x5774b6
mov ecx, dword [esp + 0x298]
push eax
call dword [ecx]
add esp, 4
mov ecx, dword [esp + 0x298]
cmp dword [ecx + 4], 0
je 0x5774b6
mov eax, dword [esp + 0x294]
cmp dword [ecx + 8], 9
jb 0x5774a8
mov eax, dword [eax - 4]
push eax
push 0
push dword [0x6f1130]
call sub.KERNEL32.dll_HeapFree
mov dword [esp + 0x294], esi
mov dword [esp + 0x298], edi
mov eax, dword [esp + 0x2a4]
test eax, eax
je 0x5774ff
mov edx, dword [esp + 0x29c]
lea eax, [eax + eax*8]
lea esi, [edx + eax*4]
xor eax, eax
nop
cmp dword [edx], 1
mov edi, dword [edx + 0xc]
sete cl
xor cl, 3
shl edi, cl
mov ecx, dword [edx + 0x1c]
add edx, 0x24
lea eax, [eax + ecx*8]
add eax, edi
cmp edx, esi
jne 0x5774e0
jmp 0x577501
xor eax, eax
mov dword [esp + 0x290], eax
lea edi, [esp + 0x86c]
lea ecx, [esp + 0x290]
mov eax, dword [esp + 0x284]
mov ebx, dword [esp + 0x288]
mov esi, dword [esp + 0x28c]
mov dword [esp], eax
push 0x11c
push ecx
push edi
call sub.msvcrt.dll_memcpy
add esp, 0xc
cmp dword [esp + 0x3c], 0
je 0x577555
push dword [esp + 0x38]
push 0
push dword [0x6f1130]
call sub.KERNEL32.dll_HeapFree
cmp byte [esp + 0x27c], 2
je 0x577604
mov eax, dword [esp + 0x25c]
mov dword [esp + 8], ebx
test eax, eax
je 0x5775af
mov edi, dword [esp + 0x254]
shl eax, 2
lea ebx, [eax + eax*2]
add edi, 4
jmp 0x577598
add edi, 0xc
add ebx, 0xfffffff4
je 0x5775af
cmp dword [edi], 0
je 0x577590
push dword [edi - 4]
push 0
push dword [0x6f1130]
call sub.KERNEL32.dll_HeapFree
jmp 0x577590
mov eax, dword [esp + 0x258]
test eax, eax
je 0x5775d8
shl eax, 2
lea eax, [eax + eax*2]
test eax, eax
je 0x5775d8
push dword [esp + 0x254]
push 0
push dword [0x6f1130]
call sub.KERNEL32.dll_HeapFree
test dword [esp + 0x264], 0x7fffffff
mov ebx, dword [esp + 8]
lea edi, [esp + 0x86c]
je 0x577604
push dword [esp + 0x260]
push 0
push dword [0x6f1130]
call sub.KERNEL32.dll_HeapFree
cmp dword [esp + 0x3b0], 0
je 0x577622
push dword [esp + 0x3ac]
push 0
push dword [0x6f1130]
call sub.KERNEL32.dll_HeapFree
lea eax, [esp + 0x3c4]
push 0x11c
push edi
push eax
call sub.msvcrt.dll_memcpy
add esp, 0xc
mov eax, dword [esp]
mov edx, dword [esp + 0x24]
mov dword [esp + 0x3b8], eax
mov dword [esp + 0x3bc], ebx
mov dword [esp + 0x3c0], esi
mov bh, byte [edx + 0xa]
mov bl, byte [esp + 0x3dc]
test bh, bh
je 0x57776e
lea eax, [esp + 0x3b8]
add edx, 8
lea ecx, [esp + 0x4e0]
push eax
call fcn.00568550
add esp, 4
cmp dword [esp + 0x4e0], 1
lea eax, [esp + 0x4e4]
jne 0x577788
mov ecx, dword [eax + 8]
movsd xmm0, qword [eax]
mov eax, dword [esp + 4]
mov dword [eax + 0xc], ecx
movsd qword [eax + 4], xmm0
mov dword [eax], 1
mov eax, dword [esp + 0x3c8]
mov dword [esp + 0x38], ecx
movsd qword [esp + 0x30], xmm0
test eax, eax
je 0x5776fb
mov ecx, dword [esp + 0x3cc]
push eax
call dword [ecx]
add esp, 4
mov ecx, dword [esp + 0x3cc]
cmp dword [ecx + 4], 0
je 0x5776fb
mov eax, dword [esp + 0x3c8]
cmp dword [ecx + 8], 9
jb 0x5776ed
mov eax, dword [eax - 4]
push eax
push 0
push dword [0x6f1130]
call sub.KERNEL32.dll_HeapFree
mov eax, dword [esp + 0x3d8]
test eax, eax
je 0x57788a
mov esi, dword [esp + 0x3d0]
lea eax, [eax + eax*8]
lea edi, [esi + eax*4]
jmp 0x57772b
add esi, 0x24
cmp esi, edi
je 0x57788a
cmp dword [esi], 0
mov eax, dword [esi + 8]
je 0x577765
test eax, 0x3fffffff
je 0x57774a
push dword [esi + 4]
push 0
push dword [0x6f1130]
call sub.KERNEL32.dll_HeapFree
test dword [esi + 0x18], 0x1fffffff
je 0x577720
push dword [esi + 0x14]
push 0
push dword [0x6f1130]
call sub.KERNEL32.dll_HeapFree
jmp 0x577720
test eax, 0x1fffffff
jne 0x57773a
jmp 0x57774a
lea eax, [esp + 0x3b8]
push 0x128
push eax
push edi
call sub.msvcrt.dll_memcpy
add esp, 0xc
xor esi, esi
jmp 0x5777af
push 0x140
push eax
lea esi, [esp + 0x38]
push esi
call sub.msvcrt.dll_memcpy
add esp, 0xc
push 0x140
push esi
push edi
call sub.msvcrt.dll_memcpy
add esp, 0xc
mov esi, 1
mov ecx, edi
mov edi, dword [esp + 4]
lea eax, [edi + 8]
push 0x140
push ecx
push eax
call sub.msvcrt.dll_memcpy
add esp, 0xc
test bh, bh
mov dword [edi + 4], esi
mov byte [edi + 0x148], bl
mov dword [edi], 0
je 0x576f8a
mov eax, dword [esp + 0x3c8]
test eax, eax
je 0x577821
mov ecx, dword [esp + 0x3cc]
push eax
call dword [ecx]
add esp, 4
mov ecx, dword [esp + 0x3cc]
cmp dword [ecx + 4], 0
je 0x577821
mov eax, dword [esp + 0x3c8]
cmp dword [ecx + 8], 9
jb 0x577813
mov eax, dword [eax - 4]
push eax
push 0
push dword [0x6f1130]
call sub.KERNEL32.dll_HeapFree
mov eax, dword [esp + 0x3d8]
test eax, eax
je 0x57788a
mov esi, dword [esp + 0x3d0]
lea eax, [eax + eax*8]
lea edi, [esi + eax*4]
jmp 0x577847
add esi, 0x24
cmp esi, edi
je 0x57788a
cmp dword [esi], 0
mov eax, dword [esi + 8]
je 0x577881
test eax, 0x3fffffff
je 0x577866
push dword [esi + 4]
push 0
push dword [0x6f1130]
call sub.KERNEL32.dll_HeapFree
test dword [esi + 0x18], 0x1fffffff
je 0x577840
push dword [esi + 0x14]
push 0
push dword [0x6f1130]
call sub.KERNEL32.dll_HeapFree
jmp 0x577840
test eax, 0x1fffffff
jne 0x577856
jmp 0x577866
mov eax, dword [esp + 0x3d4]
test eax, eax
je 0x576f8a
shl eax, 2
lea eax, [eax + eax*8]
test eax, eax
je 0x576f8a
push dword [esp + 0x3d0]
push 0
push dword [0x6f1130]
call sub.KERNEL32.dll_HeapFree
jmp 0x576f8a
mov ecx, edi
push 0x689e88
call fcn.0045a150
add esp, 4
ud2
push 0x6080c4
call fcn.0045a150
add esp, 4
ud2
mov ecx, ebx
push 0x6080d4
call fcn.0045a150
add esp, 4
ud2
mov edx, ecx
push 0x6080e4
call fcn.0045a150
add esp, 4
ud2
push 0x6080d4
call fcn.0045a150
add esp, 4
ud2
mov ecx, dword [esp]
push 0x689ea8
call fcn.0045a150
add esp, 4
ud2
mov ecx, ebx
push 0x689f68
call fcn.0045a150
add esp, 4
ud2
push 0x689ea8
call fcn.0045a150
add esp, 4
ud2
mov ecx, edi
push 0x689ea8
call fcn.0045a150
add esp, 4
ud2
mov ecx, 1
push 0x689ea8
call fcn.0045a150
add esp, 4
ud2