Function at 0x4880b0
Capabilities:
Encode data using xor

Disassembly:
push ebp
lea ebp, [esp - 0x84c]
sub esp, 0x84c
push 0xffffffffffffffff
push 0x5148b0
mov eax, dword fs:[0]
push eax
sub esp, 0x68
mov eax, dword [0x544354]
xor eax, ebp
mov dword [ebp + 0x848], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, ecx
mov dword [ebp - 0x10], edi
push 0x63
call fcn.00415f30
mov ecx, dword [edi]
call fcn.0046b5f0
mov dword [ebp - 0x68], 0
mov dword [ebp - 0x6c], edx
xor edx, edx
mov dword [ebp - 0x64], edx
mov dword [ebp - 0x60], edx
mov dword [ebp - 0x74], eax
mov dword [0x57f460], 0xffffffff
mov dword [ebp - 0x5c], edx
mov byte [ebp - 0x58], dl
mov dword [ebp - 4], edx
xor ebx, ebx
cmp dword [edi + 0x74], ebx
jbe 0x488171
mov ecx, dword [ebp - 0x10]
xor edi, edi
mov esi, dword [ecx + 0x70]
mov eax, dword [esi + edi]
cmp eax, dword [ecx + 0x98]
jne 0x488165
mov eax, dword [esi + edi + 4]
cmp eax, dword [ecx + 0x9c]
jne 0x488165
mov esi, dword [esi + edi + 8]
lea ecx, [ebp - 0x68]
push 1
call fcn.0041ad70
mov edx, dword [ebp - 0x64]
mov eax, dword [ebp - 0x68]
mov ecx, dword [ebp - 0x10]
mov dword [eax + edx*4 - 4], esi
inc ebx
add edi, 0x10
cmp ebx, dword [ecx + 0x74]
jb 0x488130
mov edi, dword [ebp - 0x10]
xor ecx, ecx
mov eax, edx
mov edx, 0x818
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.004f847f
push 0x4897b0
push 0x20
push dword [edi + 0x4c]
mov ebx, eax
push dword [edi + 0x48]
mov dword [ebp - 0x20], ebx
call fcn.00502bb0
mov eax, dword [edi + 0x60]
mov esi, 1
shl eax, 4
add esp, 0x14
shr eax, 3
mov dword [ebp - 0x50], esi
cmp eax, esi
jbe 0x4881c1
add esi, esi
mov dword [ebp - 0x50], esi
cmp esi, eax
jb 0x4881b8
lea eax, [esi - 1]
push esi
mov dword [ebp - 0x4c], eax
call fcn.004f847f
push esi
push 0
push eax
mov dword [ebp - 0x54], eax
call fcn.004fa860
add esp, 0x10
mov byte [ebp - 4], 1
xor ecx, ecx
mov dword [ebp - 0x34], ecx
cmp dword [edi + 0x60], ecx
jbe 0x48826b
xor ebx, ebx
mov esi, dword [edi + 0x5c]
add esi, ebx
mov eax, dword [esi]
cmp eax, dword [edi + 0x98]
jne 0x48825c
mov eax, dword [esi + 4]
cmp eax, dword [edi + 0x9c]
jne 0x48825c
mov edi, dword [esi + 8]
mov edx, edi
mov esi, dword [esi + 0xc]
mov eax, esi
shrd edx, eax, 3
and edx, dword [ebp - 0x4c]
shr eax, 3
mov eax, dword [ebp - 0x54]
movzx ecx, byte [edx + eax]
mov eax, edi
and eax, 7
bts ecx, eax
mov eax, dword [ebp - 0x54]
shrd edi, esi, 0x1e
shr esi, 0x1e
mov byte [edx + eax], cl
mov ecx, edi
mov edx, dword [ebp - 0x54]
and edi, 7
shrd ecx, esi, 3
and ecx, dword [ebp - 0x4c]
shr esi, 3
movzx eax, byte [ecx + eax]
bts eax, edi
mov edi, dword [ebp - 0x10]
mov byte [ecx + edx], al
mov ecx, dword [ebp - 0x34]
inc ecx
add ebx, 0x28
mov dword [ebp - 0x34], ecx
cmp ecx, dword [edi + 0x60]
jb 0x4881f0
mov ebx, dword [ebp - 0x20]
lea eax, [ebp + 0x48]
push eax
call fcn.00461f30
xor eax, eax
xor edx, edx
mov esi, SysReAllocString
mov dword [ebp - 0x3c], edx
mov dword [ebp - 0x34], esi
mov dword [ebp - 0x24], eax
cmp dword [ebp - 0x64], eax
jbe 0x488314
mov ecx, ebx
mov dword [ebp - 0x2c], ecx
jmp 0x48829c
mov edx, dword [ebp - 0x3c]
mov esi, dword [ebp - 0x34]
mov ebx, dword [ebp - 0x68]
mov eax, dword [ebx + eax*4]
mov dword [ecx], eax
cmp eax, edx
jbe 0x4882ab
mov dword [ebp - 0x3c], eax
cmp eax, esi
jae 0x4882b2
mov dword [ebp - 0x34], eax
lea edi, [ecx + 8]
xor ebx, ebx
mov byte [edi + 0x808], 0
mov edi, edi
mov esi, dword [ecx]
movzx eax, bl
mov edx, dword [ebp + eax*8 + 0x48]
mov eax, dword [ebp + eax*8 + 0x4c]
test esi, esi
je 0x4882eb
movzx ecx, dl
shrd edx, eax, 8
shr eax, 8
xor edx, dword [ebp + ecx*8 + 0x48]
xor eax, dword [ebp + ecx*8 + 0x4c]
sub esi, 1
jne 0x4882d1
mov ecx, dword [ebp - 0x2c]
mov dword [edi], edx
inc ebx
mov dword [edi + 4], eax
add edi, 8
cmp ebx, 0x100
jb 0x4882c0
mov eax, dword [ebp - 0x24]
add ecx, 0x818
inc eax
mov dword [ebp - 0x2c], ecx
mov dword [ebp - 0x24], eax
cmp eax, dword [ebp - 0x64]
jb 0x488296
mov edi, dword [ebp - 0x10]
push 0x400000
call fcn.004f847f
mov ecx, dword [edi]
add esp, 4
mov ebx, eax
mov dword [ebp - 0x1c], ebx
mov edx, dword [ecx]
push 0
push 0
push 0
call dword [edx + 0x10]
mov ecx, dword [edi]
push 0x400000
push ebx
mov eax, dword [ecx]
call dword [eax + 0xc]
mov ecx, dword [ebp - 0x64]
mov esi, eax
mov dword [ebp - 0x14], esi
test ecx, ecx
je 0x48838d
mov esi, dword [ebp - 0x20]
mov edi, ecx
mov ebx, eax
mov ecx, dword [esi]
cmp ebx, ecx
jb 0x488379
push ecx
push dword [ebp - 0x1c]
push 0
push 0
call fcn.00461c90
mov dword [esi + 0x808], eax
mov dword [esi + 0x80c], edx
mov byte [esi + 0x810], 1
add esi, 0x818
sub edi, 1
jne 0x488353
mov edi, dword [ebp - 0x10]
mov esi, dword [ebp - 0x14]
mov ebx, dword [ebp - 0x1c]
mov dword [ebp - 0x44], 0
xor edx, edx
mov dword [ebp - 0x40], 0
mov dword [ebp - 0x18], edx
lea eax, [edx + 0x40]
mov dword [ebp - 0x70], edx
cmp eax, esi
jae 0x4884a2
cmp byte [edx + ebx], 0x7b
jne 0x4884a2
cmp byte [edx + ebx + 1], 0x52
jne 0x4884a2
cmp byte [edx + ebx + 2], 0x42
jne 0x4884a2
cmp byte [edx + ebx + 3], 0x7d
jne 0x4884a2
cmp byte [edx + ebx + 0x14], 1
jne 0x4884a2
mov esi, dword [edx + ebx + 0xc]
mov eax, dword [ebp - 0x3c]
add esi, edx
add eax, esi
cmp eax, dword [ebp - 0x14]
jae 0x48849f
mov eax, dword [edi + 0x98]
xor ecx, ecx
mov dword [ebp], eax
mov eax, dword [edi + 0x9c]
push 0x4897b0
mov dword [ebp + 4], eax
mov eax, edx
add eax, dword [ebp - 0x44]
push 0x20
push dword [edi + 0x4c]
adc ecx, dword [ebp - 0x40]
push dword [edi + 0x48]
mov dword [ebp + 0x10], eax
lea eax, [ebp]
push eax
mov dword [ebp + 0x14], ecx
call fcn.0050318d
add esp, 0x14
test eax, eax
je 0x48849c
mov ecx, dword [ebp - 0x64]
mov edx, esi
mov esi, dword [ebp - 0x14]
mov ebx, dword [ebp - 0x1c]
mov dword [ebp - 0x18], edx
test ecx, ecx
je 0x4883a0
mov esi, dword [ebp - 0x20]
add ebx, edx
add esi, 0x810
mov edi, ecx
lea ebx, [ebx]
push dword [esi - 0x810]
push ebx
push 0
push 0
call fcn.00461c90
mov dword [esi - 8], eax
lea esi, [esi + 0x818]
mov dword [esi - 0x81c], edx
mov byte [esi - 0x818], 1
sub edi, 1
jne 0x488460
mov edx, dword [ebp - 0x18]
mov edi, dword [ebp - 0x10]
mov esi, dword [ebp - 0x14]
mov ebx, dword [ebp - 0x1c]
jmp 0x4883a0
mov edx, dword [ebp - 0x18]
mov esi, dword [ebp - 0x14]
mov eax, dword [ebp - 0x64]
xor ecx, ecx
mov dword [ebp - 0x30], ecx
test eax, eax
je 0x488697
mov ebx, dword [ebp - 0x20]
add ebx, 0x808
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x38], ebx
cmp byte [ebx + 8], 0
je 0x488603
mov esi, dword [ebx]
mov edx, 1
mov edi, dword [ebx + 4]
mov ecx, esi
and ecx, 7
mov dword [ebp + 0x28], esi
shl edx, cl
mov eax, edi
mov ecx, esi
mov dword [ebp + 0x2c], edi
shrd ecx, eax, 3
and ecx, dword [ebp - 0x4c]
shr eax, 3
mov eax, dword [ebp - 0x54]
test byte [ecx + eax], dl
je 0x4885fa
mov edx, dword [ebp - 0x54]
mov eax, 1
shrd esi, edi, 0x1e
shr edi, 0x1e
mov ecx, esi
shrd esi, edi, 3
and ecx, 7
and esi, dword [ebp - 0x4c]
shl eax, cl
shr edi, 3
mov edi, dword [ebp - 0x10]
test byte [esi + edx], al
je 0x48868f
mov eax, dword [edi + 0x98]
push 0x4896d0
mov dword [ebp + 0x20], eax
mov eax, dword [edi + 0x9c]
push 0x28
push dword [edi + 0x60]
mov dword [ebp + 0x24], eax
mov eax, dword [ebx - 0x808]
push dword [edi + 0x5c]
mov dword [ebp + 0x40], eax
lea eax, [ebp + 0x20]
push eax
call fcn.0050318d
mov ebx, eax
add esp, 0x14
test ebx, ebx
je 0x48868c
mov eax, dword [ebx + 0x1c]
mov edi, dword [ebx + 0x14]
mov edx, dword [ebx + 0x18]
mov ecx, dword [ebx + 0x10]
cmp eax, edi
jb 0x488584
ja 0x48857c
cmp edx, ecx
jbe 0x488584
mov esi, edx
sub esi, ecx
sbb eax, edi
jmp 0x48858d
mov esi, ecx
mov eax, edi
sub esi, edx
sbb eax, dword [ebx + 0x1c]
mov ecx, dword [ebp - 0x18]
add ecx, dword [ebp - 0x44]
mov dword [ebp - 0x2c], ecx
mov ecx, 0
adc ecx, dword [ebp - 0x40]
mov dword [ebp - 0x24], ecx
cmp ecx, edi
mov ecx, dword [ebx + 0x10]
jb 0x4885c3
ja 0x4885af
cmp dword [ebp - 0x2c], ecx
jbe 0x4885c3
mov edi, dword [ebp - 0x2c]
mov dword [ebp - 0x48], edi
sub dword [ebp - 0x48], ecx
mov ecx, dword [ebp - 0x24]
sbb ecx, dword [ebx + 0x14]
mov edi, dword [ebp - 0x24]
jmp 0x4885d0
sub ecx, dword [ebp - 0x2c]
mov dword [ebp - 0x48], ecx
mov ecx, edi
mov edi, dword [ebp - 0x24]
sbb ecx, edi
and edx, dword [ebx + 0x1c]
cmp edx, 0xffffffff
je 0x4885e3
cmp ecx, eax
ja 0x4885f7
jb 0x4885e3
cmp dword [ebp - 0x48], esi
jae 0x4885f7
mov eax, dword [ebp - 0x2c]
mov dword [ebx + 0x18], eax
mov dword [ebx + 0x1c], edi
mov ecx, dword [ebp + 0x40]
mov ebx, dword [ebp - 0x38]
mov dword [ebp - 0x30], ecx
jmp 0x4885fd
mov ebx, dword [ebp - 0x38]
mov ecx, dword [ebp - 0x30]
mov edi, dword [ebp - 0x10]
mov eax, dword [ebp - 0x28]
add ebx, 0x818
sub eax, 1
mov dword [ebp - 0x38], ebx
mov dword [ebp - 0x28], eax
jne 0x4884c1
mov edx, dword [ebp - 0x18]
mov esi, dword [ebp - 0x14]
mov ebx, dword [ebp - 0x1c]
test ecx, ecx
je 0x48869a
mov eax, dword [ebp - 0x3c]
add ecx, edx
add eax, ecx
cmp eax, esi
jae 0x48869a
cmp byte [edx + ebx], 0
je 0x48869a
mov esi, dword [ebp - 0x20]
mov eax, ecx
mov edi, dword [ebp - 0x64]
add ebx, eax
mov dword [ebp - 0x18], eax
add esi, 0x810
lea esp, [esp]
push dword [esi - 0x810]
push ebx
push 0
push 0
call fcn.00461c90
mov dword [esi - 8], eax
lea esi, [esi + 0x818]
mov dword [esi - 0x81c], edx
mov byte [esi - 0x818], 1
sub edi, 1
jne 0x488650
mov edx, dword [ebp - 0x18]
mov edi, dword [ebp - 0x10]
mov esi, dword [ebp - 0x14]
mov ebx, dword [ebp - 0x1c]
jmp 0x4883a0
mov ebx, dword [ebp - 0x38]
mov ecx, dword [ebp - 0x30]
jmp 0x488600
mov ebx, dword [ebp - 0x1c]
mov ecx, dword [ebp - 0x3c]
lea eax, [edx + ecx]
cmp eax, esi
jb 0x488766
sub esi, edx
cmp esi, ecx
jne 0x488756
call fcn.004954a0
mov eax, dword [ebp - 0x18]
push esi
add eax, ebx
push eax
push ebx
call fcn.004fa2e0
mov eax, dword [ebp - 0x44]
add esp, 0xc
add eax, dword [ebp - 0x70]
mov ecx, dword [edi]
adc dword [ebp - 0x40], 0
mov dword [ebp - 0x44], eax
mov eax, 0x400000
sub eax, esi
mov dword [ebp - 0x18], 0
mov edx, dword [ecx]
push eax
lea eax, [esi + ebx]
push eax
call dword [edx + 0xc]
mov ecx, dword [ebp - 0x74]
add esi, eax
mov edi, dword [edi]
mov eax, dword [ebp - 0x6c]
mov dword [ebp - 0x14], esi
cmp ecx, 0x7fffffff
jne 0x488716
cmp eax, ecx
jne 0x488716
mov edx, dword [ebp - 0x18]
mov dword [0x57f460], 0xffffffff
jmp 0x488759
push eax
push ecx
push dword [ebp - 0x40]
push dword [ebp - 0x44]
call fcn.00493da0
mov ecx, dword [edi + 0x2214]
mov esi, eax
cmp byte [ecx + 0x6148], 0
jne 0x48874d
cmp esi, dword [0x57f460]
je 0x48874d
push 0
push 0x64
cdq
push edx
push eax
push 0x525f34
call fcn.00497630
mov edx, dword [ebp - 0x18]
mov dword [0x57f460], esi
mov esi, dword [ebp - 0x14]
mov eax, dword [ebp - 0x34]
add eax, edx
cmp eax, esi
jae 0x4887f8
mov ecx, dword [ebp - 0x64]
test ecx, ecx
je 0x4887ec
mov edi, dword [ebp - 0x20]
xor ebx, ebx
add edi, 0x808
mov dword [ebp - 0x24], ecx
nop
mov eax, dword [edi - 0x808]
add eax, edx
cmp eax, esi
jae 0x4887d4
mov ecx, dword [ebp - 0x1c]
movzx eax, byte [eax + ecx]
movzx ecx, byte [edx + ecx]
xor eax, dword [edi]
add ecx, ebx
mov edx, dword [ebp - 0x20]
movzx eax, al
mov esi, dword [ebp + eax*8 + 0x48]
xor esi, dword [edx + ecx*8 + 8]
mov edx, dword [ebp + eax*8 + 0x4c]
mov eax, dword [ebp - 0x20]
xor edx, dword [eax + ecx*8 + 0xc]
mov eax, dword [edi]
mov ecx, dword [edi + 4]
shrd eax, ecx, 8
shr ecx, 8
xor esi, eax
xor edx, ecx
mov dword [edi], esi
mov ecx, dword [ebp - 0x24]
mov esi, dword [ebp - 0x14]
mov dword [edi + 4], edx
mov edx, dword [ebp - 0x18]
jmp 0x4887d8
mov byte [edi + 8], 0
add ebx, 0x103
add edi, 0x818
sub ecx, 1
mov dword [ebp - 0x24], ecx
jne 0x488780
mov edi, dword [ebp - 0x10]
inc edx
mov ebx, dword [ebp - 0x1c]
jmp 0x48839d
push ebx
call fcn.004f8488
push dword [ebp - 0x20]
call fcn.004f8488
mov esi, dword [ebp - 0x10]
add esp, 8
mov esi, dword [esi]
push 0
push 0x64
push 0
push 0x64
call fcn.00493da0
mov ecx, dword [esi + 0x2214]
mov edi, eax
cmp byte [ecx + 0x6148], 0
jne 0x488845
cmp edi, dword [0x57f460]
je 0x488845
push 0
push 0x64
cdq
push edx
push eax
push 0x525f34
call fcn.00497630
mov dword [0x57f460], edi
mov byte [ebp - 4], 0
push 1
push dword [ebp - 0x54]
call fcn.004f812f
add esp, 8
mov dword [ebp - 4], 0xffffffff
mov ebx, dword [ebp - 0x68]
test ebx, ebx
je 0x488886
cmp byte [ebp - 0x58], 0
je 0x48887d
mov eax, dword [ebp - 0x60]
shl eax, 2
push eax
push ebx
call fcn.00491e00
push ebx
call fcn.004fe8b9
add esp, 4
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp + 0x848]
xor ecx, ebp
call fcn.004f833c
lea esp, [ebp + 0x84c]
pop ebp
ret