Function at 0x4a36e0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x80
mov eax, dword [0x4cd724]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 8]
mov ecx, dword [ebp + 0x10]
push ebx
push esi
push edi
mov dword [ebp - 0x54], eax
mov dword [ebp - 0x40], ecx
test eax, eax
je 0x4a3ec7
mov eax, dword [ebp + 0xc]
test eax, eax
je 0x4a3ec7
test ecx, ecx
je 0x4a3ec7
mov edi, dword [ebp + 0x14]
test edi, edi
je 0x4a3ec7
mov ecx, eax
and ecx, 7
je 0x4a3734
sub eax, ecx
add eax, 8
push eax
call fcn.004a0400
push 1
mov esi, eax
call fcn.004a0400
add esi, eax
push 8
mov dword [ebp - 0x7c], esi
call fcn.004a0400
mov ebx, eax
add esi, ebx
mov dword [ebp - 0x78], esi
add esi, 3
add esp, 0xc
mov dword [ebp - 0x50], ebx
cmp edi, esi
jbe 0x4a3ec0
lea eax, [edi + 8]
cmp eax, 0x400
ja 0x4a3784
call fcn.0046d420
mov eax, esp
test eax, eax
je 0x4a379a
mov dword [eax], 0xcccc
jmp 0x4a3797
push eax
call fcn.004683d7
add esp, 4
test eax, eax
je 0x4a379a
mov dword [eax], 0xdddd
add eax, 8
mov dword [ebp - 0x48], eax
test eax, eax
je 0x4a3eab
lea eax, [ebx + 9]
cmp eax, 0x400
ja 0x4a37c2
call fcn.0046d420
mov eax, esp
test eax, eax
je 0x4a37d8
mov dword [eax], 0xcccc
jmp 0x4a37d5
push eax
call fcn.004683d7
add esp, 4
test eax, eax
je 0x4a37d8
mov dword [eax], 0xdddd
add eax, 8
mov dword [ebp - 0x44], eax
test eax, eax
je 0x4a3e8a
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov edx, 8
lea esi, [ebp - 0x14]
lea edi, [edx - 4]
mov ecx, 0x20
sub ecx, edx
mov ebx, eax
shr ebx, cl
add edx, 8
inc esi
sub edi, 1
mov byte [esi - 1], bl
jne 0x4a37f4
mov edi, dword [ebp - 0x40]
xor edi, dword [ebp - 0x54]
mov eax, 8
lea esi, [ebp - 0x10]
lea edx, [eax - 4]
mov ecx, 0x20
sub ecx, eax
mov ebx, edi
shr ebx, cl
add eax, 8
inc esi
sub edx, 1
mov byte [esi - 1], bl
jne 0x4a381c
mov byte [ebp - 0xc], 0xb2
mov byte [ebp - 0xb], 0x33
mov byte [ebp - 0xa], 0x65
mov byte [ebp - 9], 0x8b
mov byte [ebp - 8], 0x2d
mov byte [ebp - 7], 0xc3
mov byte [ebp - 6], 0x17
mov byte [ebp - 5], 0x4d
xor eax, eax
lea ecx, [edx + 8]
jmp 0x4a3860
mov dl, byte [ebp + eax - 0xc]
xor dl, byte [ebp + eax - 0x14]
inc eax
sub ecx, 1
mov byte [ebp + eax - 0x1d], dl
jne 0x4a3860
movzx eax, byte [ebp - 0x1c]
xor edi, edi
and eax, 0x80000007
lea esi, [ecx + 8]
jns 0x4a3887
dec eax
or eax, 0xfffffff8
inc eax
movzx eax, byte [ebp + eax - 0x1c]
cdq
mov ecx, 5
idiv ecx
lea eax, [ebp + edx - 0x1c]
lea edx, [ecx - 1]
jmp 0x4a38a0
movzx ebx, byte [eax]
mov ecx, 0x20
sub ecx, esi
shl ebx, cl
add esi, 8
inc eax
or edi, ebx
sub edx, 1
jne 0x4a38a0
movzx edx, byte [ebp - 0x15]
and edx, 0x80000007
mov dword [ebp - 0x38], edi
jns 0x4a38cb
dec edx
or edx, 0xfffffff8
inc edx
movzx eax, byte [ebp + edx - 0x1c]
and eax, 0x80000001
jns 0x4a38dc
dec eax
or eax, 0xfffffffe
inc eax
mov byte [ebp - 0x4c], al
movzx eax, al
mov dword [ebp - 0x3c], eax
and eax, 0x80000001
jns 0x4a38f1
dec eax
or eax, 0xfffffffe
inc eax
je 0x4a3b4d
mov eax, 0x10
call fcn.00467dc0
mov edi, esp
test edi, edi
je 0x4a3d50
mov dword [edi], 0xcccc
add edi, 8
mov dword [ebp - 8], edi
je 0x4a3d50
push 8
lea eax, [ebp - 0x1c]
push eax
push 8
push edi
call fcn.0046821e
mov ecx, dword [ebp - 0x38]
add esp, 0x10
mov dword [ebp - 0x30], 0
mov dword [ebp - 0x28], ecx
mov dword [ebp - 0x34], edi
xor edx, edx
mov eax, 8
lea esi, [edx + 4]
movzx ebx, byte [edi]
mov ecx, 0x20
sub ecx, eax
shl ebx, cl
add eax, 8
inc edi
or edx, ebx
sub esi, 1
jne 0x4a3948
mov eax, dword [ebp + 0x18]
mov ecx, dword [ebp - 0x4c]
push eax
mov eax, dword [ebp - 0x28]
push ecx
push eax
push edx
call fcn.00499520
mov edx, 8
mov dword [ebp - 0x80], eax
add esp, 0x10
lea esi, [ebp - 0x10]
lea eax, [edx - 4]
mov ebx, dword [ebp - 0x80]
mov ecx, 0x20
sub ecx, edx
shr ebx, cl
add edx, 8
inc esi
sub eax, 1
mov byte [esi - 1], bl
jne 0x4a3982
mov esi, dword [ebp - 0x30]
mov eax, dword [ebp - 0x34]
mov edx, 2
sub edx, esi
push 4
lea ecx, [ebp - 0x10]
add edx, edx
push ecx
add edx, edx
push edx
push eax
call fcn.0046821e
mov ecx, dword [ebp - 0x38]
add dword [ebp - 0x28], ecx
inc esi
add esp, 0x10
mov dword [ebp - 0x30], esi
mov dword [ebp - 0x34], edi
cmp esi, 2
jb 0x4a393e
mov eax, 0x108
call fcn.0046d420
mov eax, esp
mov dword [ebp - 0x34], esp
test eax, eax
je 0x4a39f0
mov dword [eax], 0xcccc
add eax, 8
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x14], eax
mov eax, 0x108
call fcn.0046d420
mov eax, esp
mov dword [ebp - 0x28], esp
test eax, eax
je 0x4a3a12
mov dword [eax], 0xcccc
add eax, 8
mov dword [ebp - 0x28], eax
mov edx, dword [ebp - 0x38]
mov dword [ebp - 0x10], eax
xor eax, eax
mov dword [ebp - 0x74], eax
mov dword [ebp - 0x70], eax
mov dword [ebp - 0x6c], eax
mov dword [ebp - 0x68], eax
mov dword [ebp - 0x64], eax
mov dword [ebp - 0x60], eax
mov dword [ebp - 0x5c], eax
mov dword [ebp - 0x58], eax
mov dword [ebp - 0x30], eax
lea eax, [edx*8]
push eax
xor bl, bl
call fcn.004a71f0
add esp, 4
call fcn.004a73e0
and al, 7
mov cl, al
shr cl, 5
mov byte [ebp - 0x29], cl
movzx edi, byte [ebp - 0x29]
movzx esi, al
mov ecx, esi
and ecx, 0x1f
mov edx, 1
shl edx, cl
mov ecx, dword [ebp + edi*4 - 0x74]
lea edi, [ebp + edi*4 - 0x74]
test edx, ecx
jne 0x4a3a8a
or ecx, edx
mov edx, dword [ebp - 0x34]
mov dword [edi], ecx
movzx ecx, bl
mov byte [ecx + edx], al
mov eax, dword [ebp - 0x28]
mov byte [esi + eax], bl
inc bl
inc dword [ebp - 0x30]
cmp bl, 8
jae 0x4a3ad6
mov ecx, 0x800
cmp word [ebp - 0x30], cx
jb 0x4a3a47
mov esi, dword [ebp - 0x28]
xor dl, dl
cmp bl, 8
jae 0x4a3ad6
movzx eax, dl
mov ecx, eax
and ecx, 0x1f
mov edi, 1
shl edi, cl
mov ecx, eax
shr ecx, 5
test dword [ebp + ecx*4 - 0x74], edi
jne 0x4a3acf
mov edi, dword [ebp - 0x34]
movzx ecx, bl
mov byte [ecx + edi], dl
mov byte [eax + esi], bl
inc bl
inc dl
cmp dl, 8
jb 0x4a3aa2
mov edx, dword [ebp - 0x3c]
mov eax, dword [ebp + edx*4 - 0x14]
mov ebx, dword [ebp - 8]
xor edi, edi
lea ecx, [ebp - 0x24]
lea esi, [edi + 8]
movzx edx, byte [eax]
add edx, edi
mov dl, byte [edx + ebx]
mov byte [ecx], dl
inc eax
inc ecx
sub esi, 1
jne 0x4a3ae8
mov eax, dword [ebp - 0x34]
test eax, eax
je 0x4a3b14
add eax, 0xfffffff8
cmp dword [eax], 0xdddd
jne 0x4a3b14
push eax
call fcn.004684a1
add esp, 4
mov eax, dword [ebp - 0x28]
test eax, eax
je 0x4a3b2f
add eax, 0xfffffff8
cmp dword [eax], 0xdddd
jne 0x4a3b2f
push eax
call fcn.004684a1
add esp, 4
cmp dword [ebx - 8], 0xdddd
lea eax, [ebx - 8]
jne 0x4a3d50
push eax
call fcn.004684a1
add esp, 4
jmp 0x4a3d50
mov eax, 0x108
call fcn.0046d420
mov eax, esp
mov dword [ebp - 0x28], esp
test eax, eax
je 0x4a3b6c
mov dword [eax], 0xcccc
add eax, 8
mov dword [ebp - 0x28], eax
mov dword [ebp - 0xc], eax
mov eax, 0x108
call fcn.0046d420
mov eax, esp
mov dword [ebp - 0x34], esp
test eax, eax
je 0x4a3b8e
mov dword [eax], 0xcccc
add eax, 8
mov dword [ebp - 0x34], eax
mov dword [ebp - 8], eax
xor eax, eax
mov dword [ebp - 0x74], eax
mov dword [ebp - 0x70], eax
mov dword [ebp - 0x6c], eax
mov dword [ebp - 0x68], eax
mov dword [ebp - 0x64], eax
mov dword [ebp - 0x60], eax
mov dword [ebp - 0x5c], eax
mov dword [ebp - 0x58], eax
mov dword [ebp - 0x30], eax
lea eax, [edi*8]
push eax
xor bl, bl
call fcn.004a71f0
add esp, 4
call fcn.004a73e0
and al, 7
mov cl, al
shr cl, 5
mov byte [ebp - 0x29], cl
movzx edi, byte [ebp - 0x29]
movzx esi, al
mov ecx, esi
and ecx, 0x1f
mov edx, 1
shl edx, cl
mov ecx, dword [ebp + edi*4 - 0x74]
lea edi, [ebp + edi*4 - 0x74]
test edx, ecx
jne 0x4a3c03
or ecx, edx
mov edx, dword [ebp - 0x28]
mov dword [edi], ecx
movzx ecx, bl
mov byte [ecx + edx], al
mov eax, dword [ebp - 0x34]
mov byte [esi + eax], bl
inc bl
inc dword [ebp - 0x30]
cmp bl, 8
jae 0x4a3c54
mov ecx, 0x800
cmp word [ebp - 0x30], cx
jb 0x4a3bc0
mov esi, dword [ebp - 0x34]
xor dl, dl
jmp 0x4a3c20
cmp bl, 8
jae 0x4a3c54
movzx eax, dl
mov ecx, eax
and ecx, 0x1f
mov edi, 1
shl edi, cl
mov ecx, eax
shr ecx, 5
test dword [ebp + ecx*4 - 0x74], edi
jne 0x4a3c4d
mov edi, dword [ebp - 0x28]
movzx ecx, bl
mov byte [ecx + edi], dl
mov byte [eax + esi], bl
inc bl
inc dl
cmp dl, 8
jb 0x4a3c20
mov edx, dword [ebp - 0x3c]
mov eax, dword [ebp + edx*4 - 0xc]
xor edi, edi
lea ecx, [ebp - 0x24]
lea esi, [edi + 8]
movzx edx, byte [eax]
add edx, edi
mov dl, byte [ebp + edx - 0x1c]
mov byte [ecx], dl
inc eax
inc ecx
sub esi, 1
jne 0x4a3c63
mov eax, dword [ebp - 0x28]
cmp eax, edi
je 0x4a3c90
add eax, 0xfffffff8
cmp dword [eax], 0xdddd
jne 0x4a3c90
push eax
call fcn.004684a1
add esp, 4
mov eax, dword [ebp - 0x34]
cmp eax, edi
je 0x4a3cab
add eax, 0xfffffff8
cmp dword [eax], 0xdddd
jne 0x4a3cab
push eax
call fcn.004684a1
add esp, 4
mov eax, dword [ebp - 0x38]
mov dword [ebp - 0x3c], edi
lea edi, [ebp - 0x24]
mov dword [ebp - 0x30], eax
mov dword [ebp - 0x28], edi
xor edx, edx
mov eax, 8
lea esi, [edx + 4]
movzx ebx, byte [edi]
mov ecx, 0x20
sub ecx, eax
shl ebx, cl
add eax, 8
inc edi
or edx, ebx
sub esi, 1
jne 0x4a3cc4
mov ecx, dword [ebp + 0x18]
mov eax, dword [ebp - 0x4c]
push ecx
mov ecx, dword [ebp - 0x30]
push eax
push ecx
push edx
call fcn.00499520
mov edx, 8
mov dword [ebp - 8], eax
add esp, 0x10
lea esi, [ebp - 0x10]
lea eax, [edx - 4]
mov ebx, dword [ebp - 8]
mov ecx, 0x20
sub ecx, edx
shr ebx, cl
add edx, 8
inc esi
sub eax, 1
mov byte [esi - 1], bl
jne 0x4a3cfe
mov esi, dword [ebp - 0x3c]
mov ecx, dword [ebp - 0x28]
mov eax, 2
sub eax, esi
push 4
lea edx, [ebp - 0x10]
add eax, eax
push edx
add eax, eax
push eax
push ecx
call fcn.0046821e
mov edx, dword [ebp - 0x38]
add dword [ebp - 0x30], edx
inc esi
add esp, 0x10
mov dword [ebp - 0x3c], esi
mov dword [ebp - 0x28], edi
cmp esi, 2
jb 0x4a3cba
lea ecx, [ecx]
xor edi, edi
mov eax, 8
lea edx, [ebp - 0x24]
lea esi, [edi + 4]
lea ecx, [ecx]
movzx ebx, byte [edx]
mov ecx, 0x20
sub ecx, eax
shl ebx, cl
add eax, 8
inc edx
or edi, ebx
sub esi, 1
jne 0x4a3d60
xor ebx, ebx
mov dword [ebp - 8], edi
lea edx, [ebp - 0x20]
mov eax, 8
lea esi, [ebx + 4]
jmp 0x4a3d90
movzx edi, byte [edx]
mov ecx, 0x20
sub ecx, eax
shl edi, cl
add eax, 8
inc edx
or ebx, edi
sub esi, 1
jne 0x4a3d90
mov eax, dword [ebp + 0x18]
mov ecx, dword [ebp - 8]
mov edi, dword [ebp + 0x14]
push eax
mov eax, dword [ebp - 0x40]
push ecx
mov ecx, dword [ebp + 0xc]
lea edx, [ebp - 0x24]
push edx
mov edx, dword [ebp - 0x54]
push edi
push eax
push ecx
push edx
call fcn.004a3200
mov esi, eax
add esp, 0x1c
test esi, esi
jne 0x4a3e8f
mov eax, dword [ebp + 0x18]
mov edx, dword [ebp - 0x50]
push eax
mov eax, dword [ebp - 0x44]
mov ecx, ebx
and ecx, 0x7fff
push ecx
inc edx
push edx
push eax
lea ecx, [ebp - 0x24]
push 8
push ecx
call fcn.004a0430
mov esi, eax
add esp, 0x18
test esi, esi
jne 0x4a3e8f
mov dl, bl
and dl, 0x1f
movzx eax, dl
push eax
call fcn.004a0300
mov ecx, ebx
shr ecx, 5
and cl, 0x1f
movzx edx, cl
push edx
mov byte [ebp - 0x38], al
call fcn.004a0300
shr ebx, 0xa
mov byte [ebp - 0x37], al
and bl, 0x1f
movzx eax, bl
push eax
call fcn.004a0300
mov ecx, dword [ebp - 0x50]
mov edx, dword [ebp - 0x44]
mov ebx, dword [ebp - 0x48]
push esi
push ecx
mov ecx, dword [ebp - 0x40]
push edx
mov byte [ebp - 0x36], al
mov eax, dword [ebp - 0x7c]
push eax
push edi
push ebx
push ecx
call fcn.004a1a70
mov eax, dword [ebp - 0x78]
mov ecx, dword [ebp - 0x40]
push 1
push 3
lea edx, [ebp - 0x38]
push edx
push eax
push edi
push ecx
push ebx
call fcn.004a1a70
mov edx, dword [ebp - 0x44]
add esp, 0x44
push edx
call fcn.0041a6d0
mov eax, ebx
add esp, 4
push eax
call fcn.0041a6d0
add esp, 4
mov eax, esi
jmp 0x4a3ecc
mov esi, 8
mov edx, dword [ebp - 0x44]
push edx
call fcn.0041a6d0
mov eax, dword [ebp - 0x48]
add esp, 4
push eax
call fcn.0041a6d0
add esp, 4
mov eax, esi
jmp 0x4a3ecc
mov eax, dword [ebp - 0x48]
push eax
mov esi, 8
call fcn.0041a6d0
add esp, 4
mov eax, esi
jmp 0x4a3ecc
mov eax, 0x7a
jmp 0x4a3ecc
mov eax, 0x57
lea esp, [ebp - 0x8c]
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004677af
mov esp, ebp
pop ebp
ret