Function at 0x5c74d0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x30
mov ebx, dword [ebp + 0xc]
mov esi, ecx
test ebx, ebx
je 0x5c724a
push edx
call sub.KERNEL32.dll_GetStdHandle
test eax, eax
je 0x5c7256
mov edi, eax
cmp eax, 0xffffffff
jne 0x5c7269
call sub.KERNEL32.dll_GetLastError
jmp 0x5c725b
mov dword [esi + 4], 0
mov byte [esi], 4
jmp 0x5c7261
mov eax, 6
mov byte [esi], 0
mov dword [esi + 4], eax
add esp, 0x30
pop esi
pop edi
pop ebx
pop ebp
ret
mov dword [ebp - 0x28], 0
lea eax, [ebp - 0x28]
push eax
push edi
call sub.KERNEL32.dll_GetConsoleMode
test eax, eax
je 0x5c72d6
mov ecx, dword [ebp + 0x10]
movzx eax, byte [ecx + 4]
test eax, eax
je 0x5c72fc
mov ebx, ecx
mov ecx, dword [ebp + 8]
cmp al, 4
jae 0x5c745a
movzx ecx, byte [ecx]
mov edx, ecx
and dl, 0xc0
cmp dl, 0x80
jne 0x5c7357
mov byte [ebx + eax], cl
mov edx, ebx
movzx eax, byte [ebx + 4]
inc al
mov byte [ebx + 4], al
movzx ecx, byte [ebx]
movzx ebx, byte [ecx + 0x6e5048]
cmp al, bl
mov dword [ebp - 0x38], ebx
jae 0x5c735d
mov dword [esi + 4], 1
mov byte [esi], 4
jmp 0x5c7261
sub esp, 8
mov edx, edi
lea ecx, [ebp - 0x28]
push 0
push 0
push ebx
push dword [ebp + 8]
call fcn.005bda80
add esp, 0x18
movsd xmm0, qword [ebp - 0x28]
movsd qword [esi], xmm0
jmp 0x5c7261
cmp ebx, 0x1000
mov eax, 0x1000
cmovb eax, ebx
lea ecx, [ebp - 0x34]
push eax
push dword [ebp + 8]
push ecx
call fcn.00500940
add esp, 0xc
cmp dword [ebp - 0x34], 0
je 0x5c7392
mov edx, dword [ebp - 0x30]
test edx, edx
je 0x5c73ab
xor ecx, ecx
push 0x6e51a4
push ebx
push dword [ebp + 8]
call fcn.0057fa10
add esp, 0xc
push edx
push eax
lea ebx, [ebp - 0x28]
push ebx
call fcn.00500940
add esp, 0xc
mov ecx, ebx
call fcn.00584a20
mov ebx, edx
jmp 0x5c7398
mov byte [ebx + 4], 0
jmp 0x5c7383
movzx ecx, al
cmp al, 5
jae 0x5c748b
lea eax, [ebp - 0x34]
push ecx
push edx
push eax
call fcn.00500940
add esp, 0xc
mov eax, dword [ebp + 0x10]
cmp dword [ebp - 0x34], 0
mov byte [eax + 4], 0
je 0x5c73da
mov byte [esi], 2
mov dword [esi + 4], 0x6e5198
jmp 0x5c7261
mov eax, dword [ebp - 0x30]
mov ebx, dword [ebp - 0x2c]
mov ecx, esi
mov edx, edi
push ebx
push eax
call 0x5c74d0
add esp, 8
jmp 0x5c7261
mov eax, dword [ebp + 8]
movzx eax, byte [eax]
movzx ecx, byte [eax + 0x6e5048]
cmp ecx, 2
jb 0x5c742e
cmp ecx, ebx
jbe 0x5c742e
mov ecx, dword [ebp + 0x10]
mov dword [esi + 4], 1
mov byte [ecx], al
mov byte [ecx + 4], 1
mov cl, 4
mov byte [esi], cl
jmp 0x5c7261
mov ecx, dword [ebp - 0x2c]
mov eax, dword [ebp - 0x30]
cmp ecx, ebx
mov dword [ebp - 0x10], ecx
jne 0x5c7498
lea ecx, [ebp - 0x28]
mov edx, edi
push ebx
push eax
call 0x5c74d0
add esp, 8
movzx eax, byte [ebp - 0x28]
cmp al, 4
jne 0x5c743e
mov eax, dword [ebp - 0x24]
mov dword [ebp - 0x10], ebx
cmp eax, ebx
mov dword [ebp - 0x3c], eax
je 0x5c72ca
mov dword [ebp - 0x28], 0
lea ecx, [ebp - 0x3c]
lea edx, [ebp - 0x10]
push 0x6e5238
lea eax, [ebp - 0x28]
push eax
call fcn.00584af0
mov al, 2
mov dword [esi + 4], 0x6e5198
mov byte [esi], al
jmp 0x5c7261
movzx ecx, byte [ebp - 0x25]
movzx edi, word [ebp - 0x27]
mov edx, dword [ebp - 0x24]
mov byte [esi + 3], cl
mov word [esi + 1], di
mov byte [esi], al
mov dword [esi + 4], edx
jmp 0x5c7261
mov dword [ebp - 0x28], 0x6e5200
mov dword [ebp - 0x24], 1
mov dword [ebp - 0x18], 0
mov dword [ebp - 0x20], str.called__Option::unwrap____on_a__None__value_rustc_07dca489ac2d933c78d3c5158e3f43beefeb02celibrarycore_srcio_borrowed_buf.rs_rustc_07dca489ac2d933c78d3c5158e3f43beefeb02celibrary_alloc_srccollections_btree_navigate.rs
mov dword [ebp - 0x1c], 0
push 0x6e5208
lea eax, [ebp - 0x28]
push eax
call fcn.004faa60
push 0x6e5218
push 4
push ecx
call fcn.005006e0
mov dword [ebp - 0x28], 0
lea ecx, [ebp - 0x38]
lea edx, [ebp - 0x10]
push 0x6e5228
lea eax, [ebp - 0x28]
push eax
call fcn.00584af0
mov esi, eax
push edi
call sub.KERNEL32.dll_CloseHandle
push esi
call fcn.0050ffb0
nop word cs:[eax + eax]
nop dword [eax + eax]
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
mov eax, 0x2050
call fcn.005d1cf0
mov ebx, dword [ebp + 0xc]
mov eax, dword [ebp + 8]
mov dword [esp + 0x20], edx
mov dword [esp], ecx
cmp ebx, 0x1001
jb 0x5c7526
cmp byte [eax + 0x1000], 0xbf
mov ebx, 0x1000
jg 0x5c7526
cmp byte [eax + 0xfff], 0xbf
mov ebx, 0xfff
jg 0x5c7526
xor ebx, ebx
cmp byte [eax + 0xffe], 0xc0
setge bl
add ebx, 0xffd
lea esi, [esp + 0x4c]
push 0x1000
push esi
push ebx
push eax
push 8
push 0xfde9
call sub.KERNEL32.dll_MultiByteToWideChar
test eax, eax
je 0x5c782d
mov edi, eax
cmp eax, 0x1001
jae 0x5c7864
mov dword [esp + 8], 0
lea eax, [esp + 8]
push 0
push eax
push edi
push esi
push dword [esp + 0x30]
call sub.KERNEL32.dll_WriteConsoleW
test eax, eax
je 0x5c77e3
mov ecx, dword [esp + 8]
cmp ecx, edi
je 0x5c77f5
jae 0x5c7821
movzx eax, word [esp + ecx*2 + 0x4c]
add eax, 0x2312
movzx eax, ax
cmp eax, 0x312
jae 0x5c75c7
lea eax, [esp + ecx*2 + 0x4c]
inc ecx
mov dword [esp + 8], 0
mov ebx, ecx
push 0
lea ecx, [esp + 0xc]
push ecx
push 1
push eax
push dword [esp + 0x30]
call sub.KERNEL32.dll_WriteConsoleW
test eax, eax
je 0x5c7806
mov ecx, ebx
cmp ecx, edi
ja 0x5c7815
test ecx, ecx
je 0x5c77f3
lea eax, [ecx - 1]
xor ebx, ebx
and eax, 0x7fffffff
cmp eax, 7
jb 0x5c778b
inc eax
mov dword [esp + 4], ecx
pxor xmm0, xmm0
lea edx, [esp + 0x54]
pxor xmm1, xmm1
mov ecx, eax
and ecx, 0xfffffff8
lea esi, [esp + ecx*2 + 0x4c]
mov edi, ecx
nop word cs:[eax + eax]
movq xmm2, qword [edx]
movdqa xmmword [esp + 0x30], xmm1
movq xmm1, qword [edx - 8]
movdqa xmm3, xmmword [0x6e10d0]
movdqa xmmword [esp + 0x20], xmm0
add edx, 0x10
add edi, 0xfffffff8
movdqa xmm0, xmm1
movdqa xmm5, xmm2
movdqa xmm7, xmm1
movdqa xmm4, xmm2
paddw xmm5, xmm3
paddw xmm0, xmm3
movdqa xmm3, xmmword [0x6e10b0]
pxor xmm4, xmmword [0x6e10b0]
pxor xmm5, xmmword [0x6e10b0]
pxor xmm0, xmm3
movdqa xmm3, xmmword [0x6e10e0]
pcmpgtw xmm4, xmmword [0x6e10c0]
movdqa xmm6, xmm3
pcmpgtw xmm3, xmm5
movdqa xmm5, xmmword [0x6e10f0]
punpcklwd xmm4, xmm4
pcmpgtw xmm6, xmm0
punpcklwd xmm3, xmm3
punpcklwd xmm6, xmm6
movdqa xmm0, xmm6
pandn xmm0, xmm5
movdqa xmm5, xmmword [0x6e1100]
pand xmm6, xmm5
por xmm6, xmm0
movdqa xmm0, xmm3
pand xmm3, xmm5
movdqa xmm5, xmmword [0x6e10b0]
pandn xmm0, xmmword [0x6e10f0]
pxor xmm7, xmm5
por xmm3, xmm0
movdqa xmm0, xmmword [0x6e1110]
pand xmm3, xmm4
paddw xmm1, xmm0
paddw xmm2, xmm0
movdqa xmm0, xmmword [0x6e1120]
pxor xmm1, xmmword [0x6e10b0]
pxor xmm2, xmm5
pcmpeqd xmm5, xmm5
pcmpgtw xmm0, xmm1
movdqa xmm1, xmmword [0x6e1120]
punpcklwd xmm0, xmm0
pcmpgtw xmm1, xmm2
movdqa xmm2, xmmword [0x6e10c0]
pcmpgtw xmm7, xmm2
movdqa xmm2, xmmword [0x6e1100]
punpcklwd xmm7, xmm7
pand xmm6, xmm7
pand xmm0, xmm2
psubd xmm0, xmm5
pandn xmm7, xmm0
movdqa xmm0, xmmword [esp + 0x20]
por xmm7, xmm6
paddd xmm0, xmm7
punpcklwd xmm1, xmm1
pand xmm1, xmm2
psubd xmm1, xmm5
pandn xmm4, xmm1
movdqa xmm1, xmmword [esp + 0x30]
por xmm4, xmm3
paddd xmm1, xmm4
jne 0x5c7610
paddd xmm1, xmm0
cmp eax, ecx
mov ecx, dword [esp + 4]
pshufd xmm0, xmm1, 0xee
paddd xmm0, xmm1
pshufd xmm1, xmm0, 0x55
paddd xmm1, xmm0
movd ebx, xmm1
je 0x5c77f5
lea eax, [esp + ecx*2 + 0x4c]
jmp 0x5c77a9
add esi, 2
add ebx, edx
cmp esi, eax
je 0x5c77f5
movzx ecx, word [esi]
mov edx, 1
cmp ecx, 0x80
jb 0x5c77a0
movzx edi, cx
mov edx, 2
cmp edi, 0x800
jb 0x5c77a0
add ecx, 0x2312
xor edx, edx
movzx ecx, cx
cmp ecx, 0x312
setae dl
lea edx, [edx + edx + 1]
jmp 0x5c77a0
call sub.KERNEL32.dll_GetLastError
mov ecx, dword [esp]
mov byte [ecx], 0
mov dword [ecx + 4], eax
jmp 0x5c77fe
xor ebx, ebx
mov eax, dword [esp]
mov dword [eax + 4], ebx
mov byte [eax], 4
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
call sub.KERNEL32.dll_GetLastError
mov ecx, ebx
cmp ecx, edi
jbe 0x5c75cf
push 0x6e52a8
push edi
push ecx
call fcn.005006e0
push 0x6e5298
push edi
push ecx
call fcn.004fac30
mov dword [esp + 8], str.Unexpected_error_in_MultiByteToWideChar
mov dword [esp + 0xc], 1
mov dword [esp + 0x18], 0
mov dword [esp + 0x10], str.called__Option::unwrap____on_a__None__value_rustc_07dca489ac2d933c78d3c5158e3f43beefeb02celibrarycore_srcio_borrowed_buf.rs_rustc_07dca489ac2d933c78d3c5158e3f43beefeb02celibrary_alloc_srccollections_btree_navigate.rs
mov dword [esp + 0x14], 0
lea eax, [esp + 8]
push 0x6e5278
push eax
call fcn.004faa60
push 0x6e5288
push 0x1000
push edi
call fcn.005006e0
nop word cs:[eax + eax]
nop