Function at 0x4a6e3c
Capabilities:
Encode data using xor
Generate random numbers using the delphi lcg

Disassembly:
push ebx
push esi
push edi
push ebp
mov ebx, eax
mov edi, ecx
dec edi
test edi, edi
jl 0x4a6eb2
inc edi
mov esi, edx
mov ax, word [ebx + 0xc]
or ax, 2
movzx edx, ax
xor ax, 1
movzx eax, ax
imul edx, eax
shr edx, 8
xor byte [esi], dl
mov edx, dword [ebx + 4]
mov al, byte [esi]
call fcn.00492b14
mov ebp, eax
mov dword [ebx + 4], ebp
and ebp, 0xff
add dword [ebx + 8], ebp
imul eax, dword [ebx + 8], 0x8088405
inc eax
mov dword [ebx + 8], eax
shr eax, 0x18
xor al, byte [ebx + 0xc]
and eax, 0xff
mov edx, dword [0x4db6d8]
mov eax, dword [edx + eax*4]
mov edx, dword [ebx + 0xc]
shr edx, 8
and edx, 0xffffff
xor eax, edx
mov dword [ebx + 0xc], eax
inc esi
dec edi
jne 0x4a6e4c
pop ebp
pop edi
pop esi
pop ebx
ret

Function at 0x4a6f44
Capabilities:
Encode data using xor

Disassembly:
push ebx
push esi
push edi
add esp, 0xfffffff8
mov edi, eax
mov eax, dword [edi + 0x38]
call fcn.004204f4
mov dword [esp + 4], eax
xor ebx, ebx
mov byte [esp], 0
jmp 0x4a6fdb
mov eax, edi
call fcn.004a6f00
xor ecx, ecx
mov edx, dword [esp + 4]
mov eax, dword [edi + 0x38]
mov ebx, dword [eax]
call dword [ebx + 0x14]
lea edx, [edi + 0x10]
mov ecx, 0xc
mov eax, dword [edi + 0x38]
mov ebx, dword [eax]
call dword [ebx + 0xc]
xor esi, esi
mov eax, edi
call fcn.004a6eb8
xor byte [edi + esi + 0x10], al
lea edx, [edi + 4]
mov al, byte [edi + esi + 0x10]
call fcn.004a7008
inc esi
cmp esi, 0xc
jne 0x4a6f87
cmp byte [edi + 0x20], 0
je 0x4a6fb5
mov al, byte [edi + 0x1b]
cmp al, byte [edi + 0x1f]
sete bl
jmp 0x4a6fcb
mov al, byte [edi + 0x1b]
cmp al, byte [edi + 0x1f]
jne 0x4a6fc5
mov al, byte [edi + 0x1a]
cmp al, byte [edi + 0x1e]
je 0x4a6fc9
xor ebx, ebx
jmp 0x4a6fcb
mov bl, 1
test bl, bl
jne 0x4a6fd8
lea edx, [edi + 0x30]
mov eax, edi
mov ecx, dword [eax]
call dword [ecx]
inc byte [esp]
test bl, bl
jne 0x4a6feb
mov al, byte [esp]
cmp al, byte [edi + 0x34]
jb 0x4a6f60
test bl, bl
jne 0x4a7000
mov dl, 1
mov eax, dword [0x48eed4]
call fcn.0049008c
call fcn.004046ac
mov eax, ebx
pop ecx
pop edx
pop edi
pop esi
pop ebx
ret

Function at 0x4a7008
Capabilities:
Generate random numbers using the delphi lcg

Disassembly:
push ebx
push esi
push edi
mov edi, edx
mov ebx, eax
mov edx, dword [edi]
mov eax, ebx
call fcn.00492b14
mov esi, eax
mov dword [edi], esi
and esi, 0xff
add dword [edi + 4], esi
imul esi, dword [edi + 4], 0x8088405
inc esi
mov dword [edi + 4], esi
mov eax, esi
shr eax, 0x18
mov edx, dword [edi + 8]
call fcn.00492b14
mov dword [edi + 8], eax
pop edi
pop esi
pop ebx
ret

Function at 0x4abc64
Capabilities:
Encode data using xor
Generate random numbers using the delphi lcg

Disassembly:
and edx, edx
je 0x4abc82
and ecx, ecx
jle 0x4abc82
push ebx
xor al, byte [edx]
imul eax, eax, 0x8088405
inc eax
mov ebx, eax
shr ebx, 0x18
mov byte [edx], bl
inc edx
dec ecx
jne 0x4abc6d
pop ebx
ret

Function at 0x4abcc8
Capabilities:
Encode data using xor

Disassembly:
and edx, edx
je 0x4abced
and ecx, ecx
jle 0x4abced
push ebx
push edi
xor ebx, ebx
lea edi, cs:[0x4abcef]
mov bl, byte [edx]
xor bl, al
shr ax, 8
xor ax, word [edi + ebx*2]
inc edx
dec ecx
jne 0x4abcdb
pop edi
pop ebx
ret