Function at 0x46fce4
Capabilities:
Encode data using xor

Disassembly:
mov eax, 0x4c4227
call fcn.004c34c8
sub esp, 0x84
push ebx
push esi
push edi
mov dword [ebp - 0x10], esp
mov edi, ecx
mov dword [ebp - 0x20], edi
cmp dword [edi], 0
je 0x4700f7
push dword [edi]
xor ebx, ebx
push ebx
push dword [edi + 4]
call fcn.00456b86
add esp, 0xc
mov dword [ebp - 0x1c], ebx
mov dword [ebp - 0x18], 0xffffffff
mov dword [ebp - 0x24], 0x8f01ba02
xor esi, esi
inc esi
push esi
lea ecx, [ebp - 0x4c]
call fcn.0044ceac
mov dword [ebp - 0x24], 0xb389fa18
mov dword [ebp - 0x18], ebx
jmp 0x46fd51
mov ecx, dword [ebp - 0x18]
mov eax, dword [ebp - 0x4c]
mov dword [eax + ecx*4], 0xdc1094d0
inc dword [ebp - 0x18]
cmp dword [ebp - 0x18], esi
jl 0x46fd41
mov eax, dword [ebp - 0x1c]
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x28], 0x52e3
cmp dword [ebp - 0x28], 0x556a
jle 0x46fd9c
mov edi, ebx
mov esi, ebx
mov eax, edi
cdq
idiv esi
mov eax, edx
cdq
push edx
push eax
mov ecx, 0xada438
call fcn.0044cd97
inc esi
cmp esi, 0x55b1
jl 0x46fd70
inc edi
cmp edi, 0x45c6
jl 0x46fd6e
xor esi, esi
inc esi
mov edi, dword [ebp - 0x20]
mov dword [ebp - 0x24], 0xffffffff
cmp dword [ebp - 0x24], ebx
je 0x46fdf0
cmp dword [ebp - 0x18], ebx
je 0x46fdc9
mov ecx, dword [ebp - 0x18]
mov eax, dword [ebp - 0x1c]
xor edx, edx
cmp ecx, eax
setne dl
cmp edx, 0xaf9d66de
sbb eax, eax
inc eax
mov dword [ebp - 0x24], eax
mov eax, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x18]
mov eax, dword [ebp - 0x18]
mov ecx, dword [ebp - 0x24]
mov eax, dword [ebp - 0x4c]
mov dword [eax], ecx
mov eax, dword [ebp - 0x1c]
cmp dword [ebp - 0x18], ebx
jg 0x46fdec
mov eax, dword [ebp - 0x4c]
cmp dword [eax], ebx
je 0x46fdf0
mov eax, esi
jmp 0x46fdf2
mov eax, ebx
cmp dword [ebp - 0x18], eax
jne 0x46fdfa
mov eax, dword [ebp - 0x24]
mov eax, dword [ebp - 0x18]
mov ecx, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x1c]
xor edx, edx
cmp ecx, eax
setge dl
xor eax, eax
cmp edx, 0xc30bca0b
setne al
mov dword [ebp - 0x24], eax
mov eax, dword [ebp - 0x18]
xor ecx, ecx
cmp dword [ebp - 0x24], eax
setg cl
mov dword [ebp - 0x18], ecx
mov eax, dword [ebp - 0x18]
mov dword [ebp - 0x24], esi
mov dword [ebp - 4], ebx
cmp dword [ebp - 0x28], 0x4f6f
jge 0x46fe47
mov edx, 0xac2d6c
mov ecx, 0xada438
call fcn.0044e73d
or dword [ebp - 4], 0xffffffff
jmp 0x46fe73
lea ecx, [ebp - 0x4c]
call fcn.0044cf7e
push dword [edi + 4]
call fcn.004addfd
pop ecx
movdqa xmm0, xmmword [0xac9380]
movdqu xmmword [ebp - 0x78], xmm0
mov dword [ebp - 0x34], ebx
mov dword [ebp - 0x30], ebx
mov dword [ebp - 0x2c], ebx
push dword [ebp - 0x28]
lea eax, [ebp - 0x68]
push eax
lea eax, [ebp - 0x78]
push eax
push ebx
lea ecx, [ebp - 0x34]
call fcn.0044ec0e
mov dword [ebp - 0x28], 0xfffffff9
mov dword [ebp - 0x28], esi
mov dword [ebp - 0x28], 0x2541
mov eax, dword [ebp - 0x34]
mov dword [eax], ebx
push 2
lea ecx, [ebp - 0x58]
call fcn.0044ceac
mov dword [ebp - 0x28], ebx
mov dword [ebp - 0x28], esi
mov dword [ebp - 0x24], ebx
jmp 0x46fee5
mov ecx, dword [ebp - 0x24]
mov eax, dword [ebp - 0x58]
mov dword [eax + ecx*4], esi
inc dword [ebp - 0x24]
cmp dword [ebp - 0x24], 2
jl 0x46fed9
mov eax, dword [ebp - 0x58]
mov dword [eax + 4], ebx
lea ecx, [ebp - 0x58]
call fcn.0044cf7e
mov eax, dword [ebp - 0x34]
inc dword [eax]
cmp dword [eax], 0xb
jle 0x46fec4
lea ecx, [ebp - 0x34]
call fcn.0044cf7e
mov dword [edi + 4], ebx
mov dword [ebp - 0x18], 0xd1e1e87d
mov dword [ebp - 0x1c], 0xcf3
cmp dword [ebp - 0x1c], 0xd07
jle 0x46ff74
mov edi, ebx
mov eax, ebx
mov dword [ebp - 0x28], ebx
or eax, edi
cdq
push edx
push eax
lea ecx, [ebp - 0x90]
call fcn.00401993
pop ecx
pop ecx
cmp dword [eax + 0x14], 0x10
jb 0x46ff46
mov eax, dword [eax]
push eax
call fcn.004add27
pop ecx
push ebx
push esi
lea ecx, [ebp - 0x90]
call fcn.0044d288
mov eax, dword [ebp - 0x28]
inc eax
mov dword [ebp - 0x28], eax
cmp eax, 0x39df
jl 0x46ff2c
inc edi
cmp edi, 0x588d
jl 0x46ff27
mov edi, dword [ebp - 0x20]
mov dword [ebp - 0x24], esi
mov dword [ebp - 4], 2
cmp dword [ebp - 0x1c], 0xb05
jge 0x46ff92
push 0xac2d80
call fcn.004add27
pop ecx
or dword [ebp - 4], 0xffffffff
jmp 0x46ffbe
mov dword [ebp - 0x24], ebx
jmp 0x46ffcd
mov eax, dword [ebp - 0x24]
mov dword [ebp + eax*4 - 0x40], esi
inc dword [ebp - 0x24]
cmp dword [ebp - 0x24], 3
jl 0x46ffc3
mov dword [ebp - 0x24], 0x7522
cmp dword [ebp - 0x24], 0x78f3
jle 0x470020
mov esi, ebx
mov edi, esi
mov dword [ebp - 0x28], 0x7ad9
mov dword [ebp - 0x1c], ebx
mov eax, edi
xor eax, ebx
cdq
push edx
push eax
mov ecx, 0xada438
call fcn.0044cd97
inc ebx
cmp ebx, 0x4b14
jl 0x46fff1
dec edi
dec dword [ebp - 0x28]
push 0
pop ebx
jne 0x46ffee
inc esi
cmp esi, 0x687a
jl 0x46ffe5
mov edi, dword [ebp - 0x20]
mov byte [ebp - 0x11], bl
mov dword [ebp - 4], 4
cmp dword [ebp - 0x24], 0x7222
jge 0x470042
mov edx, 0xac2da0
mov ecx, 0xada438
call fcn.0044e73d
or dword [ebp - 4], 0xffffffff
jmp 0x47006b
cmp byte [ebp - 0x11], 0
je 0x470088
push ebx
push ebx
push 0x4c9
push 0x1075
push 0x2586
call dword [0xadd458]
mov dword [ebp - 0x18], ebx
cmp dword [ebp - 0x18], 2
jg 0x4700f5
push 0xfffffffffffffffc
pop edx
mov dword [ebp - 0x68], edx
mov dword [ebp - 0x64], edx
mov dword [ebp - 0x60], edx
mov dword [ebp - 0x5c], edx
mov dword [ebp - 0x28], 0x8407374f
mov eax, dword [ebp - 0x18]
mov eax, dword [ebp + eax*4 - 0x40]
mov eax, dword [ebp - 0x18]
mov eax, dword [ebp - 0x18]
mov eax, dword [ebp + eax*4 - 0x40]
mov eax, dword [ebp - 0x18]
mov eax, dword [ebp + eax*4 - 0x40]
mov eax, dword [ebp - 0x18]
cmp dword [ebp - 0x60], 0xce96b779
sbb eax, eax
neg eax
mov dword [ebp - 0x24], eax
mov eax, dword [ebp - 0x24]
mov eax, dword [ebp - 0x40]
mov eax, dword [ebp - 0x18]
mov eax, dword [ebp - 0x60]
mov eax, dword [ebp - 0x28]
mov ecx, dword [ebp - 0x64]
mov eax, dword [ebp - 0x18]
mov dword [ebp + eax*4 - 0x40], ecx
mov eax, dword [ebp - 0x24]
inc dword [ebp - 0x18]
cmp dword [ebp - 0x18], 2
jle 0x470094
mov dword [edi], ebx
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret