Function at 0x46436c
Capabilities:
Encode data using xor

Disassembly:
push edi
push esi
push ebp
push ebx
sub esp, 0x794
push 0x190
call fcn.00403564
pop ecx
mov dword [0x8725ac], eax
test eax, eax
je 0x464a1c
xor eax, eax
mov dword [0x8725b0], eax
mov dword [0x8725b4], eax
movsx edx, byte [0x8722c8]
test edx, edx
jne 0x4643c8
mov eax, dword [0x59b738]
mov edx, 0x878bf4
call fcn.00464d50
test eax, eax
je 0x4643db
mov eax, 0xffffffff
add esp, 0x794
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.00464a3c
mov ebp, 4
mov eax, dword [ebp + 0x8725c8]
add ebp, 4
test eax, eax
je 0x4643f2
call fcn.00464a3c
cmp ebp, 0x24
jle 0x4643e0
mov ebp, dword [0x8725b4]
add ebp, ebp
add ebp, ebp
push ebp
call fcn.0046f20c
mov esi, eax
mov dword [0x8725b8], esi
push ebp
call fcn.0046f20c
mov dword [0x8725bc], eax
push ebp
call fcn.0046f20c
add esp, 0xc
mov dword [0x8725c0], eax
cmp dword [0x8725b0], 0
jle 0x464a15
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 [0x8725ac]
lea eax, [esp + 0x324]
mov edx, dword [ebx + ebp*4]
call fcn.00464c24
movsx eax, byte [esp + 0x32c]
test eax, eax
je 0x4649ea
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.00471954
add esp, 0x10
lea eax, [esp + 0x324]
call fcn.0045c310
mov esi, eax
lea eax, [esp + 0x324]
call fcn.0045c310
mov ebp, eax
lea edx, [ebp + 1]
push edx
call fcn.0046f20c
mov ebx, eax
mov edi, ebx
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.00471954
add esp, 0x14
lea eax, [esp + 0x324]
mov edx, ebx
mov ecx, ebp
call fcn.00464ca0
test esi, esi
jle 0x4648cf
mov eax, 0x20
xor edx, edx
mov dword [esp + 0x360], edx
mov dword [esp + 0x358], ebx
mov dword [esp + 0x36c], ebp
mov dword [esp + 0x35c], esi
mov esi, eax
mov ebx, dword [esp + 0x354]
lea ebp, [ebx + ebx]
mov dword [esp + 0x370], ebp
mov ecx, dword [0x8725b8]
mov edx, dword [edi]
mov dword [ecx + ebx*4], edx
mov ecx, dword [0x8725bc]
mov edx, dword [esp + 0x368]
mov dword [ecx + ebx*4], edx
lea edx, [esi + 4]
mov ecx, dword [0x8725c0]
mov dword [ecx + ebx*4], edx
movzx edx, byte [edi + 4]
neg edx
movzx ebp, byte [edx + 0x6603ff]
add edi, 5
lea esi, [ebp + esi + 5]
lea ecx, [esi - 0x20]
mov edx, dword [esp + 0x36c]
cmp edx, ecx
jb 0x4649cb
lea edx, [esp + 0x37c]
push ebp
push edi
push edx
call dword [0x5b85ac]
mov byte [esp + ebp + 0x388], 0
lea edi, [edi + ebp + 0x12]
add edi, 4
add esi, 0x16
lea ecx, [esp + 0x594]
lea edx, [esp + 0x388]
push ebp
push edx
push ecx
call dword [0x5b85ac]
add esp, 0x18
mov byte [esp + ebp + 0x588], 0
test ebp, ebp
jle 0x4645f1
xor edx, edx
movsx eax, byte [esp + edx + 0x588]
neg eax
dec eax
mov byte [esp + edx + 0x588], al
inc edx
cmp edx, ebp
jl 0x4645da
test ebp, ebp
jle 0x464604
xor edx, edx
xor byte [esp + edx + 0x588], 0x36
inc edx
cmp edx, ebp
jl 0x4645f7
lea edx, [esp + 0x588]
push edx
push 0x878c20
call fcn.0046f350
add esp, 8
test eax, eax
jne 0x464624
mov byte [0x8722c0], 1
test ebx, ebx
jle 0x4648a2
xor ebp, ebp
mov dword [esp + 0x378], edi
mov dword [esp + 0x374], esi
mov esi, dword [esp + 0x370]
mov edx, dword [0x8725b8]
mov eax, dword [edx + esi*2]
cmp eax, dword [edx + ebp*4]
jne 0x46488b
mov byte [0x8725c4], 1
mov ecx, dword [0x8725bc]
mov edx, dword [ecx + ebp*4]
mov edi, dword [0x8725ac]
lea eax, [esp + 0x33c]
mov edx, dword [edi + edx*4]
call fcn.00464c24
movsx eax, byte [esp + 0x344]
test eax, eax
je 0x4649af
mov ecx, dword [0x8725c0]
mov eax, dword [ecx + ebp*4]
cdq
mov dword [esp + 4], eax
mov dword [esp + 8], edx
lea eax, [esp + 0x33c]
call fcn.00440ae8
lea eax, [esp + 0x33c]
call fcn.00440b0c
movzx eax, al
neg eax
movzx edi, byte [eax + 0x6603ff]
lea eax, [esp + 0x33c]
lea edx, [esp + 0x118]
mov ecx, edi
call fcn.00464ca0
mov byte [esp + edi + 0x118], 0
lea eax, [esp + 0x33c]
call fcn.00464cb4
lea edx, [esp + 0x37c]
lea eax, [esp + 0x118]
push eax
push edx
call fcn.0046f350
add esp, 8
test eax, eax
jne 0x46488b
lea edi, [esp + 0x37c]
xor eax, eax
mov dh, byte [edi]
mov ecx, edi
test dh, dh
je 0x464722
inc ecx
inc eax
mov dl, byte [ecx]
test dl, dl
jne 0x46471a
test eax, eax
jle 0x46473f
xor ecx, ecx
movsx edx, byte [esp + ecx + 0x37c]
neg edx
dec edx
mov byte [esp + ecx + 0x37c], dl
inc ecx
cmp ecx, eax
jl 0x464728
test eax, eax
jle 0x464752
xor edx, edx
xor byte [esp + edx + 0x37c], 0x36
inc edx
cmp edx, eax
jl 0x464745
mov ecx, dword [0x8725ac]
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.00470087
lea eax, [esp + 0x24]
push 0x878c30
push eax
call fcn.0046f350
add esp, 0x1c
test eax, eax
jne 0x46478e
mov edi, 1
jmp 0x464790
xor edi, edi
lea eax, [esp + 0x10]
push 0x878c38
push eax
call fcn.0046f350
add esp, 8
test eax, eax
jne 0x4647ab
mov edi, 1
lea eax, [esp + 0x10]
push 0x878c40
push eax
call fcn.0046f350
add esp, 8
test eax, eax
jne 0x4647c6
mov edi, 1
lea eax, [esp + 0x10]
push 0x878c48
push eax
call fcn.0046f350
add esp, 8
test eax, eax
jne 0x4647e1
mov edi, 1
lea eax, [esp + 0x10]
push 0x878c50
push eax
call fcn.0046f350
add esp, 8
test eax, eax
jne 0x4647fc
mov edi, 1
lea eax, [esp + 0x10]
push 0x878c58
push eax
call fcn.0046f350
add esp, 8
test eax, eax
jne 0x464817
mov edi, 1
lea eax, [esp + 0x10]
push 0x878c60
push eax
call fcn.0046f350
add esp, 8
test eax, eax
jne 0x464832
mov edi, 1
lea eax, [esp + 0x10]
push 0x878c68
push eax
call fcn.0046f350
add esp, 8
test eax, eax
jne 0x46484d
mov edi, 1
lea eax, [esp + 0x10]
push 0x878c70
push eax
call fcn.0046f350
add esp, 8
test eax, eax
jne 0x464868
mov edi, 1
test edi, edi
je 0x46498b
mov eax, dword [0x8725b8]
cmp dword [eax + ebp*4], 0
jne 0x464884
mov dword [eax + ebp*4], 1
jmp 0x46488b
mov dword [eax + ebp*4], 0
inc ebp
cmp ebp, ebx
jl 0x464643
mov edi, dword [esp + 0x378]
mov esi, dword [esp + 0x374]
inc ebx
mov edx, dword [esp + 0x360]
inc edx
mov dword [esp + 0x360], edx
mov ecx, dword [esp + 0x35c]
cmp edx, ecx
jl 0x464539
mov dword [esp + 0x354], ebx
mov ebx, dword [esp + 0x358]
test ebx, ebx
je 0x4648da
push ebx
call fcn.0046f79e
pop ecx
lea eax, [esp + 0x324]
call fcn.00464cb4
mov eax, dword [esp + 0x368]
inc eax
mov dword [esp + 0x368], eax
cmp eax, dword [0x8725b0]
jl 0x464447
mov edx, dword [esp + 0x354]
mov esi, dword [0x8725b8]
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 0x46493c
mov ecx, dword [eax + ebx*4 + 4]
inc ebx
cmp ecx, edi
jb 0x464933
cmp edi, dword [eax + ebp*4]
jae 0x46494a
mov ecx, dword [eax + ebp*4 - 4]
dec ebp
cmp edi, ecx
jb 0x464941
cmp ebx, ebp
jge 0x464960
mov eax, ebx
mov edx, ebp
call fcn.00464bd0
inc ebx
dec ebp
mov eax, dword [0x8725b8]
jmp 0x46492e
mov edx, ebx
mov edi, esi
dec edx
test edx, edx
jle 0x464970
xor eax, eax
call fcn.00464cc8
inc ebp
cmp edi, ebp
jle 0x46497e
mov eax, ebp
mov edx, edi
call fcn.00464cc8
xor eax, eax
add esp, 0x794
pop ebx
pop ebp
pop esi
pop edi
ret
lea eax, [esp + 0x37c]
push eax
push 0
push 0x196d6
call fcn.0046c28c
mov eax, 0xffffffff
add esp, 0x7a0
pop ebx
pop ebp
pop esi
pop edi
ret
push 0
push 0xdbfb0
call fcn.0046c2e8
mov eax, 0xffffffff
add esp, 0x79c
pop ebx
pop ebp
pop esi
pop edi
ret
push 0x878bf8
push 0x8782b0
call fcn.00409070
mov eax, 0xffffffff
add esp, 0x79c
pop ebx
pop ebp
pop esi
pop edi
ret
mov edx, dword [esp + 0x364]
mov eax, dword [0x8725ac]
push dword [eax + edx*2]
push 1
push 0xdbfb0
call fcn.0046c28c
mov eax, 0xffffffff
add esp, 0x7a0
pop ebx
pop ebp
pop esi
pop edi
ret
xor edx, edx
jmp 0x46490e
push 1
push 0x186aa
call fcn.0046c2bc
mov eax, 0xffffffff
add esp, 0x79c
pop ebx
pop ebp
pop esi
pop edi
ret