Function at 0x4758c0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x4c
imul eax, dword [ebp + 8], 0x29
push ebx
push esi
push edi
mov edi, edx
movsx ecx, byte [eax + edi + 0x4ef288]
lea esi, [edi + 8]
movsx eax, byte [eax + edi + 0x4ef1d8]
imul esi, edi
mov dword [ebp - 4], ecx
mov dword [ebp - 8], eax
add esi, 4
shl esi, 4
mov ecx, esi
cmp edi, 2
jl 0x475952
mov eax, 0x24924925
mov ecx, edi
mul edi
sub ecx, edx
shr ecx, 1
add ecx, edx
shr ecx, 2
add ecx, 2
imul eax, ecx, 0x19
sub eax, 0xa
imul eax, ecx
mov ecx, esi
sub ecx, eax
add ecx, 0x37
cmp edi, 7
jl 0x475952
lea eax, [ecx - 0x24]
cdq
and edx, 7
lea ebx, [edx + eax]
mov eax, 0x24924925
mul edi
sar ebx, 3
sub edi, edx
shr edi, 1
add edi, edx
shr edi, 2
add edi, 2
imul eax, edi, 0x19
sub eax, 0xa
imul eax, edi
sub esi, eax
add esi, 0x37
jmp 0x47598b
mov eax, ecx
cdq
and edx, 7
lea ebx, [edx + eax]
sar ebx, 3
cmp edi, 2
jl 0x47598e
mov eax, 0x24924925
mov ecx, edi
mul edi
sub ecx, edx
shr ecx, 1
add ecx, edx
shr ecx, 2
add ecx, 2
imul eax, ecx, 0x19
sub eax, 0xa
imul eax, ecx
sub esi, eax
add esi, 0x37
cmp edi, 7
jl 0x47598e
sub esi, 0x24
mov edi, dword [ebp - 8]
mov eax, esi
cdq
mov ecx, edi
imul ecx, dword [ebp - 4]
and edx, 7
add eax, edx
mov esi, dword [ebp - 4]
sar eax, 3
push edi
push 0
sub eax, ecx
mov dword [ebp - 0x28], eax
mov eax, ebx
cdq
idiv dword [ebp - 4]
sub eax, edi
sub esi, edx
mov dword [ebp - 0x20], eax
lea eax, [ebp - 0x4c]
push eax
mov dword [ebp - 0x14], esi
call sub.VCRUNTIME140.dll_memset
add esp, 0xc
mov byte [ebp + edi - 0x4d], 1
mov bh, 1
test edi, edi
jle 0x475a63
mov eax, 1
mov dword [ebp - 0x10], edi
lea ecx, [ebp - 0x4c]
sub eax, ecx
mov dword [ebp - 0x24], eax
xor edi, edi
nop word [eax + eax]
lea esi, [ebp - 0x4c]
xor bl, bl
add esi, edi
mov eax, 7
mov dword [ebp + 8], eax
mov dh, byte [esi]
mov cl, al
mov dl, bh
shr dl, cl
and dl, 1
movzx eax, dh
movzx ecx, dl
imul ecx, eax
mov al, bl
shr al, 7
add bl, bl
movzx eax, al
imul eax, eax, 0x1d
xor cl, al
mov eax, dword [ebp + 8]
xor bl, cl
sub eax, 1
mov dword [ebp + 8], eax
jns 0x475a01
mov eax, dword [ebp - 0x24]
mov ecx, dword [ebp - 8]
add eax, esi
mov byte [esi], bl
cmp eax, ecx
jge 0x475a44
mov al, byte [esi + 1]
xor al, bl
mov byte [esi], al
inc edi
cmp edi, ecx
jl 0x4759f0
mov al, bh
add bh, bh
shr al, 7
movzx eax, al
imul eax, eax, 0x1d
xor bh, al
sub dword [ebp - 0x10], 1
jne 0x4759e8
mov esi, dword [ebp - 0x14]
mov edi, ecx
xor ecx, ecx
mov dword [ebp - 0xc], 0x593bc8
mov dword [ebp - 0x10], ecx
cmp dword [ebp - 4], ecx
jle 0x475ba7
mov eax, dword [ebp - 0x28]
lea ebx, [eax + 0x593bc8]
mov dword [ebp - 0x24], ebx
xor eax, eax
cmp ecx, esi
push edi
setge al
add eax, dword [ebp - 0x20]
push 0
push ebx
mov dword [ebp - 0x18], eax
call sub.VCRUNTIME140.dll_memset
mov esi, dword [ebp - 0x18]
xor eax, eax
add esp, 0xc
mov dword [ebp - 0x1c], eax
test esi, esi
jle 0x475b6e
lea edx, [edi - 1]
mov ecx, dword [ebp - 0xc]
push edx
mov al, byte [eax + ecx]
xor al, byte [ebx]
mov byte [ebp + 0xb], al
lea eax, [ebx + 1]
push eax
push ebx
call sub.VCRUNTIME140.dll_memmove
add esp, 0xc
mov byte [ebx + edi - 1], 0
test edi, edi
jle 0x475b2d
lea ecx, [ebp - 0x4c]
mov esi, ebx
sub ecx, ebx
mov dword [ebp - 0x2c], ecx
nop dword [eax]
mov ah, byte [ecx + esi]
xor al, al
mov ebx, 7
nop word [eax + eax]
mov dl, byte [ebp + 0xb]
mov cl, bl
shr dl, cl
and dl, 1
movzx ecx, ah
movzx edx, dl
imul edx, ecx
mov cl, al
shr cl, 7
add al, al
movzx ecx, cl
imul ecx, ecx, 0x1d
xor dl, cl
xor al, dl
sub ebx, 1
jns 0x475af0
xor byte [esi], al
inc esi
mov ecx, dword [ebp - 0x2c]
sub edi, 1
jne 0x475ae0
mov edi, dword [ebp - 8]
mov ebx, dword [ebp - 0x24]
mov esi, dword [ebp - 0x18]
mov eax, dword [ebp - 0x1c]
lea edx, [edi - 1]
inc eax
mov dword [ebp - 0x1c], eax
cmp eax, esi
jl 0x475ab0
mov eax, dword [ebp - 0x10]
xor edx, edx
mov ebx, dword [ebp - 0xc]
mov edi, dword [ebp - 0x14]
lea ecx, [eax + 0x5928e8]
cmp edx, dword [ebp - 0x20]
jne 0x475b57
sub ecx, edi
mov al, byte [edx + ebx]
inc edx
mov byte [ecx], al
mov eax, dword [ebp - 4]
add ecx, eax
cmp edx, esi
jl 0x475b50
mov edi, dword [ebp - 8]
mov ebx, dword [ebp - 0x24]
jmp 0x475b71
mov eax, dword [ebp - 4]
xor ecx, ecx
test edi, edi
jle 0x475b92
mov edx, dword [ebp - 0x28]
lea edx, [edx + 0x5928e8]
add edx, dword [ebp - 0x10]
mov al, byte [ecx + ebx]
inc ecx
mov byte [edx], al
mov eax, dword [ebp - 4]
add edx, eax
cmp ecx, edi
jl 0x475b83
mov ecx, dword [ebp - 0x10]
add dword [ebp - 0xc], esi
inc ecx
mov esi, dword [ebp - 0x14]
mov dword [ebp - 0x10], ecx
cmp ecx, eax
jl 0x475a84
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret