Function at 0x53bca0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x28
movzx eax, byte [ebx + 0x1c2]
push edi
mov edi, dword [ebx]
test dword [edi + 0x18], 0x4000000
mov dword [ebp - 8], edi
mov dword [ebp - 0x24], eax
je 0x53c1f3
mov ecx, dword [ebp + 8]
push esi
mov esi, dword [ecx + 0x44]
xor edx, edx
mov dword [ebp - 0xc], 0xfff0bdc0
cmp esi, edx
je 0x53bd06
mov ecx, dword [edi + 0x14]
mov dword [ebp - 0xc], edx
cmp ecx, edx
jle 0x53bd06
mov eax, dword [edi + 0x10]
add eax, 0xc
jmp 0x53bcf2
xor edx, edx
cmp dword [eax], esi
je 0x53bd06
mov edx, dword [ebp - 0xc]
inc edx
add eax, 0x10
mov dword [ebp - 0xc], edx
cmp edx, ecx
jl 0x53bcf0
xor edx, edx
mov eax, dword [ebp - 0xc]
mov ecx, dword [edi + 0x10]
add eax, eax
mov eax, dword [ecx + eax*8]
mov ecx, dword [ebp + 8]
mov dword [ebp - 0x20], eax
mov eax, dword [ecx + 0x24]
mov dword [ebp - 4], eax
cmp eax, edx
je 0x53bea1
jmp 0x53bd35
mov edi, dword [ebp - 8]
xor edx, edx
cmp byte [ebx + 0x1c2], 0
mov dword [ebp - 0x14], edx
mov dword [ebp - 0x1c], edx
mov dword [ebp - 0x18], edx
je 0x53bd60
mov edx, dword [ebp - 0x20]
mov eax, dword [ebp - 4]
mov ecx, dword [eax + 8]
push edx
push ecx
push edi
call fcn.004ec880
add esp, 0xc
jmp 0x53bf06
mov esi, dword [ebx]
cmp byte [esi + 0x7d], 0
mov edx, dword [ebp - 4]
mov edi, dword [edx + 8]
jne 0x53beb8
lea eax, [ebx + 4]
push eax
call fcn.0053aa10
add esp, 4
test eax, eax
je 0x53beb8
inc dword [ebx + 0x44]
mov dword [ebx + 0xc], eax
xor esi, esi
cmp dword [ebp - 0x24], 0
je 0x53c1f2
mov edx, dword [ebp - 8]
cmp byte [edx + 0x36], 0
jne 0x53c1f2
test esi, esi
jne 0x53be90
mov edi, dword [ebx + 8]
test edi, edi
jne 0x53bdd1
mov eax, dword [ebx]
call fcn.004fca60
mov edi, eax
mov dword [ebx + 8], eax
test edi, edi
je 0x53bdd1
push 0x94
call fcn.004f4250
add esp, 4
mov ecx, dword [ebp - 4]
mov eax, dword [ecx + 0x14]
mov edx, dword [edi + 0x1c]
lea edx, [eax + edx + 1]
mov dword [ebp - 0x10], edx
mov dword [ebp - 0x18], 0
test eax, eax
jle 0x53be4e
add ecx, 0x24
mov dword [ebp - 0x1c], ecx
mov eax, dword [ebp - 0x1c]
mov ecx, dword [eax]
mov edx, dword [ebp + 0xc]
mov esi, dword [edi + 0x1c]
lea eax, [edx + ecx + 1]
mov dword [ebp - 0x14], eax
cmp dword [edi + 0x20], esi
jg 0x53be12
call fcn.004f4170
test eax, eax
jne 0x53be3b
mov edx, dword [edi + 4]
inc dword [edi + 0x1c]
lea ecx, [esi + esi*4]
lea eax, [edx + ecx*4]
mov ecx, dword [ebp - 0x14]
mov edx, dword [ebp - 0x10]
mov dword [eax + 4], ecx
xor ecx, ecx
mov byte [eax + 3], 0
mov dword [eax + 8], edx
mov dword [eax + 0xc], ecx
mov dword [eax + 0x10], ecx
mov word [eax], 0x49
mov eax, dword [ebp - 0x18]
mov ecx, dword [ebp - 4]
add dword [ebp - 0x1c], 8
inc eax
mov dword [ebp - 0x18], eax
cmp eax, dword [ecx + 0x14]
jl 0x53bdf2
movzx eax, byte [ecx + 0x18]
mov esi, dword [edi + 0x1c]
mov dword [ebp - 0x1c], eax
cmp dword [edi + 0x20], esi
jg 0x53be66
call fcn.004f4170
test eax, eax
jne 0x53be90
mov edx, dword [edi + 4]
inc dword [edi + 0x1c]
lea ecx, [esi + esi*4]
lea eax, [edx + ecx*4]
mov ecx, dword [ebp - 0x1c]
mov dword [eax + 4], ecx
xor ecx, ecx
mov byte [eax + 3], 0
mov dword [eax + 8], 0xffffffff
mov dword [eax + 0xc], ecx
mov dword [eax + 0x10], ecx
mov word [eax], 0x75
mov edx, dword [ebp - 4]
mov eax, dword [edx + 4]
mov dword [ebp - 4], eax
test eax, eax
jne 0x53bd30
mov edx, dword [ebp + 8]
mov ecx, dword [edx]
mov dword [ebp - 0x28], ecx
mov eax, ecx
test ecx, ecx
jne 0x53c027
jmp 0x53c03d
mov esi, dword [ebp - 0x20]
mov ecx, dword [ebx]
push esi
push edi
push ecx
call fcn.004ec880
add esp, 0xc
mov dword [ebp - 0x10], eax
test eax, eax
jne 0x53bf06
push edi
test esi, esi
je 0x53beeb
push esi
push 0x599208
push 0x597978
mov esi, ebx
call fcn.004faad0
add esp, 0x10
jmp 0x53beff
push 0x599208
push 0x597970
mov esi, ebx
call fcn.004faad0
add esp, 0xc
mov eax, dword [ebp - 0x10]
mov byte [ebx + 0x11], 1
mov esi, eax
test esi, esi
je 0x53bd8e
mov edi, dword [ebp - 4]
lea edx, [ebp - 0x14]
push edx
push edi
push esi
push ebx
lea eax, [ebp - 0x1c]
call fcn.004fff70
add esp, 0x10
test eax, eax
jne 0x53bd8e
mov eax, dword [ebp - 0x1c]
test eax, eax
je 0x53bf39
mov dword [ebp - 0x10], eax
jmp 0x53bf47
mov eax, dword [edi + 0x24]
lea ecx, [ebp - 0x28]
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x10], ecx
mov eax, ecx
mov edx, dword [ebp - 4]
xor edi, edi
cmp dword [edx + 0x14], edi
jle 0x53bfb3
mov ecx, dword [eax + edi*4]
mov edx, dword [ebp + 8]
cmp ecx, dword [edx + 4]
jne 0x53bf63
mov dword [eax + edi*4], 0xffffffff
mov ecx, dword [ebp - 8]
cmp dword [ecx + 0x10c], 0
je 0x53bfaa
mov eax, dword [ebp - 0x14]
test eax, eax
je 0x53bf7e
mov edx, dword [eax + 4]
mov eax, dword [edx + edi*4]
jmp 0x53bf81
mov eax, dword [esi + 4]
mov ecx, dword [esi + 0xc]
mov edx, dword [ebp - 0xc]
lea eax, [eax + eax*2]
mov eax, dword [ecx + eax*8]
push edx
push eax
mov eax, dword [esi]
push eax
mov eax, ebx
call fcn.004fe440
xor ecx, ecx
add esp, 0xc
cmp eax, 2
mov eax, dword [ebp - 0x10]
sete cl
mov dword [ebp - 0x18], ecx
mov edx, dword [ebp - 4]
inc edi
cmp edi, dword [edx + 0x14]
jl 0x53bf51
mov eax, dword [esi]
mov ecx, dword [esi + 0x14]
mov edi, dword [ebp - 0xc]
push eax
push 0
push ecx
push edi
mov eax, ebx
call fcn.004f6a10
mov eax, dword [ebp + 0xc]
inc dword [ebx + 0x48]
add esp, 0x10
test eax, eax
je 0x53bff2
mov edx, dword [ebp - 0x18]
mov ecx, dword [ebp - 4]
push edx
mov edx, dword [ebp - 0x14]
push 0xffffffffffffffff
push eax
mov eax, dword [ebp - 0x10]
push eax
push ecx
push edx
push esi
push edi
push ebx
call fcn.005123f0
add esp, 0x24
mov eax, dword [ebp + 0x10]
test eax, eax
je 0x53c017
mov ecx, dword [ebp - 0x18]
mov edx, dword [ebp - 0x10]
push ecx
mov ecx, dword [ebp - 0x14]
push 1
push eax
mov eax, dword [ebp - 4]
push edx
push eax
push ecx
push esi
push edi
push ebx
call fcn.005123f0
add esp, 0x24
mov eax, dword [ebp - 0x1c]
mov ecx, dword [ebp - 8]
call fcn.004e38a0
jmp 0x53be90
cmp byte [ecx], 0
je 0x53c036
lea esp, [esp]
inc eax
cmp byte [eax], 0
jne 0x53c030
sub eax, ecx
and eax, 0x3fffffff
mov esi, dword [edx + 0x44]
add esi, 0x38
cmp dword [esi + 0xc], 0
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x20], esi
je 0x53c08a
mov edx, eax
xor eax, eax
cmp edx, eax
jle 0x53c081
jmp 0x53c060
movzx esi, byte [ecx]
movzx esi, byte [esi + 0x5932a0]
lea edi, [eax*8]
xor esi, edi
dec edx
xor eax, esi
inc ecx
test edx, edx
jg 0x53c060
mov ecx, dword [ebp - 0x28]
mov esi, dword [ebp - 0x20]
xor edx, edx
div dword [esi]
mov eax, dword [ebp - 0x1c]
jmp 0x53c08c
xor edx, edx
push eax
push ecx
mov eax, esi
call fcn.004e4c00
add esp, 8
test eax, eax
je 0x53c1f2
mov edi, dword [eax + 8]
xor esi, esi
cmp edi, esi
je 0x53c1f2
lea ecx, [ecx]
cmp byte [edi + 0x18], 0
mov dword [ebp - 0x1c], esi
mov dword [ebp - 0x14], esi
jne 0x53c0ce
cmp dword [ebx + 0x1a8], esi
jne 0x53c0ce
cmp byte [ebx + 0x17], 0
je 0x53c1e7
mov ecx, dword [ebp + 8]
lea eax, [ebp - 0x1c]
push eax
push edi
push ecx
push ebx
lea eax, [ebp - 0x14]
call fcn.004fff70
add esp, 0x10
test eax, eax
je 0x53c102
cmp dword [ebp - 0x24], esi
je 0x53c1f2
mov edx, dword [ebp - 8]
cmp byte [edx + 0x36], 0
jne 0x53c1f2
jmp 0x53c1e7
mov esi, dword [ebp - 8]
mov ecx, 0x48
call fcn.004f0e10
mov esi, eax
test esi, esi
je 0x53c1da
push 0x48
push 0
push esi
call fcn.004b9850
mov eax, 1
mov word [esi + 2], ax
movsx ecx, word [esi]
push ecx
mov ecx, dword [ebp - 8]
push eax
mov eax, esi
call fcn.004f7050
mov esi, eax
mov eax, dword [ebp - 8]
add esp, 0x14
cmp byte [eax + 0x36], 0
jne 0x53c1d1
movsx edx, word [esi]
shl edx, 6
mov dword [edx + esi - 0x34], 0
mov dword [edx + esi - 0x38], 0
lea eax, [edx + esi - 0x38]
mov eax, dword [edi]
mov dword [esi + 0x14], eax
mov ecx, dword [edi]
mov edx, dword [ecx]
mov dword [esi + 0xc], edx
mov ecx, 1
add word [eax + 0x20], cx
mov eax, dword [ebx + 0x48]
mov dword [esi + 0x28], eax
mov eax, dword [ebp + 0x10]
add dword [ebx + 0x48], ecx
test eax, eax
je 0x53c1a6
mov ecx, dword [ebp - 0x14]
mov edx, dword [ebp - 0x1c]
push 0xffffffffffffffff
push eax
mov eax, dword [ebp + 8]
push ecx
push edi
push edx
push eax
push esi
push ebx
call fcn.00539890
add esp, 0x20
mov eax, dword [ebp + 0xc]
test eax, eax
je 0x53c1c7
mov ecx, dword [ebp - 0x14]
mov edx, dword [ebp - 0x1c]
push 1
push eax
mov eax, dword [ebp + 8]
push ecx
push edi
push edx
push eax
push esi
push ebx
call fcn.00539890
add esp, 0x20
mov eax, dword [ebp - 8]
mov dword [esi + 0xc], 0
push esi
call fcn.004ecf00
add esp, 4
mov eax, dword [ebp - 0x14]
mov ecx, dword [ebp - 8]
call fcn.004e38a0
xor esi, esi
mov edi, dword [edi + 0xc]
cmp edi, esi
jne 0x53c0b0
pop esi
pop edi
mov esp, ebp
pop ebp
ret