Function at 0x528f80
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 + 0x18], 0
push edi
mov dword [esp + 0x18], 0
mov edi, 2
mov edx, dword [esi + 4]
movzx eax, byte [edx + 0xe04]
mov byte [esp + 0x28], al
mov al, byte [edx + 0xe05]
movzx ebx, al
shr ebx, 1
mov byte [esp + 0x29], al
and ebx, 1
mov ecx, dword [esi + 4]
lea edx, [esp + 0x10]
push 8
mov ecx, dword [ecx + 0x38]
call fcn.0052b130
add esp, 4
test eax, eax
je 0x52960a
mov eax, dword [esp + 0x10]
cmp eax, 0xff
je 0x5295c4
mov byte [esp + edi + 0x28], al
inc edi
mov dword [esp + 0x14], edi
lea eax, [edi - 2]
cmp eax, 2
jb 0x528fc4
movzx edi, byte [esp + 0x2a]
mov ebp, ebx
mov ecx, edi
shr ecx, 4
cmp ecx, 0xf
ja case.default.0x529018
movzx eax, byte [ecx + 0x529628]
jmp dword [eax*4 + 0x529614]
mov ebp, 1
jmp case.default.0x529018
mov eax, dword [esi + 4]
mov dword [eax + 0x470], 0xc0
jmp case.default.0x529018
add ecx, 0xfffffffe
mov edx, 0x240
jmp 0x52904d
mov dword [esp + 0x1c], ecx
jmp case.default.0x529018
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.0x529064
jmp dword [edi*4 + 0x529638]
mov ecx, dword [esi + 4]
cmp dword [ecx + 0xf8], 0
je 0x529088
mov eax, dword [ecx + 0x120]
mov dword [ecx + 0x474], eax
jmp case.default.0x529064
mov ebp, 1
jmp case.default.0x529064
mov eax, dword [esi + 4]
mov dword [eax + 0x474], 0x15888
jmp case.default.0x529064
mov eax, dword [esi + 4]
mov dword [eax + 0x474], 0x2b110
jmp case.default.0x529064
mov eax, dword [esi + 4]
mov dword [eax + 0x474], 0x2ee00
jmp case.default.0x529064
mov eax, dword [esi + 4]
mov dword [eax + 0x474], 0x1f40
jmp case.default.0x529064
mov eax, dword [esi + 4]
mov dword [eax + 0x474], 0x3e80
jmp case.default.0x529064
mov eax, dword [esi + 4]
mov dword [eax + 0x474], 0x5622
jmp case.default.0x529064
mov eax, dword [esi + 4]
mov dword [eax + 0x474], 0x5dc0
jmp case.default.0x529064
mov eax, dword [esi + 4]
mov dword [eax + 0x474], 0x7d00
jmp case.default.0x529064
mov eax, dword [esi + 4]
mov dword [eax + 0x474], 0xac44
jmp case.default.0x529064
mov eax, dword [esi + 4]
mov dword [eax + 0x474], 0xbb80
jmp case.default.0x529064
mov eax, dword [esi + 4]
mov dword [eax + 0x474], 0x17700
jmp case.default.0x529064
mov dword [esp + 0x18], edi
mov bl, byte [esp + 0x2b]
mov edx, dword [esi + 4]
movzx ecx, bl
mov eax, ecx
shr eax, 4
test al, 8
je 0x5291a4
and eax, 7
mov dword [edx + 0x478], 2
sub eax, 0
je 0x529195
sub eax, 1
je 0x529186
sub eax, 1
je 0x529177
mov ebp, 1
jmp 0x5291b8
mov eax, dword [esi + 4]
mov dword [eax + 0x47c], 3
jmp 0x5291b8
mov eax, dword [esi + 4]
mov dword [eax + 0x47c], 2
jmp 0x5291b8
mov eax, dword [esi + 4]
mov dword [eax + 0x47c], 1
jmp 0x5291b8
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.0x5291c6
jmp dword [ecx*4 + 0x529678]
mov ecx, dword [esi + 4]
cmp dword [ecx + 0xf8], 0
je case.0x5291c6.3
mov eax, dword [ecx + 0x128]
mov dword [ecx + 0x480], eax
jmp case.default.0x5291c6
mov eax, dword [esi + 4]
mov dword [eax + 0x480], 8
jmp case.default.0x5291c6
mov eax, dword [esi + 4]
mov dword [eax + 0x480], 0xc
jmp case.default.0x5291c6
mov eax, dword [esi + 4]
mov dword [eax + 0x480], 0x10
jmp case.default.0x5291c6
mov eax, dword [esi + 4]
mov dword [eax + 0x480], 0x14
jmp case.default.0x5291c6
mov eax, dword [esi + 4]
mov dword [eax + 0x480], 0x18
jmp case.default.0x5291c6
mov ebp, 1
test bl, 1
mov ebx, 1
cmovne ebp, ebx
test byte [esp + 0x29], bl
jne 0x5292f2
mov ecx, dword [esi + 4]
cmp dword [ecx + 0xf8], 0
je 0x52926a
mov eax, dword [ecx + 0x110]
cmp eax, dword [ecx + 0x114]
jne 0x5292f2
mov ecx, dword [ecx + 0x38]
lea eax, [esp + 0x14]
push eax
lea eax, [esp + 0x2c]
push eax
lea edx, [esp + 0x18]
call fcn.0052b8d0
add esp, 8
test eax, eax
je 0x52960a
mov edx, dword [esp + 0x10]
mov ecx, dword [esi + 4]
cmp edx, 0xffffffff
jne 0x5292da
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], ebx
mov ecx, dword [esi + 4]
cmp dword [ecx + 0xe30], 0
jne 0x5292c8
push dword [ecx + 0x30]
mov ecx, dword [ecx + 0x20]
push 1
push esi
call ecx
add esp, 0xc
mov ecx, dword [esi]
mov eax, ebx
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 0x529382
mov ecx, dword [esi + 4]
lea eax, [esp + 0x14]
push eax
lea eax, [esp + 0x2c]
push eax
mov ecx, dword [ecx + 0x38]
lea edx, [esp + 0x28]
call fcn.0052ba00
add esp, 8
test eax, eax
je 0x52960a
mov edx, dword [esp + 0x20]
mov eax, edx
mov edi, dword [esp + 0x24]
and eax, edi
mov ecx, dword [esi + 4]
cmp eax, 0xffffffff
jne 0x52936d
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], ebx
mov eax, dword [esi + 4]
cmp dword [eax + 0xe30], 0
jne 0x52935b
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, ebx
pop edi
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret
mov dword [ecx + 0x484], ebx
mov eax, dword [esi + 4]
mov dword [eax + 0x488], edx
mov dword [eax + 0x48c], edi
cmp dword [esp + 0x1c], 0
je 0x5293f7
mov ecx, dword [esi + 4]
lea edx, [esp + 0x10]
push 8
mov ecx, dword [ecx + 0x38]
call fcn.0052b130
add esp, 4
test eax, eax
je 0x52960a
cmp dword [esp + 0x1c], 7
mov eax, dword [esp + 0x14]
mov ebx, dword [esp + 0x10]
mov byte [esp + eax + 0x28], bl
lea edi, [eax + 1]
jne 0x5293e9
mov ecx, dword [esi + 4]
lea edx, [esp + 0x1c]
push 8
mov ecx, dword [ecx + 0x38]
call fcn.0052b130
add esp, 4
test eax, eax
je 0x52960a
mov eax, dword [esp + 0x1c]
mov byte [esp + edi + 0x28], al
inc edi
shl ebx, 8
or ebx, eax
mov dword [esp + 0x10], ebx
mov eax, dword [esi + 4]
lea ecx, [ebx + 1]
mov dword [eax + 0x470], ecx
jmp 0x5293fb
mov edi, dword [esp + 0x14]
cmp dword [esp + 0x18], 0
je 0x52948e
mov ecx, dword [esi + 4]
lea edx, [esp + 0x10]
push 8
mov ecx, dword [ecx + 0x38]
call fcn.0052b130
add esp, 4
test eax, eax
je 0x52960a
mov ebx, dword [esp + 0x10]
mov byte [esp + edi + 0x28], bl
inc edi
cmp dword [esp + 0x18], 0xc
je 0x52947f
mov ecx, dword [esi + 4]
lea edx, [esp + 0x1c]
push 8
mov ecx, dword [ecx + 0x38]
call fcn.0052b130
add esp, 4
test eax, eax
je 0x52960a
mov eax, dword [esp + 0x1c]
mov ecx, dword [esi + 4]
shl ebx, 8
mov byte [esp + edi + 0x28], al
or ebx, eax
inc edi
mov dword [esp + 0x10], ebx
cmp dword [esp + 0x18], 0xd
jne 0x529472
mov dword [ecx + 0x474], ebx
jmp 0x52948e
lea eax, [ebx + ebx*4]
add eax, eax
mov dword [ecx + 0x474], eax
jmp 0x52948e
mov eax, dword [esi + 4]
imul ecx, ebx, 0x3e8
mov dword [eax + 0x474], ecx
mov ecx, dword [esi + 4]
lea edx, [esp + 0x10]
push 8
mov ecx, dword [ecx + 0x38]
call fcn.0052b130
add esp, 4
test eax, eax
je 0x52960a
xor al, al
lea edx, [esp + 0x28]
test edi, edi
je 0x5294ca
movzx ecx, byte [edx]
lea edx, [edx + 1]
movzx eax, al
xor ecx, eax
mov al, byte [ecx + 0x5bf250]
sub edi, 1
jne 0x5294b4
mov ecx, dword [esi + 4]
cmp al, byte [esp + 0x10]
je 0x5294eb
cmp dword [ecx + 0xe30], 0
jne 0x5295f5
push dword [ecx + 0x30]
mov eax, dword [ecx + 0x20]
jmp 0x5295ed
mov dword [ecx + 0xe8], 0
mov ecx, dword [esi + 4]
cmp dword [ecx + 0x484], 0
jne 0x52958f
mov eax, dword [ecx + 0x488]
mov dword [ecx + 0x484], 1
mov ecx, dword [esi + 4]
mov edx, dword [ecx + 0xe4]
test edx, edx
je 0x529526
mul edx
jmp 0x529583
cmp dword [ecx + 0xf8], 0
je 0x52955c
mov edx, dword [ecx + 0x110]
cmp edx, dword [ecx + 0x114]
jne 0x529593
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 0x52958f
test eax, eax
jne 0x52957d
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 0x52958f
mul dword [ecx + 0x470]
mov dword [ecx + 0x488], eax
mov dword [ecx + 0x48c], edx
test ebp, ebp
je 0x5295fd
mov eax, dword [esi + 4]
cmp dword [eax + 0xe30], 0
jne 0x5295a9
push dword [eax + 0x30]
mov eax, dword [eax + 0x20]
push 3
jmp 0x5295ef
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 0x5295f5
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