Function at 0x643460
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffff88
push ebx
push esi
push edi
xor ebx, ebx
mov dword [ebp - 0x78], ebx
mov dword [ebp - 0x74], ebx
mov dword [ebp - 0x70], ebx
mov dword [ebp - 0x6c], ebx
mov dword [ebp - 8], ebx
mov dword [ebp - 0xc], ebx
mov dword [ebp - 0x10], ebx
mov dword [ebp - 0x14], edx
mov dword [ebp - 4], eax
mov eax, dword [ebp - 4]
call fcn.0040a3f4
xor eax, eax
push ebp
push 0x643860
push dword fs:[eax]
mov dword fs:[eax], esp
lea edx, [ebp - 0x6c]
mov eax, dword [ebp - 4]
call fcn.00425f80
mov eax, dword [ebp - 0x6c]
lea edx, [ebp - 8]
call fcn.006433b4
movzx eax, byte [0x643870]
push eax
lea eax, [ebp - 0x70]
push eax
mov ecx, 0x643880
mov edx, 0x643890
mov eax, dword [ebp - 8]
call fcn.0042f31c
mov edx, dword [ebp - 0x70]
lea eax, [ebp - 8]
call fcn.0040a738
movzx eax, byte [0x643870]
push eax
lea eax, [ebp - 0x74]
push eax
mov ecx, 0x6438a0
mov edx, 0x6438b0
mov eax, dword [ebp - 8]
call fcn.0042f31c
mov edx, dword [ebp - 0x74]
lea eax, [ebp - 8]
call fcn.0040a738
mov eax, dword [ebp - 8]
test eax, eax
je 0x643510
sub eax, 4
mov eax, dword [eax]
cmp eax, 0x60
jne 0x64382b
lea edx, [ebp - 0x68]
mov eax, dword [ebp - 8]
call fcn.00643120
xor esi, esi
lea eax, [ebp - 0x68]
mov edx, esi
inc edx
xor byte [eax], dl
inc esi
inc eax
cmp esi, 0x48
jne 0x643529
lea eax, [ebp - 0x68]
call fcn.00643230
lea eax, [ebp - 8]
call fcn.0040a310
xor ebx, ebx
mov byte [ebp - 0x15], 0
xor esi, esi
lea edi, [ebp - 0x68]
movzx eax, byte [ebp - 0x15]
add al, byte [edi]
and al, 0xff
mov byte [ebp - 0x15], al
mov eax, esi
add al, 0x3a
xor byte [edi], al
add bl, byte [edi]
and bl, 0xff
lea eax, [ebp - 0x78]
movzx edx, byte [edi]
call fcn.0040b400
mov edx, dword [ebp - 0x78]
lea eax, [ebp - 8]
call fcn.0040b5ec
inc esi
inc edi
cmp esi, 0x46
jne 0x643550
cmp bl, byte [ebp - 0x22]
je 0x64359a
mov eax, dword [ebp + 8]
mov edx, 0x6438c0
call fcn.0040a6f0
jmp 0x643838
movzx eax, byte [ebp - 0x15]
cmp al, byte [ebp - 0x21]
je 0x6435b5
mov eax, dword [ebp + 8]
mov edx, 0x6438c0
call fcn.0040a6f0
jmp 0x643838
mov eax, dword [ebp - 8]
test eax, eax
je 0x6435c1
sub eax, 4
mov eax, dword [eax]
cmp eax, 0x3c
jle 0x64381c
lea eax, [ebp - 0xc]
push eax
mov ecx, 2
mov edx, 0x3b
mov eax, dword [ebp - 8]
call fcn.0040b7b4
or edx, 0xffffffff
mov eax, dword [ebp - 0xc]
call fcn.00426d64
mov ebx, eax
mov eax, dword [ebp + 8]
push eax
mov ecx, ebx
mov edx, 1
mov eax, dword [ebp - 8]
call fcn.0040b7b4
lea eax, [ebp - 0x10]
push eax
mov ecx, 0xa
mov edx, 0x3d
mov eax, dword [ebp - 8]
call fcn.0040b7b4
push 0xffffffffffffffff
push 0xffffffffffffffff
mov eax, dword [ebp - 0x10]
call fcn.00426de0
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x1c], edx
cmp dword [ebp - 0x1c], 0
jne 0x64363a
cmp dword [ebp - 0x20], 0
jbe 0x64380d
jmp 0x643640
jle 0x64380d
push 0
push 2
mov eax, dword [ebp - 0x20]
mov edx, dword [ebp - 0x1c]
call fcn.0040c578
cmp edx, 0
jne 0x64371c
cmp eax, 0
jne 0x64371c
push 0
push 3
mov eax, dword [ebp - 0x20]
mov edx, dword [ebp - 0x1c]
call fcn.0040c578
cmp edx, 0
jne 0x64371c
cmp eax, 0
jne 0x64371c
push 0
push 4
mov eax, dword [ebp - 0x20]
mov edx, dword [ebp - 0x1c]
call fcn.0040c578
cmp edx, 0
jne 0x64371c
cmp eax, 0
jne 0x64371c
push 0
push 7
mov eax, dword [ebp - 0x20]
mov edx, dword [ebp - 0x1c]
call fcn.0040c578
cmp edx, 0
jne 0x64371c
cmp eax, 0
jne 0x64371c
push 0
push 0xd
mov eax, dword [ebp - 0x20]
mov edx, dword [ebp - 0x1c]
call fcn.0040c578
cmp edx, 0
jne 0x64371c
cmp eax, 0
jne 0x64371c
push 0
push 0x15
mov eax, dword [ebp - 0x20]
mov edx, dword [ebp - 0x1c]
call fcn.0040c578
cmp edx, 0
jne 0x64371c
cmp eax, 0
jne 0x64371c
push 0
push 0x2b
mov eax, dword [ebp - 0x20]
mov edx, dword [ebp - 0x1c]
call fcn.0040c578
cmp edx, 0
jne 0x64371c
cmp eax, 0
jne 0x64371c
push 0
push 0x11
mov eax, dword [ebp - 0x20]
mov edx, dword [ebp - 0x1c]
call fcn.0040c578
cmp edx, 0
jne 0x64371a
cmp eax, 0
je 0x643720
xor ebx, ebx
jmp 0x643722
mov bl, 1
test bl, bl
jne 0x6437fa
push 0
push 2
mov eax, dword [ebp - 0x20]
mov edx, dword [ebp - 0x1c]
call fcn.0040c578
cmp edx, 0
jne 0x6437e5
cmp eax, 0
jne 0x6437e5
push 0
push 3
mov eax, dword [ebp - 0x20]
mov edx, dword [ebp - 0x1c]
call fcn.0040c578
cmp edx, 0
jne 0x6437e5
cmp eax, 0
jne 0x6437e5
push 0
push 4
mov eax, dword [ebp - 0x20]
mov edx, dword [ebp - 0x1c]
call fcn.0040c578
cmp edx, 0
jne 0x6437e5
cmp eax, 0
jne 0x6437e5
push 0
push 7
mov eax, dword [ebp - 0x20]
mov edx, dword [ebp - 0x1c]
call fcn.0040c578
cmp edx, 0
jne 0x6437e5
cmp eax, 0
jne 0x6437e5
push 0
push 0xd
mov eax, dword [ebp - 0x20]
mov edx, dword [ebp - 0x1c]
call fcn.0040c578
cmp edx, 0
jne 0x6437e5
cmp eax, 0
jne 0x6437e5
push 0
push 0x15
mov eax, dword [ebp - 0x20]
mov edx, dword [ebp - 0x1c]
call fcn.0040c578
cmp edx, 0
jne 0x6437e5
cmp eax, 0
jne 0x6437e5
push 0
push 0x11
mov eax, dword [ebp - 0x20]
mov edx, dword [ebp - 0x1c]
call fcn.0040c578
cmp edx, 0
jne 0x6437e3
cmp eax, 0
je 0x6437e9
xor eax, eax
jmp 0x6437eb
mov al, 1
mov edx, dword [ebp - 0x14]
mov byte [edx], al
mov eax, dword [ebp - 0x14]
cmp byte [eax], 0
je 0x6437fa
mov bl, 1
test bl, bl
jne 0x643838
mov eax, dword [ebp + 8]
mov edx, 0x6438c0
call fcn.0040a6f0
jmp 0x643838
mov eax, dword [ebp + 8]
mov edx, 0x6438c0
call fcn.0040a6f0
jmp 0x643838
mov eax, dword [ebp + 8]
mov edx, 0x6438c0
call fcn.0040a6f0
jmp 0x643838
mov eax, dword [ebp + 8]
mov edx, 0x6438c0
call fcn.0040a6f0
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x643867
lea eax, [ebp - 0x78]
mov edx, 4
call fcn.0040a370
lea eax, [ebp - 0x10]
mov edx, 4
call fcn.0040a370
ret