Function at 0x4ab7a0
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x38
cmp dword [esp + 0x3c], 0
push esi
mov dword [esp + 4], 0
mov dword [esp + 8], 0
je 0x4aba9e
cmp dword [esp + 0x44], 0
je 0x4aba9e
mov esi, dword [esp + 0x48]
test esi, esi
je 0x4aba9e
cmp dword [esp + 0x50], 0
je 0x4aba9e
cmp dword [esp + 0x58], 0
je 0x4aba9e
cmp dword [esp + 0x4c], 0x3e8
jne 0x4aba9e
call fcn.00462e00
mov dword [esp + 0x1c], eax
cmp eax, 0xffffffff
jne 0x4ab812
mov eax, 4
pop esi
add esp, 0x38
ret
push ebp
lea ecx, [esp + 0xc]
push ecx
push 0
push dword [esp + 0x60]
push 0
push 0
push 0
push 0
push eax
call fcn.004b02a0
mov ebp, eax
add esp, 0x20
test ebp, ebp
jne 0x4aba79
push ebx
push edi
push dword [esp + 0x14]
call fcn.00473980
mov ebx, eax
add esp, 4
test ebx, ebx
je 0x4aba91
mov ecx, dword [esp + 0x14]
lea eax, [esi + 4]
cmp eax, ecx
mov dword [esp + 0x38], eax
cmova ecx, eax
push ecx
call fcn.00473980
mov esi, eax
add esp, 4
mov dword [esp + 0x40], esi
test esi, esi
je 0x4aba88
push dword [esp + 0x14]
call fcn.00473980
mov edi, eax
add esp, 4
mov dword [esp + 0x24], edi
test edi, edi
je 0x4aba7f
mov eax, dword [esp + 0x5c]
shr eax, 5
mov dword [esp + 0x30], ebp
mov dword [esp + 0x44], eax
test eax, eax
je 0x4aba40
mov eax, dword [esp + 0x54]
mov ebp, 1
mov dword [esp + 0x20], ebp
mov dword [esp + 0x1c], 0x1000000
mov dword [esp + 0x18], 0x100
lea ecx, [esi + eax]
mov dword [esp + 0x34], ecx
jmp 0x4ab8d4
mov ebp, dword [esp + 0x20]
push eax
push dword [esp + 0x54]
push esi
call fcn.004d0d60
mov eax, dword [esp + 0x24]
mov ecx, ebp
sar ecx, 8
and eax, 0xff0000
and ecx, 0xff00
add esp, 0xc
or ecx, eax
mov eax, ebp
mov ebp, dword [esp + 0x4c]
shr eax, 0x18
or ecx, eax
mov eax, dword [esp + 0x34]
or ecx, dword [esp + 0x1c]
mov dword [eax], ecx
mov ecx, ebp
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x4ab912
lea eax, [esp + 0x10]
sub ecx, edx
push eax
push ebx
push dword [esp + 0x68]
push dword [esp + 0x44]
push esi
push ecx
push ebp
push dword [esp + 0x44]
call fcn.004b02a0
mov ebp, eax
add esp, 0x20
test ebp, ebp
jne 0x4aba57
mov eax, dword [esp + 0x10]
cmp dword [esp + 0x14], eax
jne 0x4aba40
push eax
push ebx
push edi
call fcn.004d0d60
push dword [esp + 0x1c]
push ebx
push esi
call fcn.004d0d60
add esp, 0x18
mov dword [esp + 0x2c], 1
nop
mov ebp, dword [esp + 0x4c]
mov eax, ebp
lea edx, [eax + 1]
nop dword [eax]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x4ab980
lea ecx, [esp + 0x10]
sub eax, edx
push ecx
push ebx
push dword [esp + 0x68]
push dword [esp + 0x1c]
push esi
push eax
push ebp
push dword [esp + 0x44]
call fcn.004b02a0
mov ebp, eax
add esp, 0x20
mov dword [esp + 0x3c], ebp
test ebp, ebp
jne 0x4aba53
mov edx, dword [esp + 0x10]
cmp dword [esp + 0x14], edx
jne 0x4aba11
mov edi, edx
xor esi, esi
shr edi, 2
xor ecx, ecx
test edi, edi
je 0x4ab9ed
mov ebp, dword [esp + 0x24]
nop
mov eax, dword [ebx + ecx*4]
xor dword [ebp + esi*4], eax
lea eax, [ecx + 1]
inc esi
cmp eax, edx
sbb ecx, ecx
and ecx, eax
cmp esi, edi
jb 0x4ab9d0
mov edx, dword [esp + 0x10]
mov ebp, dword [esp + 0x3c]
mov esi, dword [esp + 0x40]
push edx
push ebx
push esi
call fcn.004d0d60
mov ecx, dword [esp + 0x38]
add esp, 0xc
inc ecx
mov dword [esp + 0x2c], ecx
cmp ecx, 0x3e8
jb 0x4ab970
mov eax, dword [esp + 0x30]
add dword [esp + 0x18], 0x100
inc eax
add dword [esp + 0x1c], 0x1000000
inc dword [esp + 0x20]
cmp eax, dword [esp + 0x44]
mov edi, dword [esp + 0x24]
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x54]
jb 0x4ab8d0
push dword [esp + 0x5c]
push edi
push dword [esp + 0x6c]
call fcn.004d0d60
add esp, 0xc
jmp 0x4aba57
mov edi, dword [esp + 0x24]
push dword [esp + 0x28]
call fcn.00462c90
push edi
call fcn.004738c0
push esi
call fcn.004738c0
push ebx
call fcn.004738c0
add esp, 0x10
mov eax, ebp
pop edi
pop ebx
pop ebp
pop esi
add esp, 0x38
ret
push esi
call fcn.004738c0
add esp, 4
push ebx
call fcn.004738c0
add esp, 4
pop edi
pop ebx
pop ebp
mov eax, 2
pop esi
add esp, 0x38
ret
mov eax, 3
pop esi
add esp, 0x38
ret