Function at 0x46ec80
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x5b8983
mov eax, dword fs:[0]
push eax
sub esp, 0x104
mov eax, dword [0x68cc00]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov ebx, dword [ebp + 0x14]
mov eax, dword [ebp + 8]
test ebx, ebx
je 0x46ef7a
xor esi, esi
lea edi, [ebp - 0x11]
test eax, eax
cmovne esi, dword [ebp + 0xc]
cmovne edi, eax
mov eax, dword [ebp + 0x10]
cmp eax, 1
je 0x46ef6f
cmp eax, 5
jne 0x46ed02
lea ecx, [ebp - 0x70]
call fcn.004af310
push ebx
push esi
push edi
lea ecx, [ebp - 0x70]
mov dword [ebp - 4], 0
call fcn.004afb50
lea ecx, [ebp - 0x70]
call fcn.004af350
jmp 0x46ef7a
cmp eax, 7
jne 0x46ed14
push ebx
push esi
push edi
call fcn.004ead10
jmp 0x46ef77
cmp eax, 2
jne 0x46ed26
push ebx
push esi
push edi
call fcn.004eb440
jmp 0x46ef77
cmp eax, 3
jne 0x46ed38
push ebx
push esi
push edi
call fcn.004ebb70
jmp 0x46ef77
cmp eax, 0x14
jne 0x46ed4a
push ebx
push esi
push edi
call fcn.004f7a40
jmp 0x46ef77
cmp eax, 0x15
jne 0x46ed5c
push ebx
push esi
push edi
call fcn.004f7b50
jmp 0x46ef77
cmp eax, 0x16
jne 0x46ed6e
push ebx
push esi
push edi
call fcn.004f7c60
jmp 0x46ef77
cmp eax, 0x13
jne 0x46ed80
push ebx
push esi
push edi
call fcn.004f7930
jmp 0x46ef77
cmp eax, 0xf
je 0x46ef6f
cmp eax, 0x1d
jne 0x46edb1
xor al, al
xor edx, edx
test esi, esi
je 0x46edaa
movzx ecx, byte [edx + edi]
inc edx
movzx eax, al
xor ecx, eax
mov al, byte [ecx + 0x689988]
cmp edx, esi
jb 0x46ed96
mov byte [ebx], al
jmp 0x46ef7a
cmp eax, 0x1c
jne 0x46ee1b
push 0
push esi
push edi
call fcn.00488580
add esp, 0xc
mov edx, eax
cmp byte [0x67f8b1], 0
mov ecx, eax
je 0x46edf4
shr edx, 0x18
mov dword [ebp - 0x110], eax
shr ecx, 8
shr eax, 0x10
mov byte [ebx], dl
mov byte [ebx + 1], al
mov eax, dword [ebp - 0x110]
mov byte [ebx + 2], cl
mov byte [ebx + 3], al
jmp 0x46ef7a
shr ecx, 0x18
mov dword [ebp - 0x110], ecx
mov ecx, eax
shr ecx, 0x10
shr eax, 8
mov byte [ebx], dl
mov byte [ebx + 1], al
mov eax, dword [ebp - 0x110]
mov byte [ebx + 2], cl
mov byte [ebx + 3], al
jmp 0x46ef7a
cmp eax, 4
jne 0x46ee47
lea ecx, [ebp - 0x6c]
call fcn.004e3890
push ebx
push esi
push edi
lea ecx, [ebp - 0x6c]
mov dword [ebp - 4], 1
call fcn.004e3cc0
lea ecx, [ebp - 0x6c]
call fcn.004e38a0
jmp 0x46ef7a
cmp eax, 8
jne 0x46ee83
lea ecx, [ebp - 0x70]
call fcn.004e91b0
lea ecx, [ebp - 0x70]
mov dword [ebp - 4], 2
call fcn.004aff60
push esi
push edi
lea ecx, [ebp - 0x70]
call fcn.004e9a00
push ebx
lea ecx, [ebp - 0x70]
call fcn.004e9370
lea ecx, [ebp - 0x70]
call fcn.004e91f0
jmp 0x46ef7a
cmp eax, 0x1e
jne 0x46ee95
push ebx
push esi
push edi
call fcn.004ea6e0
jmp 0x46ef77
cmp eax, 9
jne 0x46eec1
lea ecx, [ebp - 0x7c]
call fcn.004e3e00
push ebx
push esi
push edi
lea ecx, [ebp - 0x7c]
mov dword [ebp - 4], 3
call fcn.004e4e60
lea ecx, [ebp - 0x7c]
call fcn.004e3e20
jmp 0x46ef7a
cmp eax, 0xa
jne 0x46eeed
lea ecx, [ebp - 0x7c]
call fcn.004e4ec0
push ebx
push esi
push edi
lea ecx, [ebp - 0x7c]
mov dword [ebp - 4], 4
call fcn.004e6650
lea ecx, [ebp - 0x7c]
call fcn.004e4ee0
jmp 0x46ef7a
cmp eax, 0xb
jne 0x46ef1f
lea ecx, [ebp - 0x8c]
call fcn.004e66b0
push ebx
push esi
push edi
lea ecx, [ebp - 0x8c]
mov dword [ebp - 4], 5
call fcn.004e7830
lea ecx, [ebp - 0x8c]
call fcn.004e66d0
jmp 0x46ef7a
cmp eax, 0xc
jne 0x46ef51
lea ecx, [ebp - 0x10c]
call fcn.004e78a0
push ebx
push esi
push edi
lea ecx, [ebp - 0x10c]
mov dword [ebp - 4], 6
call fcn.004e9180
lea ecx, [ebp - 0x10c]
call fcn.004e78c0
jmp 0x46ef7a
cmp eax, 0x11
jne 0x46ef60
push ebx
push esi
push edi
call fcn.004ebd90
jmp 0x46ef77
cmp eax, 0x12
jne 0x46ef6f
push ebx
push esi
push edi
call fcn.004ebe90
jmp 0x46ef77
push ebx
push esi
push edi
call fcn.004e35a0
add esp, 0xc
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.005af5a8
mov esp, ebp
pop ebp
ret