Function at 0x5265f0
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.00528cb0
add esp, 4
test eax, eax
je 0x526ca7
mov eax, dword [esp + 0x10]
cmp eax, 0xff
je 0x526c61
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 0x526640
movzx edi, byte [esp + 0x2a]
mov ebx, ebp
mov ecx, edi
shr ecx, 4
cmp ecx, 0xf
ja case.default.0x52669a
movzx eax, byte [ecx + 0x526cc8]
jmp dword [eax*4 + 0x526cb4]
mov ebx, 1
jmp case.default.0x52669a
mov eax, dword [esi + 4]
mov dword [eax + 0x470], 0xc0
jmp case.default.0x52669a
add ecx, 0xfffffffe
mov edx, 0x240
jmp 0x5266cf
mov dword [esp + 0x20], ecx
jmp case.default.0x52669a
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.0x5266e6
jmp dword [edi*4 + 0x526cd8]
mov ecx, dword [esi + 4]
cmp dword [ecx + 0xf8], 0
je 0x52670a
mov eax, dword [ecx + 0x120]
mov dword [ecx + 0x474], eax
jmp case.default.0x5266e6
mov ebx, 1
jmp case.default.0x5266e6
mov eax, dword [esi + 4]
mov dword [eax + 0x474], 0x15888
jmp case.default.0x5266e6
mov eax, dword [esi + 4]
mov dword [eax + 0x474], 0x2b110
jmp case.default.0x5266e6
mov eax, dword [esi + 4]
mov dword [eax + 0x474], 0x2ee00
jmp case.default.0x5266e6
mov eax, dword [esi + 4]
mov dword [eax + 0x474], 0x1f40
jmp case.default.0x5266e6
mov eax, dword [esi + 4]
mov dword [eax + 0x474], 0x3e80
jmp case.default.0x5266e6
mov eax, dword [esi + 4]
mov dword [eax + 0x474], 0x5622
jmp case.default.0x5266e6
mov eax, dword [esi + 4]
mov dword [eax + 0x474], 0x5dc0
jmp case.default.0x5266e6
mov eax, dword [esi + 4]
mov dword [eax + 0x474], 0x7d00
jmp case.default.0x5266e6
mov eax, dword [esi + 4]
mov dword [eax + 0x474], 0xac44
jmp case.default.0x5266e6
mov eax, dword [esi + 4]
mov dword [eax + 0x474], 0xbb80
jmp case.default.0x5266e6
mov eax, dword [esi + 4]
mov dword [eax + 0x474], 0x17700
jmp case.default.0x5266e6
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 0x526824
and eax, 7
mov dword [edx + 0x478], 2
sub eax, 0
je 0x526815
sub eax, 1
je 0x526806
sub eax, 1
je 0x5267f7
mov ebx, 1
jmp 0x526838
mov eax, dword [esi + 4]
mov dword [eax + 0x47c], 3
jmp 0x526838
mov eax, dword [esi + 4]
mov dword [eax + 0x47c], 2
jmp 0x526838
mov eax, dword [esi + 4]
mov dword [eax + 0x47c], 1
jmp 0x526838
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.0x526846
jmp dword [ecx*4 + 0x526d18]
mov ecx, dword [esi + 4]
cmp dword [ecx + 0xf8], 0
je case.0x526846.3
mov eax, dword [ecx + 0x128]
mov dword [ecx + 0x480], eax
jmp case.default.0x526846
mov eax, dword [esi + 4]
mov dword [eax + 0x480], 8
jmp case.default.0x526846
mov eax, dword [esi + 4]
mov dword [eax + 0x480], 0xc
jmp case.default.0x526846
mov eax, dword [esi + 4]
mov dword [eax + 0x480], 0x10
jmp case.default.0x526846
mov eax, dword [esi + 4]
mov dword [eax + 0x480], 0x14
jmp case.default.0x526846
mov eax, dword [esi + 4]
mov dword [eax + 0x480], 0x18
jmp case.default.0x526846
mov ebx, 1
mov ecx, dword [esi + 4]
mov ebp, 1
cmp dword [ecx + 0x480], 0x20
jne 0x5268d2
cmp dword [ecx + 0x47c], 0
cmovne ebx, ebp
test byte [esp + 0x2b], 1
cmovne ebx, ebp
test byte [esp + 0x29], 1
jne 0x526988
cmp dword [ecx + 0xf8], 0
je 0x526900
mov eax, dword [ecx + 0x110]
cmp eax, dword [ecx + 0x114]
jne 0x526988
mov ecx, dword [ecx + 0x38]
lea eax, [esp + 0x14]
push eax
lea eax, [esp + 0x2c]
push eax
lea edx, [esp + 0x18]
call fcn.005294b0
add esp, 8
test eax, eax
je 0x526ca7
mov edx, dword [esp + 0x10]
mov ecx, dword [esi + 4]
cmp edx, 0xffffffff
jne 0x526970
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 0x52695e
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 0x526a15
mov ecx, dword [ecx + 0x38]
lea eax, [esp + 0x14]
push eax
lea eax, [esp + 0x2c]
push eax
lea edx, [esp + 0x20]
call fcn.005295e0
add esp, 8
test eax, eax
je 0x526ca7
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 0x526a00
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 0x5269ee
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 0x526a8f
mov ecx, dword [esi + 4]
lea edx, [esp + 0x10]
push 8
mov ecx, dword [ecx + 0x38]
call fcn.00528cb0
add esp, 4
test eax, eax
je 0x526ca7
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 0x526a83
mov ecx, dword [esi + 4]
lea edx, [esp + 0x20]
push 8
mov ecx, dword [ecx + 0x38]
call fcn.00528cb0
add esp, 4
test eax, eax
je 0x526ca7
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 0x526a93
mov edi, dword [esp + 0x14]
mov ebp, dword [esp + 0x24]
test ebp, ebp
je 0x526b2b
mov ecx, dword [esi + 4]
lea edx, [esp + 0x10]
push 8
mov ecx, dword [ecx + 0x38]
call fcn.00528cb0
add esp, 4
test eax, eax
je 0x526ca7
mov eax, dword [esp + 0x10]
mov byte [esp + edi + 0x28], al
inc edi
mov dword [esp + 0x20], eax
cmp ebp, 0xc
je 0x526b1c
mov ecx, dword [esi + 4]
lea edx, [esp + 0x24]
push 8
mov ecx, dword [ecx + 0x38]
call fcn.00528cb0
add esp, 4
test eax, eax
je 0x526ca7
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 0x526b0f
mov dword [edx + 0x474], ecx
jmp 0x526b2b
lea eax, [ecx + ecx*4]
add eax, eax
mov dword [edx + 0x474], eax
jmp 0x526b2b
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.00528cb0
add esp, 4
test eax, eax
je 0x526ca7
xor al, al
lea edx, [esp + 0x28]
test edi, edi
je 0x526b67
movzx ecx, byte [edx]
lea edx, [edx + 1]
movzx eax, al
xor ecx, eax
mov al, byte [ecx + 0x5bd400]
sub edi, 1
jne 0x526b51
mov ecx, dword [esi + 4]
cmp al, byte [esp + 0x10]
je 0x526b88
cmp dword [ecx + 0xe30], 0
jne 0x526c92
push dword [ecx + 0x30]
mov eax, dword [ecx + 0x20]
jmp 0x526c8a
mov dword [ecx + 0xe8], 0
mov ecx, dword [esi + 4]
cmp dword [ecx + 0x484], 0
jne 0x526c2c
mov eax, dword [ecx + 0x488]
mov dword [ecx + 0x484], 1
mov ecx, dword [esi + 4]
mov edx, dword [ecx + 0xe4]
test edx, edx
je 0x526bc3
mul edx
jmp 0x526c20
cmp dword [ecx + 0xf8], 0
je 0x526bf9
mov edx, dword [ecx + 0x110]
cmp edx, dword [ecx + 0x114]
jne 0x526c30
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 0x526c2c
test eax, eax
jne 0x526c1a
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 0x526c2c
mul dword [ecx + 0x470]
mov dword [ecx + 0x488], eax
mov dword [ecx + 0x48c], edx
test ebx, ebx
je 0x526c9a
mov eax, dword [esi + 4]
cmp dword [eax + 0xe30], 0
jne 0x526c46
push dword [eax + 0x30]
mov eax, dword [eax + 0x20]
push 3
jmp 0x526c8c
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 0x526c92
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