Function at 0x4646b8
Capabilities:
Encode data using xor

Disassembly:
push edi
push esi
push ebp
push ebx
sub esp, 0x790
push 0x190
call fcn.00403564
pop ecx
mov dword [0x834598], eax
test eax, eax
je 0x464d2d
xor eax, eax
mov dword [0x83459c], eax
mov dword [0x8345a0], eax
movsx edx, byte [0x8342d4]
test edx, edx
jne 0x464714
mov eax, dword [0x59b738]
mov edx, 0x83ab34
call fcn.00465080
test eax, eax
je 0x464727
mov eax, 0xffffffff
add esp, 0x790
pop ebx
pop ebp
pop esi
pop edi
ret
mov byte [esp + 0xc], 1
mov byte [esp + 0xd], 0
lea eax, [esp + 0xc]
call fcn.00464d6c
mov ebp, 4
mov eax, dword [ebp + 0x8345b4]
add ebp, 4
test eax, eax
je 0x46473e
call fcn.00464d6c
cmp ebp, 0x24
jle 0x46472c
mov ebp, dword [0x8345a0]
add ebp, ebp
add ebp, ebp
push ebp
call fcn.0046f65c
mov esi, eax
mov dword [0x8345a4], esi
push ebp
call fcn.0046f65c
mov dword [0x8345a8], eax
push ebp
call fcn.0046f65c
add esp, 0xc
mov dword [0x8345ac], eax
cmp dword [0x83459c], 0
jle 0x464d26
xor edx, edx
xor eax, eax
mov dword [esp + 0x354], edx
mov dword [esp + 0x368], eax
mov ebp, dword [esp + 0x368]
lea ecx, [ebp + ebp]
mov dword [esp + 0x364], ecx
mov ebx, dword [0x834598]
lea eax, [esp + 0x324]
mov edx, dword [ebx + ebp*4]
call fcn.00464f54
movsx eax, byte [esp + 0x32c]
test eax, eax
je 0x464cfb
mov ebx, dword [esp + 0x334]
mov ecx, dword [esp + 0x338]
add ebx, 8
adc ecx, 0
push 0
push ecx
push ebx
push dword [esp + 0x330]
call fcn.00471ee4
add esp, 0x10
lea eax, [esp + 0x324]
call fcn.00464d50
mov ebx, eax
lea eax, [esp + 0x324]
call fcn.00464d50
mov esi, eax
lea edx, [esi + 1]
push edx
call fcn.0046f65c
mov ebp, eax
mov edi, ebp
mov edx, dword [esp + 0x338]
mov eax, dword [esp + 0x33c]
add edx, 0x20
adc eax, 0
push 0
push eax
push edx
push dword [esp + 0x334]
call fcn.00471ee4
add esp, 0x14
lea eax, [esp + 0x324]
mov edx, ebp
mov ecx, esi
call fcn.00464fd0
test ebx, ebx
jle 0x464bff
mov esi, 0x20
xor ecx, ecx
mov dword [esp + 0x360], ecx
mov dword [esp + 0x358], ebp
mov dword [esp + 0x35c], ebx
mov ebx, dword [esp + 0x354]
lea ebp, [ebx + ebx]
mov dword [esp + 0x36c], ebp
mov edx, dword [0x8345a4]
mov eax, dword [edi]
mov dword [edx + ebx*4], eax
mov eax, dword [0x8345a8]
mov ecx, dword [esp + 0x368]
mov dword [eax + ebx*4], ecx
lea eax, [esi + 4]
mov edx, dword [0x8345ac]
mov dword [edx + ebx*4], eax
movzx eax, byte [edi + 4]
neg eax
movzx ebp, byte [eax + 0x66889f]
add edi, 5
add esi, 5
lea eax, [esp + 0x378]
push ebp
push edi
push eax
call dword [0x5b856c]
mov byte [esp + ebp + 0x384], 0
lea edi, [edi + ebp + 0x12]
add edi, 4
lea esi, [esi + ebp + 0x16]
lea edx, [esp + 0x590]
lea eax, [esp + 0x384]
push ebp
push eax
push edx
call dword [0x5b856c]
add esp, 0x18
mov byte [esp + ebp + 0x584], 0
test ebp, ebp
jle 0x464921
xor edx, edx
movsx eax, byte [esp + edx + 0x584]
neg eax
dec eax
mov byte [esp + edx + 0x584], al
inc edx
cmp edx, ebp
jl 0x46490a
test ebp, ebp
jle 0x464934
xor eax, eax
xor byte [esp + eax + 0x584], 0x36
inc eax
cmp eax, ebp
jl 0x464927
lea eax, [esp + 0x584]
push eax
push 0x83ab38
call fcn.0046f7a0
add esp, 8
test eax, eax
jne 0x464954
mov byte [0x8342cc], 1
test ebx, ebx
jle 0x464bd2
xor ebp, ebp
mov dword [esp + 0x374], esi
mov dword [esp + 0x370], edi
mov esi, dword [esp + 0x36c]
mov edx, dword [0x8345a4]
mov eax, dword [edx + esi*2]
cmp eax, dword [edx + ebp*4]
jne 0x464bbb
mov byte [0x8345b0], 1
mov ecx, dword [0x8345a8]
mov edx, dword [ecx + ebp*4]
mov edi, dword [0x834598]
lea eax, [esp + 0x33c]
mov edx, dword [edi + edx*4]
call fcn.00464f54
movsx eax, byte [esp + 0x344]
test eax, eax
je 0x464cdf
mov ecx, dword [0x8345ac]
mov eax, dword [ecx + ebp*4]
cdq
mov dword [esp + 4], eax
mov dword [esp + 8], edx
lea eax, [esp + 0x33c]
call fcn.004408f0
lea eax, [esp + 0x33c]
call fcn.00440914
movzx eax, al
neg eax
movzx edi, byte [eax + 0x66889f]
lea eax, [esp + 0x33c]
lea edx, [esp + 0x118]
mov ecx, edi
call fcn.00464fd0
mov byte [esp + edi + 0x118], 0
lea eax, [esp + 0x33c]
call fcn.00464fe4
lea edx, [esp + 0x378]
lea eax, [esp + 0x118]
push eax
push edx
call fcn.0046f7a0
add esp, 8
test eax, eax
jne 0x464bbb
lea edi, [esp + 0x378]
xor eax, eax
mov dh, byte [edi]
mov ecx, edi
test dh, dh
je 0x464a52
inc ecx
inc eax
mov dl, byte [ecx]
test dl, dl
jne 0x464a4a
test eax, eax
jle 0x464a6f
xor ecx, ecx
movsx edx, byte [esp + ecx + 0x378]
neg edx
dec edx
mov byte [esp + ecx + 0x378], dl
inc ecx
cmp ecx, eax
jl 0x464a58
test eax, eax
jle 0x464a82
xor edx, edx
xor byte [esp + edx + 0x378], 0x36
inc edx
cmp edx, eax
jl 0x464a75
mov ecx, dword [0x834598]
xor edx, edx
lea eax, [esp + 0x10]
push edx
push eax
push edx
push edx
mov edi, dword [esp + 0x374]
push dword [ecx + edi*2]
call fcn.00470a57
lea eax, [esp + 0x24]
push 0x83ab48
push eax
call fcn.0046f7a0
add esp, 0x1c
test eax, eax
jne 0x464abe
mov edi, 1
jmp 0x464ac0
xor edi, edi
lea eax, [esp + 0x10]
push 0x83ab50
push eax
call fcn.0046f7a0
add esp, 8
test eax, eax
jne 0x464adb
mov edi, 1
lea eax, [esp + 0x10]
push 0x83ab58
push eax
call fcn.0046f7a0
add esp, 8
test eax, eax
jne 0x464af6
mov edi, 1
lea eax, [esp + 0x10]
push 0x83ab60
push eax
call fcn.0046f7a0
add esp, 8
test eax, eax
jne 0x464b11
mov edi, 1
lea eax, [esp + 0x10]
push 0x83ab68
push eax
call fcn.0046f7a0
add esp, 8
test eax, eax
jne 0x464b2c
mov edi, 1
lea eax, [esp + 0x10]
push 0x83ab70
push eax
call fcn.0046f7a0
add esp, 8
test eax, eax
jne 0x464b47
mov edi, 1
lea eax, [esp + 0x10]
push 0x83ab78
push eax
call fcn.0046f7a0
add esp, 8
test eax, eax
jne 0x464b62
mov edi, 1
lea eax, [esp + 0x10]
push 0x83ab80
push eax
call fcn.0046f7a0
add esp, 8
test eax, eax
jne 0x464b7d
mov edi, 1
lea eax, [esp + 0x10]
push 0x83ab88
push eax
call fcn.0046f7a0
add esp, 8
test eax, eax
jne 0x464b98
mov edi, 1
test edi, edi
je 0x464cbb
mov eax, dword [0x8345a4]
cmp dword [eax + ebp*4], 0
jne 0x464bb4
mov dword [eax + ebp*4], 1
jmp 0x464bbb
mov dword [eax + ebp*4], 0
inc ebp
cmp ebp, ebx
jl 0x464973
mov esi, dword [esp + 0x374]
mov edi, dword [esp + 0x370]
inc ebx
mov eax, dword [esp + 0x360]
inc eax
mov dword [esp + 0x360], eax
mov edx, dword [esp + 0x35c]
cmp eax, edx
jl 0x46487c
mov dword [esp + 0x354], ebx
mov ebp, dword [esp + 0x358]
test ebp, ebp
je 0x464c0a
push ebp
call fcn.0046fbee
pop ecx
lea eax, [esp + 0x324]
call fcn.00464fe4
mov eax, dword [esp + 0x368]
inc eax
mov dword [esp + 0x368], eax
cmp eax, dword [0x83459c]
jl 0x464793
mov edx, dword [esp + 0x354]
mov esi, dword [0x8345a4]
lea edi, [edx - 1]
mov ebp, edi
mov ecx, edi
shr ecx, 0x1f
lea ecx, [ecx + edx - 1]
and ecx, 0xfffffffe
mov eax, dword [esi + ecx*2]
xor edx, edx
mov ecx, eax
mov eax, esi
mov esi, edi
mov edi, ecx
mov ebx, edx
cmp edi, dword [eax + ebx*4]
jbe 0x464c6c
mov ecx, dword [eax + ebx*4 + 4]
inc ebx
cmp ecx, edi
jb 0x464c63
cmp edi, dword [eax + ebp*4]
jae 0x464c7a
mov ecx, dword [eax + ebp*4 - 4]
dec ebp
cmp edi, ecx
jb 0x464c71
cmp ebx, ebp
jge 0x464c90
mov eax, ebx
mov edx, ebp
call fcn.00464f00
inc ebx
dec ebp
mov eax, dword [0x8345a4]
jmp 0x464c5e
mov edx, ebx
mov edi, esi
dec edx
test edx, edx
jle 0x464ca0
xor eax, eax
call fcn.00464ff8
inc ebp
cmp edi, ebp
jle 0x464cae
mov eax, ebp
mov edx, edi
call fcn.00464ff8
xor eax, eax
add esp, 0x790
pop ebx
pop ebp
pop esi
pop edi
ret
lea eax, [esp + 0x378]
push eax
push 0
push 0x196d6
call fcn.0046c71c
mov eax, 0xffffffff
add esp, 0x79c
pop ebx
pop ebp
pop esi
pop edi
ret
push 0
push 0xdbfb0
call fcn.0046c778
mov eax, 0xffffffff
add esp, 0x798
pop ebx
pop ebp
pop esi
pop edi
ret
mov edx, dword [esp + 0x364]
mov eax, dword [0x834598]
push dword [eax + edx*2]
push 1
push 0xdbfb0
call fcn.0046c71c
mov eax, 0xffffffff
add esp, 0x79c
pop ebx
pop ebp
pop esi
pop edi
ret
xor edx, edx
jmp 0x464c3e
push 1
push 0x186aa
call fcn.0046c74c
mov eax, 0xffffffff
add esp, 0x798
pop ebx
pop ebp
pop esi
pop edi
ret