Function at 0x4a4173
Capabilities:
Encode data using xor

Disassembly:
mov eax, 0x5015d3
call fcn.00500798
sub esp, 0x54
push ebx
push esi
push edi
mov dword [ebp - 0x10], esp
xor ebx, ebx
xor esi, esi
inc esi
cmp byte [ecx], bl
je 0x4a42cb
mov dword [ebp - 0x20], 0x110c93b4
mov dword [ebp - 0x30], 0xb15b45be
mov dword [ebp - 0x2c], 0xa34071e9
mov dword [ebp - 0x1c], ebx
cmp dword [ebp - 0x1c], 3
jge 0x4a41bd
mov eax, dword [ebp - 0x1c]
mov dword [ebp + eax*4 - 0x3c], esi
inc dword [ebp - 0x1c]
jmp 0x4a41ab
mov dword [ebp - 0x20], ebx
jmp 0x4a42b6
mov dword [ebp - 0x18], 0x7e17
mov dword [ebp - 0x1c], 0x73598422
mov dword [ebp - 0x2c], esi
cmp dword [ebp - 0x18], esi
ja 0x4a4214
mov dword [ebp - 0x24], 0xfffa
dec dword [ebp - 0x24]
mov dword [ebp - 0x18], 2
cmp dword [ebp - 0x18], ebx
jl 0x4a42b3
mov byte [ebp - 0x11], bl
cmp byte [ebp - 0x11], bl
je 0x4a420a
push ebx
push 0x186d
push ebx
call dword [0xadb060]
dec dword [ebp - 0x18]
jns 0x4a41f5
jmp 0x4a42b3
mov dword [ebp - 0x24], 0xfffffffe
mov dword [ebp - 0x1c], 0x62b56095
mov dword [ebp - 0x1c], ebx
mov dword [ebp - 0x1c], ebx
jmp 0x4a4234
mov eax, dword [ebp - 0x1c]
mov dword [ebp + eax*4 - 0x28], ebx
inc dword [ebp - 0x1c]
cmp dword [ebp - 0x1c], esi
jl 0x4a422a
cmp dword [ebp - 0x3c], 0xa18461e7
sbb edx, edx
neg edx
mov eax, dword [ebp - 0x18]
sub edx, eax
mov eax, dword [ebp - 0x28]
xor ecx, ecx
cmp edx, eax
setge cl
mov eax, dword [ebp - 0x28]
add ecx, eax
mov eax, dword [ebp - 0x3c]
xor edx, edx
cmp ecx, eax
setge dl
mov dword [ebp - 0x1c], edx
mov eax, dword [ebp - 0x1c]
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp - 0x28]
mov edx, dword [ebp - 0x1c]
sub edx, eax
mov eax, dword [ebp - 0x24]
xor ecx, ecx
cmp eax, edx
setge cl
mov eax, dword [ebp - 0x24]
sub eax, ecx
neg eax
sbb eax, eax
inc eax
cmp eax, dword [ebp - 0x24]
jg 0x4a4293
cmp dword [ebp - 0x30], ebx
mov ecx, esi
jne 0x4a4295
mov ecx, ebx
xor eax, eax
cmp ecx, 0xd65
setge al
mov dword [ebp - 0x1c], eax
mov ecx, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x2c]
xor edx, edx
cmp ecx, eax
setg dl
mov dword [ebp - 0x2c], edx
dec dword [ebp - 0x20]
cmp dword [ebp - 0x20], 0xfffffff7
je 0x4a41c5
push 0x23b0
call dword [0xadb5c8]
mov dword [ebp - 0x18], ebx
mov dword [ebp - 0x1c], esi
mov dword [ebp - 0x24], 3
push 2
lea ecx, [ebp - 0x48]
call fcn.004128b0
mov dword [ebp - 0x20], 0xfa0
cmp dword [ebp - 0x20], 0x11e1
jle 0x4a433e
mov edi, ebx
mov ecx, ebx
mov dword [ebp - 0x24], ebx
mov dword [ebp - 0x30], ebx
mov eax, edi
cdq
idiv ecx
mov esi, edx
mov eax, esi
cdq
idiv ebx
mov eax, edx
cdq
push edx
push eax
mov ecx, 0xad7f58
call fcn.0041255b
inc ebx
cmp ebx, 0x7616
jl 0x4a4303
mov ecx, dword [ebp - 0x24]
inc ecx
mov dword [ebp - 0x24], ecx
cmp ecx, 0x25a3
push 0
pop ebx
jl 0x4a42f9
inc edi
cmp edi, 0x2550
jl 0x4a42f4
xor esi, esi
inc esi
mov dword [ebp - 0x2c], 0xffffffff
mov dword [ebp - 4], ebx
cmp dword [ebp - 0x20], 0xd4d
jge 0x4a4360
mov edx, 0xabcf78
mov ecx, 0xad7f58
call fcn.00415010
or dword [ebp - 4], 0xffffffff
jmp 0x4a4389
mov dword [ebp - 0x1c], 0x579c
cmp dword [ebp - 0x1c], 0x5b75
jle 0x4a4401
call dword [0xadb338]
mov edi, ebx
mov eax, ebx
mov dword [ebp - 0x24], ebx
mov ecx, ebx
mov dword [ebp - 0x20], ebx
shl eax, cl
and eax, edi
cdq
push edx
push eax
lea ecx, [ebp - 0x60]
call fcn.00401961
pop ecx
pop ecx
cmp dword [eax + 0x14], 0x10
jb 0x4a43c4
mov eax, dword [eax]
push eax
call fcn.004eaff7
pop ecx
push ebx
push esi
lea ecx, [ebp - 0x60]
call fcn.00412e4f
mov ecx, dword [ebp - 0x20]
inc ecx
mov dword [ebp - 0x20], ecx
cmp ecx, 0x708d
mov eax, dword [ebp - 0x24]
jl 0x4a43ab
inc eax
mov dword [ebp - 0x24], eax
cmp eax, 0x7430
jl 0x4a43a6
inc edi
cmp edi, 0x441a
jl 0x4a43a1
call dword [0xadb334]
mov dword [ebp - 4], 2
cmp dword [ebp - 0x1c], 0x5586
jge 0x4a441c
push 0xabcfec
call fcn.004eaff7
pop ecx
or dword [ebp - 4], 0xffffffff
jmp 0x4a4445
mov dword [ebp - 0x20], ebx
jmp 0x4a4457
mov ecx, dword [ebp - 0x20]
mov eax, dword [ebp - 0x48]
or dword [eax + ecx*4], 0xffffffff
inc dword [ebp - 0x20]
cmp dword [ebp - 0x20], 2
jl 0x4a444a
mov eax, dword [ebp - 0x18]
mov eax, dword [ebp - 0x18]
mov eax, dword [ebp - 0x18]
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x18]
mov eax, dword [ebp - 0x18]
mov edx, dword [ebp - 0x18]
sub edx, 0xd065
imul edx, dword [ebp - 0x18]
mov eax, dword [ebp - 0x18]
xor ecx, ecx
cmp edx, eax
setne cl
mov dword [ebp - 0x24], ecx
mov dword [ebp - 0x24], esi
cmp dword [ebp - 0x24], ebx
jl 0x4a45b4
mov dword [ebp - 0x18], ebx
cmp dword [ebp - 0x18], esi
jg 0x4a45ac
mov dword [ebp - 0x2c], 0x2b87
cmp dword [ebp - 0x2c], 0x2eee
jle 0x4a4507
mov edi, ebx
mov esi, ebx
mov eax, ebx
mov dword [ebp - 0x20], ebx
mov ecx, ebx
mov dword [ebp - 0x1c], ebx
shl eax, cl
xor eax, esi
xor eax, edi
cdq
push edx
push eax
mov ecx, 0xad7f58
call fcn.0041255b
mov ecx, dword [ebp - 0x1c]
inc ecx
mov dword [ebp - 0x1c], ecx
cmp ecx, 0x31c0
mov eax, dword [ebp - 0x20]
jl 0x4a44c2
inc eax
mov dword [ebp - 0x20], eax
cmp eax, 0x22db
jl 0x4a44bd
inc esi
cmp esi, 0x5464
jl 0x4a44b8
inc edi
cmp edi, 0x466b
jl 0x4a44b6
xor esi, esi
inc esi
mov dword [ebp - 0x30], 0xffffffff
mov dword [ebp - 4], 4
cmp dword [ebp - 0x2c], 0x27c6
jge 0x4a452d
mov edx, 0xabd040
mov ecx, 0xad7f58
call fcn.00415010
or dword [ebp - 4], 0xffffffff
jmp 0x4a4556
mov dword [ebp - 0x1c], esi
cmp dword [ebp - 0x1c], ebx
jl 0x4a45a4
mov dword [ebp - 0x20], 0xfc520ea
mov dword [ebp - 0x20], ebx
jmp 0x4a4595
mov eax, dword [ebp - 0x18]
mov eax, dword [ebp - 0x30]
mov dword [ebp - 0x2c], eax
mov byte [ebp - 0x11], bl
cmp byte [ebp - 0x11], 0
je 0x4a4592
push 0x1bdb
push 0xf13
push 0x2ce
push ebx
call dword [0xadb3e8]
inc dword [ebp - 0x20]
cmp dword [ebp - 0x20], esi
jle 0x4a456a
cmp dword [ebp - 0x30], ebx
jne 0x4a45a4
dec dword [ebp - 0x1c]
jns 0x4a455e
inc dword [ebp - 0x18]
jmp 0x4a449b
dec dword [ebp - 0x24]
jmp 0x4a448f
lea ecx, [ebp - 0x48]
call fcn.00412982
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret