Function at 0x4a17b7
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xe0
mov eax, dword [0x639034]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 8]
and dword [ebp - 0xc0], 0
and dword [ebp - 0xb0], 0
mov dword [ebp - 0xd4], eax
mov eax, dword [ebp + 0x18]
mov dword [ebp - 0x9c], eax
mov eax, dword [ebp + 0x20]
push ebx
mov ebx, dword [ebp + 0x14]
push esi
mov esi, dword [ebp + 0x10]
mov dword [ebp - 0xe0], eax
mov eax, dword [ebp + 0x24]
mov dword [ebp - 0xd8], eax
mov eax, dword [ebp + 0x28]
push edi
shr esi, 3
xor edi, edi
mov dword [ebp - 0xdc], eax
mov eax, dword [ebp + 0x2c]
mov dword [ebp - 0x94], ebx
mov dword [ebp - 0x90], eax
mov dword [ebp - 0xbc], 2
cmp esi, 0x14
je 0x4a1842
cmp esi, 0x1c
je 0x4a1842
cmp esi, 0x20
je 0x4a1842
xor eax, eax
jmp 0x4a1ece
test ebx, ebx
jne 0x4a186b
cmp esi, 0x14
jne 0x4a1852
call fcn.004583ae
jmp 0x4a1863
cmp esi, 0x1c
jne 0x4a185e
call fcn.004583b4
jmp 0x4a1863
call fcn.004583ba
mov dword [ebp - 0x94], eax
jmp 0x4a1874
push ebx
call fcn.00466091
pop ecx
mov esi, eax
mov ecx, dword [ebp - 0x9c]
mov eax, 0x200
cmp dword [ebp + 0xc], eax
cmovae eax, dword [ebp + 0xc]
add eax, 0x3f
and eax, 0xffffffc0
mov dword [ebp - 0xc4], eax
test ecx, ecx
je 0x4a18c5
mov eax, dword [ebp + 0x1c]
cmp eax, esi
jae 0x4a18b4
push 0x55
push 0x5ceed0
push 0x6e
push 0x7d
push 0xa
call fcn.0045b321
add esp, 0x14
jmp 0x4a183b
cmova eax, esi
push eax
push ecx
lea eax, [ebp - 0x64]
push eax
call fcn.0055f020
add esp, 0xc
call fcn.0047d345
mov dword [ebp - 0xa8], eax
test eax, eax
je 0x4a1eae
call fcn.00460bd6
mov edi, eax
test edi, edi
je 0x4a1eae
push edi
call fcn.00460c34
push edi
call fcn.00460b77
push edi
mov dword [ebp - 0x88], eax
call fcn.00460b77
push edi
mov dword [ebp - 0xa4], eax
call fcn.00460b77
push edi
mov dword [ebp - 0xb4], eax
call fcn.00460b77
push edi
mov dword [ebp - 0x98], eax
call fcn.00460b77
push edi
mov dword [ebp - 0xa0], eax
call fcn.00460b77
push edi
mov dword [ebp - 0xc8], eax
call fcn.00460b77
push edi
mov dword [ebp - 0x8c], eax
call fcn.00460b77
mov ebx, eax
add esp, 0x24
mov dword [ebp - 0xd0], ebx
test ebx, ebx
je 0x4a1eae
mov eax, dword [ebp - 0xc4]
dec eax
push eax
mov dword [ebp - 0xcc], eax
call fcn.0045fef2
push eax
push ebx
call fcn.0047c07a
add esp, 0xc
test eax, eax
je 0x4a1eae
push dword [ebp - 0xb0]
xor ebx, ebx
cmp dword [ebp - 0x9c], ebx
push 0
push dword [ebp - 0x90]
sete bl
call fcn.00463069
add esp, 0xc
inc dword [ebp - 0xb0]
test eax, eax
je 0x4a1eae
cmp dword [ebp - 0x9c], 0
jne 0x4a19cd
lea eax, [ebp - 0x64]
push esi
push eax
call fcn.00499fd7
pop ecx
pop ecx
test eax, eax
jle 0x4a1eae
jmp 0x4a19d4
and dword [ebp - 0x9c], 0
push esi
lea eax, [ebp - 0x64]
push eax
lea eax, [ebp - 0x44]
push eax
call fcn.0055f020
push esi
lea eax, [ebp - 0x64]
push eax
lea eax, [ebp - 0x84]
push eax
call fcn.0055f020
lea eax, [esi - 1]
add esp, 0x18
test eax, eax
js 0x4a1a09
add byte [ebp + eax - 0x44], 1
jne 0x4a1a09
sub eax, 1
jns 0x4a19fd
push 0
push dword [ebp - 0x94]
lea eax, [ebp - 0x24]
push 0
push eax
lea eax, [ebp - 0x64]
push esi
push eax
call fcn.0046c0f2
add esp, 0x18
test eax, eax
je 0x4a1eae
push 0
push dword [ebp - 0x94]
lea eax, [ebp - 0x84]
push 0
push eax
lea eax, [ebp - 0x44]
push esi
push eax
call fcn.0046c0f2
add esp, 0x18
test eax, eax
je 0x4a1eae
xor ecx, ecx
test esi, esi
jle 0x4a1a68
mov al, byte [ebp + ecx - 0x84]
xor byte [ebp + ecx - 0x24], al
inc ecx
cmp ecx, esi
jl 0x4a1a58
push dword [ebp - 0x98]
or byte [ebp - 0x24], 0x80
lea eax, [ebp - 0x24]
or byte [ebp + esi - 0x25], 1
push esi
push eax
call fcn.0045f7c6
add esp, 0xc
test eax, eax
je 0x4a1eae
push dword [ebp - 0x90]
push ebx
push edi
push 0x40
push dword [ebp - 0x98]
call fcn.004632c5
add esp, 0x14
test eax, eax
jg 0x4a1ab3
je 0x4a197f
jmp 0x4a1eae
mov ebx, dword [ebp - 0x90]
push 0
push 2
push ebx
call fcn.00463069
add esp, 0xc
test eax, eax
je 0x4a1eae
push 0
push 3
push ebx
call fcn.00463069
add esp, 0xc
test eax, eax
je 0x4a1eae
mov eax, dword [ebp - 0xc4]
xor ecx, ecx
mov dword [ebp - 0xac], 0xa0
dec eax
xor edx, edx
mov dword [ebp - 0xb8], ecx
div dword [ebp - 0xac]
mov dword [ebp - 0xac], eax
jmp 0x4a1b12
mov ebx, dword [ebp - 0x90]
test ecx, ecx
je 0x4a1b2a
push ecx
push 0
push ebx
call fcn.00463069
add esp, 0xc
test eax, eax
je 0x4a1eae
push 0
push dword [ebp - 0xb4]
call fcn.0045fe56
xor ebx, ebx
pop ecx
pop ecx
cmp dword [ebp - 0xac], ebx
jl 0x4a1be4
lea eax, [esi - 1]
test eax, eax
js 0x4a1b5a
add byte [ebp + eax - 0x44], 1
jne 0x4a1b5a
sub eax, 1
jns 0x4a1b4e
push 0
push dword [ebp - 0x94]
lea eax, [ebp - 0x24]
push 0
push eax
lea eax, [ebp - 0x44]
push esi
push eax
call fcn.0046c0f2
add esp, 0x18
test eax, eax
je 0x4a1eae
push dword [ebp - 0x88]
lea eax, [ebp - 0x24]
push esi
push eax
call fcn.0045f7c6
add esp, 0xc
test eax, eax
je 0x4a1eae
mov eax, esi
shl eax, 3
imul eax, ebx
push eax
mov eax, dword [ebp - 0x88]
push eax
push eax
call fcn.0047c07a
add esp, 0xc
test eax, eax
je 0x4a1eae
push dword [ebp - 0x88]
mov eax, dword [ebp - 0xb4]
push eax
push eax
call fcn.00460e57
add esp, 0xc
test eax, eax
je 0x4a1eae
inc ebx
cmp ebx, dword [ebp - 0xac]
jle 0x4a1b47
push dword [ebp - 0xcc]
mov ebx, dword [ebp - 0xb4]
push ebx
call fcn.0045fbf9
pop ecx
pop ecx
test eax, eax
je 0x4a1eae
push ebx
push dword [ebp - 0xa0]
call fcn.0045fa49
pop ecx
pop ecx
test eax, eax
je 0x4a1eae
mov ebx, dword [ebp - 0xd0]
mov eax, dword [ebp - 0xa0]
push ebx
push eax
push eax
call fcn.00460e57
add esp, 0xc
test eax, eax
je 0x4a1eae
push dword [ebp - 0x98]
push dword [ebp - 0x88]
call fcn.0047c0c0
pop ecx
pop ecx
test eax, eax
je 0x4a1eae
push edi
push dword [ebp - 0x88]
push dword [ebp - 0xa0]
push dword [ebp - 0xc8]
push 0
call fcn.00461c81
add esp, 0x14
test eax, eax
je 0x4a1eae
call fcn.0045fef2
push eax
push dword [ebp - 0xc8]
push dword [ebp - 0x88]
call fcn.00460eb8
add esp, 0xc
test eax, eax
je 0x4a1eae
push dword [ebp - 0x88]
push dword [ebp - 0xa0]
push dword [ebp - 0x8c]
call fcn.00460eb8
add esp, 0xc
test eax, eax
je 0x4a1eae
push ebx
push dword [ebp - 0x8c]
call fcn.0045f946
pop ecx
pop ecx
test eax, eax
js 0x4a1cee
push dword [ebp - 0x90]
push 1
push edi
push 0x40
push dword [ebp - 0x8c]
call fcn.004632c5
add esp, 0x14
test eax, eax
jg 0x4a1d0c
jne 0x4a1eae
mov ecx, dword [ebp - 0xb8]
inc ecx
mov dword [ebp - 0xb8], ecx
cmp ecx, 0x1000
jl 0x4a1b0c
jmp 0x4a197f
push 1
push 2
push dword [ebp - 0x90]
call fcn.00463069
add esp, 0xc
test eax, eax
je 0x4a1eae
call fcn.0045fef2
push eax
push dword [ebp - 0x8c]
push ebx
call fcn.00460eb8
add esp, 0xc
test eax, eax
je 0x4a1eae
push edi
push dword [ebp - 0x98]
push ebx
push 0
push dword [ebp - 0x88]
call fcn.00461c81
add esp, 0x14
test eax, eax
je 0x4a1eae
push 2
push ebx
call fcn.0045fe56
pop ecx
pop ecx
test eax, eax
je 0x4a1eae
push edi
push dword [ebp - 0x8c]
push dword [ebp - 0xa8]
call fcn.0047d390
add esp, 0xc
test eax, eax
je 0x4a1eae
jmp 0x4a1dc2
push dword [ebp - 0xa4]
call fcn.0045fb99
pop ecx
test eax, eax
je 0x4a1ded
call fcn.0045fef2
push eax
push ebx
push ebx
call fcn.00460e57
add esp, 0xc
test eax, eax
je 0x4a1eae
inc dword [ebp - 0xbc]
push dword [ebp - 0xa8]
push edi
push dword [ebp - 0x8c]
push dword [ebp - 0x88]
push ebx
push dword [ebp - 0xa4]
call fcn.0047f7a5
add esp, 0x18
test eax, eax
jne 0x4a1d94
jmp 0x4a1eae
xor ebx, ebx
inc ebx
push ebx
push 3
push dword [ebp - 0x90]
call fcn.00463069
add esp, 0xc
test eax, eax
je 0x4a1eae
mov dword [ebp - 0xc0], ebx
mov ebx, dword [ebp - 0xd4]
push dword [ebx + 8]
call fcn.0045fad2
push dword [ebx + 0xc]
call fcn.0045fad2
push dword [ebx + 0x10]
call fcn.0045fad2
push dword [ebp - 0x8c]
call fcn.0045fa90
push dword [ebp - 0x98]
mov dword [ebx + 8], eax
call fcn.0045fa90
push dword [ebp - 0xa4]
mov dword [ebx + 0xc], eax
call fcn.0045fa90
xor ecx, ecx
mov dword [ebx + 0x10], eax
add esp, 0x18
cmp dword [ebx + 8], ecx
je 0x4a1ea8
cmp dword [ebx + 0xc], ecx
je 0x4a1ea8
test eax, eax
je 0x4a1ea8
mov ecx, dword [ebp - 0xd8]
test ecx, ecx
je 0x4a1e7c
mov eax, dword [ebp - 0xb8]
mov dword [ecx], eax
mov ecx, dword [ebp - 0xdc]
test ecx, ecx
je 0x4a1e8e
mov eax, dword [ebp - 0xbc]
mov dword [ecx], eax
mov eax, dword [ebp - 0xe0]
test eax, eax
je 0x4a1eae
push esi
lea ecx, [ebp - 0x64]
push ecx
push eax
call fcn.0055f020
add esp, 0xc
jmp 0x4a1eae
mov dword [ebp - 0xc0], ecx
push edi
call fcn.00460ad7
push edi
call fcn.00460b3b
push dword [ebp - 0xa8]
call fcn.0047d2c9
mov eax, dword [ebp - 0xc0]
add esp, 0xc
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.00546623
leave
ret