Function at 0x4c3cf0
Capabilities:
Encode data using xor

Disassembly:
mov eax, 0xd4
call fcn.004e2da0
mov eax, dword [0x563374]
xor eax, esp
mov dword [esp + 0xd0], eax
mov eax, dword [esp + 0xd8]
mov ecx, dword [esp + 0xf0]
mov edx, dword [esp + 0xf4]
push ebx
mov ebx, dword [esp + 0x100]
push ebp
push esi
mov esi, dword [esp + 0xec]
xor ebp, ebp
push edi
mov edi, dword [esp + 0xf8]
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0xf4]
mov dword [esp + 0x4c], ecx
mov ecx, dword [esp + 0x108]
shr esi, 3
mov dword [esp + 0x1c], eax
mov dword [esp + 0x40], edi
mov dword [esp + 0x58], edx
mov dword [esp + 0x54], ecx
mov dword [esp + 0x14], ebx
mov dword [esp + 0x2c], ebp
mov dword [esp + 0x34], ebp
mov dword [esp + 0x30], 2
cmp esi, 0x14
je 0x4c3d84
cmp esi, 0x1c
je 0x4c3d84
cmp esi, 0x20
jne 0x4c3dd5
cmp eax, ebp
jne 0x4c3d91
call fcn.00451a20
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0xec]
cmp eax, 0x200
jae 0x4c3da4
mov eax, 0x200
add eax, 0x3f
and eax, 0xffffffc0
mov dword [esp + 0xec], eax
test edi, edi
je 0x4c3df2
mov eax, dword [esp + 0xfc]
cmp eax, esi
jae 0x4c3ddc
push 0x4e
push 0x547f10
push 0x6e
push 0x7d
push 0xa
call fcn.00431a90
add esp, 0x14
xor eax, eax
jmp 0x4c43dd
jbe 0x4c3de0
mov eax, esi
push eax
lea edx, [esp + 0xa4]
push edi
push edx
call fcn.004df910
add esp, 0xc
call fcn.00441a90
mov edi, eax
mov dword [esp + 0x28], edi
test edi, edi
je 0x4c43ca
call fcn.004355b0
mov ebp, eax
test ebp, ebp
je 0x4c43ca
push ebp
call fcn.00435640
push ebp
call fcn.004356d0
push ebp
mov dword [esp + 0x1c], eax
call fcn.004356d0
push ebp
mov dword [esp + 0x34], eax
call fcn.004356d0
push ebp
mov dword [esp + 0x50], eax
call fcn.004356d0
push ebp
mov dword [esp + 0x30], eax
call fcn.004356d0
push ebp
mov dword [esp + 0x6c], eax
call fcn.004356d0
push ebp
mov dword [esp + 0x64], eax
call fcn.004356d0
push ebp
mov dword [esp + 0x6c], eax
call fcn.004356d0
mov edi, eax
add esp, 0x24
mov dword [esp + 0x38], edi
test edi, edi
je 0x4c43bd
mov eax, dword [esp + 0xec]
dec eax
push eax
call fcn.00433b00
push eax
push edi
call fcn.00445190
add esp, 0xc
test eax, eax
je 0x4c43bd
jmp 0x4c3ea0
mov ecx, dword [esp + 0x34]
xor eax, eax
cmp dword [esp + 0x40], eax
push ecx
sete al
push 0
push ebx
mov edi, eax
call fcn.0045cb50
inc dword [esp + 0x40]
add esp, 0xc
test eax, eax
je 0x4c43bd
test edi, edi
je 0x4c3ee6
lea edx, [esp + 0xa0]
push esi
push edx
call fcn.004373a0
add esp, 8
test eax, eax
jle 0x4c43bd
jmp 0x4c3eee
mov dword [esp + 0x40], 0
push esi
lea eax, [esp + 0xa4]
push eax
lea ecx, [esp + 0x88]
push ecx
call fcn.004df910
push esi
lea edx, [esp + 0xb0]
push edx
lea eax, [esp + 0xd4]
push eax
call fcn.004df910
lea eax, [esi - 1]
add esp, 0x18
test eax, eax
js 0x4c3f30
inc byte [esp + eax + 0x80]
jne 0x4c3f30
dec eax
jns 0x4c3f24
mov ecx, dword [esp + 0x1c]
push 0
push ecx
push 0
lea edx, [esp + 0x6c]
push edx
lea eax, [esp + 0xb0]
push esi
push eax
call fcn.0045e3d0
add esp, 0x18
test eax, eax
je 0x4c43bd
mov ecx, dword [esp + 0x1c]
push 0
push ecx
push 0
lea edx, [esp + 0xcc]
push edx
lea eax, [esp + 0x90]
push esi
push eax
call fcn.0045e3d0
add esp, 0x18
test eax, eax
je 0x4c43bd
xor eax, eax
test esi, esi
jle 0x4c3fa0
jmp 0x4c3f90
mov cl, byte [esp + eax + 0xc0]
xor byte [esp + eax + 0x60], cl
inc eax
cmp eax, esi
jl 0x4c3f90
mov edx, dword [esp + 0x18]
or byte [esp + 0x60], 0x80
or byte [esp + esi + 0x5f], 1
push edx
lea eax, [esp + 0x64]
push esi
push eax
call fcn.004347f0
add esp, 0xc
test eax, eax
je 0x4c43bd
mov ecx, dword [esp + 0x18]
push ebx
push edi
push ebp
push 0x32
push ecx
call fcn.0045d060
add esp, 0x14
test eax, eax
jg 0x4c3fe6
je 0x4c3ea0
jmp 0x4c43bd
push 0
push 2
push ebx
call fcn.0045cb50
add esp, 0xc
test eax, eax
je 0x4c43bd
push 0
push 3
push ebx
call fcn.0045cb50
add esp, 0xc
test eax, eax
je 0x4c43bd
mov edx, dword [esp + 0xec]
dec edx
mov eax, 0xcccccccd
mul edx
xor ecx, ecx
mov ebx, edx
mov dword [esp + 0x20], ecx
shr ebx, 7
jmp 0x4c4034
mov ecx, dword [esp + 0x20]
test ecx, ecx
je 0x4c4050
mov eax, dword [esp + 0x14]
push ecx
push 0
push eax
call fcn.0045cb50
add esp, 0xc
test eax, eax
je 0x4c43bd
mov ecx, dword [esp + 0x3c]
push 0
push ecx
call fcn.004347b0
add esp, 8
xor edi, edi
test ebx, ebx
js 0x4c410a
lea esp, [esp]
lea eax, [esi - 1]
test eax, eax
js 0x4c4083
inc byte [esp + eax + 0x80]
jne 0x4c4083
dec eax
jns 0x4c4077
mov edx, dword [esp + 0x1c]
push 0
push edx
push 0
lea eax, [esp + 0x6c]
push eax
lea ecx, [esp + 0x90]
push esi
push ecx
call fcn.0045e3d0
add esp, 0x18
test eax, eax
je 0x4c43bd
mov edx, dword [esp + 0x10]
push edx
lea eax, [esp + 0x64]
push esi
push eax
call fcn.004347f0
add esp, 0xc
test eax, eax
je 0x4c43bd
mov eax, dword [esp + 0x10]
lea ecx, [esi*8]
imul ecx, edi
push ecx
push eax
push eax
call fcn.00445190
add esp, 0xc
test eax, eax
je 0x4c43bd
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 0x3c]
push edx
push eax
push eax
call fcn.004371a0
add esp, 0xc
test eax, eax
je 0x4c43bd
inc edi
cmp edi, ebx
jle 0x4c4070
mov eax, dword [esp + 0xec]
mov edi, dword [esp + 0x3c]
dec eax
push eax
push edi
call fcn.004345e0
add esp, 8
test eax, eax
je 0x4c43bd
push edi
mov edi, dword [esp + 0x54]
push edi
call fcn.004346e0
add esp, 8
test eax, eax
je 0x4c43bd
mov eax, dword [esp + 0x38]
push eax
push edi
push edi
call fcn.004371a0
add esp, 0xc
test eax, eax
je 0x4c43bd
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x10]
push ecx
push edx
call fcn.00445030
add esp, 8
test eax, eax
je 0x4c43bd
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x44]
push ebp
push eax
push edi
push ecx
push 0
call fcn.00442ac0
add esp, 0x14
test eax, eax
je 0x4c43bd
call fcn.00433b00
mov edx, dword [esp + 0x44]
push eax
mov eax, dword [esp + 0x14]
push edx
push eax
call fcn.004370e0
add esp, 0xc
test eax, eax
je 0x4c43bd
mov ecx, dword [esp + 0x10]
push ecx
push edi
mov edi, dword [esp + 0x50]
push edi
call fcn.004370e0
add esp, 0xc
test eax, eax
je 0x4c43bd
mov edx, dword [esp + 0x38]
push edx
push edi
call fcn.00433c90
add esp, 8
test eax, eax
js 0x4c41f7
mov eax, dword [esp + 0x14]
push eax
push 1
push ebp
push 0x32
push edi
call fcn.0045d060
add esp, 0x14
test eax, eax
jg 0x4c4214
jne 0x4c43bd
mov eax, dword [esp + 0x20]
inc eax
mov dword [esp + 0x20], eax
cmp eax, 0x1000
jl 0x4c4030
mov ebx, dword [esp + 0x14]
jmp 0x4c3ea0
mov ecx, dword [esp + 0x14]
push 1
push 2
push ecx
call fcn.0045cb50
add esp, 0xc
test eax, eax
je 0x4c43bd
call fcn.00433b00
mov ebx, dword [esp + 0x38]
push eax
push edi
push ebx
call fcn.004370e0
add esp, 0xc
test eax, eax
je 0x4c43bd
mov edx, dword [esp + 0x18]
mov eax, dword [esp + 0x10]
push ebp
push edx
push ebx
push 0
push eax
call fcn.00442ac0
add esp, 0x14
test eax, eax
je 0x4c43bd
push 2
push ebx
call fcn.004347b0
add esp, 8
test eax, eax
je 0x4c43bd
mov ecx, dword [esp + 0x28]
push ebp
push edi
push ecx
call fcn.004417f0
add esp, 0xc
test eax, eax
je 0x4c43bd
mov edx, dword [esp + 0x28]
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x24]
push edx
push ebp
push edi
push eax
push ebx
push ecx
call fcn.00440fe0
add esp, 0x18
test eax, eax
je 0x4c43bd
mov edx, dword [esp + 0x24]
push edx
call fcn.00434090
add esp, 4
test eax, eax
je 0x4c4303
call fcn.00433b00
push eax
push ebx
push ebx
call fcn.004371a0
add esp, 0xc
test eax, eax
je 0x4c43bd
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x24]
inc dword [esp + 0x30]
push eax
push ebp
push edi
push ecx
push ebx
push edx
call fcn.00440fe0
add esp, 0x18
test eax, eax
jne 0x4c42b3
jmp 0x4c43bd
mov eax, dword [esp + 0x14]
push 1
push 3
push eax
call fcn.0045cb50
add esp, 0xc
test eax, eax
je 0x4c43bd
mov ebx, dword [esp + 0x5c]
mov ecx, dword [ebx + 8]
push ecx
mov dword [esp + 0x30], 1
lea esp, [esp]
call fcn.00434330
mov edx, dword [ebx + 0xc]
push edx
call fcn.00434330
mov eax, dword [ebx + 0x10]
push eax
call fcn.00434330
push edi
call fcn.004349e0
mov ecx, dword [esp + 0x28]
push ecx
mov dword [ebx + 8], eax
call fcn.004349e0
mov edx, dword [esp + 0x38]
push edx
mov dword [ebx + 0xc], eax
call fcn.004349e0
add esp, 0x18
cmp dword [ebx + 8], 0
mov dword [ebx + 0x10], eax
je 0x4c437d
cmp dword [ebx + 0xc], 0
je 0x4c437d
test eax, eax
jne 0x4c4387
mov dword [esp + 0x2c], 0
jmp 0x4c43bd
mov eax, dword [esp + 0x58]
test eax, eax
je 0x4c4395
mov ecx, dword [esp + 0x20]
mov dword [eax], ecx
mov eax, dword [esp + 0x54]
test eax, eax
je 0x4c43a3
mov edx, dword [esp + 0x30]
mov dword [eax], edx
mov eax, dword [esp + 0x4c]
test eax, eax
je 0x4c43bd
push esi
lea ecx, [esp + 0xa4]
push ecx
push eax
call fcn.004df910
add esp, 0xc
push ebp
call fcn.00435690
mov edi, dword [esp + 0x2c]
add esp, 4
push ebp
call fcn.00435600
push edi
call fcn.004417a0
mov eax, dword [esp + 0x34]
add esp, 8
mov ecx, dword [esp + 0xe0]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.004e6abd
add esp, 0xd4
ret