Function at 0x5267c0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x28
push ebx
push ebp
push esi
mov esi, ecx
mov dword [esp + 0x1c], 0
push edi
xor edi, edi
mov dword [esp + 0x24], edi
mov edi, 2
mov edx, dword [esi + 4]
mov dword [esp + 0x18], edi
movzx eax, byte [edx + 0xe04]
mov byte [esp + 0x28], al
mov al, byte [edx + 0xe05]
movzx ebp, al
shr ebp, 1
and ebp, 1
mov byte [esp + 0x29], al
xor ebx, ebx
nop dword [eax + eax]
mov ecx, dword [esi + 4]
lea edx, [esp + 0x10]
push 8
mov ecx, dword [ecx + 0x38]
call fcn.00528e30
add esp, 4
test eax, eax
je 0x526e77
mov eax, dword [esp + 0x10]
cmp eax, 0xff
je 0x526e31
mov ecx, dword [esp + 0x18]
inc edi
inc ebx
mov dword [esp + 0x14], edi
mov dword [esp + 0x18], edi
mov byte [esp + ecx + 0x28], al
cmp ebx, 2
jb 0x526810
movzx edi, byte [esp + 0x2a]
mov ebx, ebp
mov ecx, edi
shr ecx, 4
cmp ecx, 0xf
ja case.default.0x52686a
movzx eax, byte [ecx + 0x526e98]
jmp dword [eax*4 + 0x526e84]
mov ebx, 1
jmp case.default.0x52686a
mov eax, dword [esi + 4]
mov dword [eax + 0x470], 0xc0
jmp case.default.0x52686a
add ecx, 0xfffffffe
mov edx, 0x240
jmp 0x52689f
mov dword [esp + 0x20], ecx
jmp case.default.0x52686a
add ecx, 0xfffffff8
mov edx, 0x100
mov eax, dword [esi + 4]
shl edx, cl
mov dword [eax + 0x470], edx
and edi, 0xf
cmp edi, 0xf
ja case.default.0x5268b6
jmp dword [edi*4 + 0x526ea8]
mov ecx, dword [esi + 4]
cmp dword [ecx + 0xf8], 0
je 0x5268da
mov eax, dword [ecx + 0x120]
mov dword [ecx + 0x474], eax
jmp case.default.0x5268b6
mov ebx, 1
jmp case.default.0x5268b6
mov eax, dword [esi + 4]
mov dword [eax + 0x474], 0x15888
jmp case.default.0x5268b6
mov eax, dword [esi + 4]
mov dword [eax + 0x474], 0x2b110
jmp case.default.0x5268b6
mov eax, dword [esi + 4]
mov dword [eax + 0x474], 0x2ee00
jmp case.default.0x5268b6
mov eax, dword [esi + 4]
mov dword [eax + 0x474], 0x1f40
jmp case.default.0x5268b6
mov eax, dword [esi + 4]
mov dword [eax + 0x474], 0x3e80
jmp case.default.0x5268b6
mov eax, dword [esi + 4]
mov dword [eax + 0x474], 0x5622
jmp case.default.0x5268b6
mov eax, dword [esi + 4]
mov dword [eax + 0x474], 0x5dc0
jmp case.default.0x5268b6
mov eax, dword [esi + 4]
mov dword [eax + 0x474], 0x7d00
jmp case.default.0x5268b6
mov eax, dword [esi + 4]
mov dword [eax + 0x474], 0xac44
jmp case.default.0x5268b6
mov eax, dword [esi + 4]
mov dword [eax + 0x474], 0xbb80
jmp case.default.0x5268b6
mov eax, dword [esi + 4]
mov dword [eax + 0x474], 0x17700
jmp case.default.0x5268b6
mov dword [esp + 0x24], edi
movzx ecx, byte [esp + 0x2b]
mov edx, dword [esi + 4]
mov eax, ecx
shr eax, 4
test al, 8
je 0x5269f4
and eax, 7
mov dword [edx + 0x478], 2
sub eax, 0
je 0x5269e5
sub eax, 1
je 0x5269d6
sub eax, 1
je 0x5269c7
mov ebx, 1
jmp 0x526a08
mov eax, dword [esi + 4]
mov dword [eax + 0x47c], 3
jmp 0x526a08
mov eax, dword [esi + 4]
mov dword [eax + 0x47c], 2
jmp 0x526a08
mov eax, dword [esi + 4]
mov dword [eax + 0x47c], 1
jmp 0x526a08
inc eax
mov dword [edx + 0x478], eax
mov eax, dword [esi + 4]
mov dword [eax + 0x47c], 0
shr ecx, 1
and ecx, 7
mov dword [esp + 0x10], ecx
cmp ecx, 7
ja case.default.0x526a16
jmp dword [ecx*4 + 0x526ee8]
mov ecx, dword [esi + 4]
cmp dword [ecx + 0xf8], 0
je case.0x526a16.3
mov eax, dword [ecx + 0x128]
mov dword [ecx + 0x480], eax
jmp case.default.0x526a16
mov eax, dword [esi + 4]
mov dword [eax + 0x480], 8
jmp case.default.0x526a16
mov eax, dword [esi + 4]
mov dword [eax + 0x480], 0xc
jmp case.default.0x526a16
mov eax, dword [esi + 4]
mov dword [eax + 0x480], 0x10
jmp case.default.0x526a16
mov eax, dword [esi + 4]
mov dword [eax + 0x480], 0x14
jmp case.default.0x526a16
mov eax, dword [esi + 4]
mov dword [eax + 0x480], 0x18
jmp case.default.0x526a16
mov ebx, 1
mov ecx, dword [esi + 4]
mov ebp, 1
cmp dword [ecx + 0x480], 0x20
jne 0x526aa2
cmp dword [ecx + 0x47c], 0
cmovne ebx, ebp
test byte [esp + 0x2b], 1
cmovne ebx, ebp
test byte [esp + 0x29], 1
jne 0x526b58
cmp dword [ecx + 0xf8], 0
je 0x526ad0
mov eax, dword [ecx + 0x110]
cmp eax, dword [ecx + 0x114]
jne 0x526b58
mov ecx, dword [ecx + 0x38]
lea eax, [esp + 0x14]
push eax
lea eax, [esp + 0x2c]
push eax
lea edx, [esp + 0x18]
call fcn.00529630
add esp, 8
test eax, eax
je 0x526e77
mov edx, dword [esp + 0x10]
mov ecx, dword [esi + 4]
cmp edx, 0xffffffff
jne 0x526b40
mov eax, dword [esp + 0x14]
mov al, byte [esp + eax + 0x27]
mov byte [ecx + 0xe06], al
mov eax, dword [esi + 4]
mov dword [eax + 0xdc0], ebp
mov ecx, dword [esi + 4]
cmp dword [ecx + 0xe30], 0
jne 0x526b2e
push dword [ecx + 0x30]
mov ecx, dword [ecx + 0x20]
push 1
push esi
call ecx
add esp, 0xc
mov ecx, dword [esi]
mov eax, ebp
mov dword [ecx], 2
pop edi
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret
mov dword [ecx + 0x484], 0
mov eax, dword [esi + 4]
mov dword [eax + 0x488], edx
jmp 0x526be5
mov ecx, dword [ecx + 0x38]
lea eax, [esp + 0x14]
push eax
lea eax, [esp + 0x2c]
push eax
lea edx, [esp + 0x20]
call fcn.00529760
add esp, 8
test eax, eax
je 0x526e77
mov edx, dword [esp + 0x18]
mov eax, edx
mov edi, dword [esp + 0x1c]
and eax, edi
mov ecx, dword [esi + 4]
cmp eax, 0xffffffff
jne 0x526bd0
mov eax, dword [esp + 0x14]
mov al, byte [esp + eax + 0x27]
mov byte [ecx + 0xe06], al
mov eax, dword [esi + 4]
mov dword [eax + 0xdc0], ebp
mov eax, dword [esi + 4]
cmp dword [eax + 0xe30], 0
jne 0x526bbe
push dword [eax + 0x30]
mov eax, dword [eax + 0x20]
push 1
push esi
call eax
add esp, 0xc
mov eax, dword [esi]
mov dword [eax], 2
mov eax, ebp
pop edi
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret
mov dword [ecx + 0x484], ebp
mov eax, dword [esi + 4]
mov dword [eax + 0x488], edx
mov dword [eax + 0x48c], edi
mov ebp, dword [esp + 0x20]
test ebp, ebp
je 0x526c5f
mov ecx, dword [esi + 4]
lea edx, [esp + 0x10]
push 8
mov ecx, dword [ecx + 0x38]
call fcn.00528e30
add esp, 4
test eax, eax
je 0x526e77
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x18], ecx
mov byte [esp + eax + 0x28], cl
lea edi, [eax + 1]
cmp ebp, 7
jne 0x526c53
mov ecx, dword [esi + 4]
lea edx, [esp + 0x20]
push 8
mov ecx, dword [ecx + 0x38]
call fcn.00528e30
add esp, 4
test eax, eax
je 0x526e77
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x18]
mov byte [esp + edi + 0x28], al
inc edi
shl ecx, 8
or ecx, eax
mov dword [esp + 0x10], ecx
mov eax, dword [esi + 4]
inc ecx
mov dword [eax + 0x470], ecx
jmp 0x526c63
mov edi, dword [esp + 0x14]
mov ebp, dword [esp + 0x24]
test ebp, ebp
je 0x526cfb
mov ecx, dword [esi + 4]
lea edx, [esp + 0x10]
push 8
mov ecx, dword [ecx + 0x38]
call fcn.00528e30
add esp, 4
test eax, eax
je 0x526e77
mov eax, dword [esp + 0x10]
mov byte [esp + edi + 0x28], al
inc edi
mov dword [esp + 0x20], eax
cmp ebp, 0xc
je 0x526cec
mov ecx, dword [esi + 4]
lea edx, [esp + 0x24]
push 8
mov ecx, dword [ecx + 0x38]
call fcn.00528e30
add esp, 4
test eax, eax
je 0x526e77
mov ecx, dword [esp + 0x20]
mov eax, dword [esp + 0x24]
mov edx, dword [esi + 4]
shl ecx, 8
mov byte [esp + edi + 0x28], al
or ecx, eax
inc edi
mov dword [esp + 0x10], ecx
cmp ebp, 0xd
jne 0x526cdf
mov dword [edx + 0x474], ecx
jmp 0x526cfb
lea eax, [ecx + ecx*4]
add eax, eax
mov dword [edx + 0x474], eax
jmp 0x526cfb
imul ecx, eax, 0x3e8
mov eax, dword [esi + 4]
mov dword [eax + 0x474], ecx
mov ecx, dword [esi + 4]
lea edx, [esp + 0x10]
push 8
mov ecx, dword [ecx + 0x38]
call fcn.00528e30
add esp, 4
test eax, eax
je 0x526e77
xor al, al
lea edx, [esp + 0x28]
test edi, edi
je 0x526d37
movzx ecx, byte [edx]
lea edx, [edx + 1]
movzx eax, al
xor ecx, eax
mov al, byte [ecx + 0x5bd1e0]
sub edi, 1
jne 0x526d21
mov ecx, dword [esi + 4]
cmp al, byte [esp + 0x10]
je 0x526d58
cmp dword [ecx + 0xe30], 0
jne 0x526e62
push dword [ecx + 0x30]
mov eax, dword [ecx + 0x20]
jmp 0x526e5a
mov dword [ecx + 0xe8], 0
mov ecx, dword [esi + 4]
cmp dword [ecx + 0x484], 0
jne 0x526dfc
mov eax, dword [ecx + 0x488]
mov dword [ecx + 0x484], 1
mov ecx, dword [esi + 4]
mov edx, dword [ecx + 0xe4]
test edx, edx
je 0x526d93
mul edx
jmp 0x526df0
cmp dword [ecx + 0xf8], 0
je 0x526dc9
mov edx, dword [ecx + 0x110]
cmp edx, dword [ecx + 0x114]
jne 0x526e00
mul edx
mov dword [ecx + 0x488], eax
mov dword [ecx + 0x48c], edx
mov ecx, dword [esi + 4]
mov eax, dword [ecx + 0x114]
mov dword [ecx + 0xe8], eax
jmp 0x526dfc
test eax, eax
jne 0x526dea
mov dword [ecx + 0x488], eax
mov dword [ecx + 0x48c], eax
mov ecx, dword [esi + 4]
mov eax, dword [ecx + 0x470]
mov dword [ecx + 0xe8], eax
jmp 0x526dfc
mul dword [ecx + 0x470]
mov dword [ecx + 0x488], eax
mov dword [ecx + 0x48c], edx
test ebx, ebx
je 0x526e6a
mov eax, dword [esi + 4]
cmp dword [eax + 0xe30], 0
jne 0x526e16
push dword [eax + 0x30]
mov eax, dword [eax + 0x20]
push 3
jmp 0x526e5c
inc dword [eax + 0x1808]
mov eax, dword [esi]
mov dword [eax], 2
mov eax, 1
pop edi
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [esi + 4]
mov byte [eax + 0xe06], 0xff
mov eax, dword [esi + 4]
mov dword [eax + 0xdc0], 1
mov eax, dword [esi + 4]
cmp dword [eax + 0xe30], 0
jne 0x526e62
push dword [eax + 0x30]
mov eax, dword [eax + 0x20]
push 1
push esi
call eax
add esp, 0xc
mov eax, dword [esi]
mov dword [eax], 2
mov eax, 1
pop edi
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret
pop edi
xor eax, eax
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret