Function at 0x46b4d0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
mov ecx, 4
push 0
push 0
dec ecx
jne 0x46b4d8
push ecx
push ebx
push esi
push edi
xor eax, eax
push ebp
push 0x46b921
push dword fs:[eax]
mov dword fs:[eax], esp
mov dl, 1
mov eax, dword [0x4318f0]
call fcn.004319f0
mov ebx, eax
mov edx, 0x80000002
mov eax, ebx
call fcn.00431a90
mov cl, 1
mov edx, 0x46b938
mov eax, ebx
call fcn.00431bd0
mov edx, 0x46b958
mov eax, ebx
call fcn.00432014
test al, al
je 0x46b53a
mov edx, 0x46b958
mov eax, ebx
call fcn.00431e24
mov dword [0x4b0fb4], eax
lea ecx, [ebp - 4]
mov edx, 0x46b96c
mov eax, ebx
call fcn.00431d98
mov edx, dword [ebp - 4]
mov eax, 0x4b983c
call fcn.004045f8
mov dl, 1
mov eax, dword [0x4132d0]
call fcn.00403764
mov dword [0x4b9848], eax
mov edx, dword [0x4b983c]
mov eax, dword [0x4b9848]
mov ecx, dword [eax]
call dword [ecx + 0x2c]
cmp dword [0x4b0fb4], 3
jne 0x46b5b6
mov eax, dword [0x4b9848]
mov edx, dword [eax]
call dword [edx + 0x14]
test eax, eax
jne 0x46b59a
mov dword [0x4b0fb4], 1
jmp 0x46b5b6
lea ecx, [ebp - 8]
xor edx, edx
mov eax, dword [0x4b9848]
mov esi, dword [eax]
call dword [esi + 0xc]
mov edx, dword [ebp - 8]
mov eax, 0x4b983c
call fcn.004045f8
lea ecx, [ebp - 0xc]
mov edx, 0x46b97c
mov eax, ebx
call fcn.00431d98
mov edx, dword [ebp - 0xc]
mov eax, 0x4b9838
call fcn.004045f8
mov dl, 1
mov eax, dword [0x4132d0]
call fcn.00403764
mov dword [0x4b9844], eax
mov edx, dword [0x4b9838]
mov eax, dword [0x4b9844]
call fcn.00417134
mov edx, 0x46b98c
mov eax, ebx
call fcn.00432014
test al, al
je 0x46b614
mov edx, 0x46b98c
mov eax, ebx
call fcn.00431e60
mov byte [0x4b0fc4], al
mov edx, 0x46b9a0
mov eax, ebx
call fcn.00432014
test al, al
je 0x46b635
mov edx, 0x46b9a0
mov eax, ebx
call fcn.00431e24
mov dword [0x4b0fa8], eax
mov edx, 0x46b9b4
mov eax, ebx
call fcn.00432014
test al, al
je 0x46b656
mov edx, 0x46b9b4
mov eax, ebx
call fcn.00431e60
mov byte [0x4b0fc8], al
mov edx, 0x46b9c8
mov eax, ebx
call fcn.00432014
test al, al
je 0x46b687
mov edx, 0x46b9c8
mov eax, ebx
call fcn.00431e24
mov dword [ebp - 0x10], eax
fild dword [ebp - 0x10]
fdiv dword [0x46b9d4]
fstp dword [0x4b982c]
wait
jmp 0x46b691
mov dword [0x4b982c], 0x3f800000
mov edx, 0x46b9e0
mov eax, ebx
call fcn.00432014
test al, al
je 0x46b6b2
mov edx, 0x46b9e0
mov eax, ebx
call fcn.00431e24
mov dword [0x4b0fc0], eax
mov eax, dword [0x4b0fc0]
sub eax, 1
jb 0x46b6c3
je 0x46b6cf
dec eax
je 0x46b6db
jmp 0x46b6e5
mov dword [0x4b9830], 0x64
jmp 0x46b6e5
mov dword [0x4b9830], 0x4b
jmp 0x46b6e5
mov dword [0x4b9830], 0x96
mov edx, 0x46b9f0
mov eax, ebx
call fcn.00432014
test al, al
je 0x46b706
mov edx, 0x46b9f0
mov eax, ebx
call fcn.00431e24
mov dword [0x4b0fbc], eax
lea ecx, [ebp - 0x14]
mov edx, 0x46ba00
mov eax, ebx
call fcn.00431d98
mov edx, dword [ebp - 0x14]
mov eax, 0x4b9840
call fcn.004045f8
cmp dword [0x4b9840], 0
je 0x46b735
mov eax, dword [0x4b9840]
cmp byte [eax], 0x44
jne 0x46b73e
mov byte [0x4b0fb8], 1
jmp 0x46b745
mov byte [0x4b0fb8], 0
lea ecx, [ebp - 0x18]
mov edx, 0x46ba10
mov eax, ebx
call fcn.00431d98
mov edx, dword [ebp - 0x18]
mov eax, 0x4b9860
call fcn.004045f8
mov eax, 0x4b9864
mov edx, 0x14
call fcn.00404bf0
push 0x19
mov eax, 0x4b9864
call fcn.00404abc
mov ecx, eax
mov edx, 0x46ba20
mov eax, ebx
call fcn.00431ed4
mov eax, dword [0x4b9864]
call fcn.00404864
mov edi, eax
test edi, edi
jle 0x46b7c7
mov esi, 1
mov eax, dword [0x4b0fd4]
call fcn.00408b90
mov edx, dword [0x4b9864]
xor al, byte [edx + esi - 1]
push eax
mov eax, 0x4b9864
call fcn.00404abc
pop edx
mov byte [eax + esi - 1], dl
inc esi
dec edi
jne 0x46b79f
lea edx, [ebp - 0x1c]
mov eax, dword [0x4b9860]
call fcn.0046c0ec
mov edx, dword [ebp - 0x1c]
mov eax, 0x4b9854
call fcn.004045f8
lea ecx, [ebp - 0x20]
mov edx, 2
mov eax, dword [0x4b9864]
call fcn.0046c1a8
mov edx, dword [ebp - 0x20]
mov eax, 0x4b9858
call fcn.004045f8
lea ecx, [ebp - 0x24]
mov edx, 3
mov eax, dword [0x4b9864]
call fcn.0046c1a8
mov edx, dword [ebp - 0x24]
mov eax, 0x4b985c
call fcn.004045f8
mov eax, dword [0x4b985c]
push eax
mov ecx, dword [0x4b9858]
mov edx, dword [0x4b9854]
mov eax, dword [0x4b0fd4]
call fcn.0046bdf8
test al, al
je 0x46b848
mov byte [0x4b0fd8], 1
jmp 0x46b86c
mov eax, dword [0x4b9844]
mov edx, dword [eax]
call dword [edx + 0x14]
dec eax
jle 0x46b86c
mov eax, dword [0x4b9844]
mov edx, dword [eax]
call dword [edx + 0x14]
mov esi, eax
dec esi
cmp esi, 1
jl 0x46b86c
dec esi
test esi, esi
jne 0x46b867
mov edx, 0x46ba30
mov eax, ebx
call fcn.00432014
test al, al
je 0x46b891
mov edx, 0x46ba30
mov eax, ebx
call fcn.00431e8c
fstp qword [0x4b9868]
wait
jmp 0x46b8a9
call fcn.0040a5d0
add esp, 0xfffffff8
fstp qword [esp]
wait
mov edx, 0x46ba30
mov eax, ebx
call fcn.00431e78
mov edx, 0x46ba40
mov eax, ebx
call fcn.00432014
test al, al
je 0x46b8ca
mov edx, 0x46ba40
mov eax, ebx
call fcn.00431e60
mov byte [0x4b0fcc], al
mov edx, 0x46ba54
mov eax, ebx
call fcn.00432014
test al, al
je 0x46b8eb
mov edx, 0x46ba54
mov eax, ebx
call fcn.00431e24
mov dword [0x4b0fd0], eax
mov eax, ebx
call fcn.00431a60
mov eax, ebx
call fcn.00403794
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x46b928
lea eax, [ebp - 0x24]
mov edx, 5
call fcn.004045c8
lea eax, [ebp - 0xc]
mov edx, 3
call fcn.004045c8
ret