Function at 0x4fbe50
Capabilities:
Encode data using xor

Disassembly:
test dword [0x87ed4c], 0xfffff000
jne 0x4fbe80
test dword [0x87ed4c], 0xffffffff
jne 0x4fc240
call fcn.007663a0
jmp fcn.004fbe50
push edi
push esi
push ebp
push ebx
sub esp, 0x24
mov edi, ecx
mov ebx, edx
mov ebp, eax
mov ecx, dword [ebp]
test ecx, ecx
jne 0x4fbe98
xor esi, esi
jmp 0x4fbecb
mov edx, ebx
mov esi, edi
xor eax, eax
test edi, edi
jle 0x4fbec5
mov dword [esp + 0x1c], ebp
lea ebp, [eax*8]
xor ebp, eax
movzx eax, byte [edx]
inc edx
movzx eax, byte [eax + 0x789b60]
xor eax, ebp
dec esi
test esi, esi
jg 0x4fbea6
mov ebp, dword [esp + 0x1c]
xor edx, edx
div ecx
mov esi, edx
mov eax, dword [ebp + 0xc]
test eax, eax
jne 0x4fbeeb
mov edx, dword [ebp + 8]
mov eax, dword [ebp + 4]
mov ecx, 1
mov dword [esp + 0x14], esi
mov dword [esp + 0x20], ebx
mov dword [esp + 0x1c], ebp
jmp 0x4fbf03
mov edx, dword [eax + esi*8 + 4]
mov eax, dword [eax + esi*8]
mov ecx, 1
mov dword [esp + 0x14], esi
mov dword [esp + 0x20], ebx
mov dword [esp + 0x1c], ebp
test eax, eax
mov ebx, eax
cmovne ebx, ecx
dec eax
test ebx, ebx
je 0x4fbfc4
test edx, edx
je 0x4fbfc4
cmp edi, dword [edx + 0x10]
je 0x4fbf24
mov edx, dword [edx]
jmp 0x4fbf03
mov ebx, dword [edx + 0xc]
mov esi, dword [esp + 0x20]
mov ebp, edi
mov dword [esp + 0xc], edx
mov dword [esp + 0x10], eax
jmp 0x4fbf39
inc ebx
inc esi
xor eax, eax
test ebp, ebp
cmovg eax, ecx
dec ebp
test eax, eax
je 0x4fbfba
movzx eax, byte [ebx]
test eax, eax
je 0x4fbfba
movzx eax, byte [eax + 0x789b60]
movzx edx, byte [esi]
movzx edx, byte [edx + 0x789b60]
cmp eax, edx
je 0x4fbf37
mov edx, dword [esp + 0xc]
mov eax, dword [esp + 0x10]
test ebp, ebp
js 0x4fbf85
movzx ebp, byte [ebx]
movzx ebx, byte [ebp + 0x789b60]
movzx esi, byte [esi]
movzx ebp, byte [esi + 0x789b60]
cmp ebp, ebx
jne 0x4fbf20
mov esi, dword [esp + 0x14]
mov ebx, dword [esp + 0x20]
mov ebp, dword [esp + 0x1c]
mov edi, dword [edx + 8]
cmp dword [esp + 0x44], 0
je 0x4fbfaf
mov eax, dword [esp + 0x44]
mov dword [edx + 8], eax
mov dword [edx + 0xc], ebx
mov eax, edi
add esp, 0x24
pop ebx
pop ebp
pop esi
pop edi
ret
mov eax, ebp
mov ecx, esi
call fcn.004fc640
jmp 0x4fbfa5
mov edx, dword [esp + 0xc]
mov eax, dword [esp + 0x10]
jmp 0x4fbf69
mov esi, dword [esp + 0x14]
mov ebx, dword [esp + 0x20]
mov ebp, dword [esp + 0x1c]
cmp dword [esp + 0x44], 0
je 0x4fc1fd
cmp dword [0x830380], 0
je 0x4fc01e
mov eax, dword [0x84f788]
test eax, eax
je 0x4fbff5
push eax
call dword [0x8303c8]
pop ecx
mov eax, 0x14
lea edx, [esp + 0x14]
call fcn.0041ec40
mov eax, dword [0x84f788]
test eax, eax
je 0x4fc014
push eax
call dword [0x8303d0]
pop ecx
mov eax, dword [esp + 0x14]
mov dword [esp + 0x18], eax
jmp 0x4fc02f
push 0x14
call dword [0x830398]
pop ecx
mov dword [esp + 0x18], eax
mov dword [esp + 0x14], eax
cmp dword [esp + 0x18], 0
je 0x4fc22e
mov edx, eax
mov eax, dword [esp + 0x44]
mov dword [edx + 0xc], ebx
mov dword [edx + 0x10], edi
mov dword [edx + 8], eax
mov edx, dword [ebp + 4]
lea eax, [edx + 1]
mov dword [ebp + 4], eax
cmp eax, 0xa
jb 0x4fc1e8
mov ecx, dword [ebp]
mov dword [esp + 0x10], ecx
add ecx, ecx
cmp eax, ecx
jbe 0x4fc1e8
lea ecx, [edx + edx + 2]
mov edx, 0x80
lea eax, [ecx*8]
cmp eax, 0x400
cmova ecx, edx
cmp ecx, dword [esp + 0x10]
mov dword [esp + 0xc], ecx
je 0x4fc1e8
mov eax, dword [0x84f7b8]
test eax, eax
je 0x4fc09d
call eax
mov eax, dword [esp + 0xc]
shl eax, 3
call fcn.0041ebd4
mov dword [esp + 0x10], eax
mov eax, dword [0x84f7bc]
test eax, eax
je 0x4fc0b8
call eax
cmp dword [esp + 0x10], 0
je 0x4fc1e8
mov eax, dword [ebp + 0xc]
test eax, eax
je 0x4fc0cf
call fcn.004c69c4
mov eax, dword [esp + 0x10]
mov dword [ebp + 0xc], eax
push eax
call dword [0x8303a4]
mov esi, eax
shr esi, 3
mov dword [ebp], esi
lea eax, [esi*8]
push eax
push 0
push dword [esp + 0x1c]
call fcn.00766740
add esp, 0x10
mov ecx, dword [ebp + 8]
mov dword [ebp + 8], 0
test ecx, ecx
je 0x4fc1be
mov dword [esp + 0x20], ebx
mov ebx, dword [esp + 0x10]
mov dword [esp + 0xc], edi
mov dword [esp + 0x1c], ebp
mov edx, dword [ecx + 0xc]
mov ebp, dword [ecx + 0x10]
xor eax, eax
test ebp, ebp
jle 0x4fc144
lea edi, [eax*8]
xor edi, eax
movzx eax, byte [edx]
inc edx
movzx eax, byte [eax + 0x789b60]
xor eax, edi
dec ebp
test ebp, ebp
jg 0x4fc129
mov ebp, dword [ecx]
xor edx, edx
div esi
lea edi, [ebx + edx*8]
test edi, edi
je 0x4fc189
mov edx, dword [edi]
test edx, edx
je 0x4fc183
mov eax, dword [edi + 4]
inc edx
mov dword [edi], edx
mov dword [edi + 4], ecx
test eax, eax
je 0x4fc189
mov dword [ecx], eax
mov edx, dword [eax + 4]
mov dword [ecx + 4], edx
mov edx, dword [eax + 4]
test edx, edx
je 0x4fc177
mov dword [edx], ecx
jmp 0x4fc17e
mov edx, dword [esp + 0x1c]
mov dword [edx + 8], ecx
mov dword [eax + 4], ecx
jmp 0x4fc1a8
inc edx
mov dword [edi], edx
mov dword [edi + 4], ecx
mov edx, dword [esp + 0x1c]
mov eax, dword [edx + 8]
mov dword [ecx], eax
mov eax, dword [edx + 8]
test eax, eax
je 0x4fc19c
mov dword [eax + 4], ecx
mov eax, edx
mov dword [ecx + 4], 0
mov dword [eax + 8], ecx
mov ecx, ebp
test ebp, ebp
jne 0x4fc11d
mov ebx, dword [esp + 0x20]
mov edi, dword [esp + 0xc]
mov ebp, dword [esp + 0x1c]
xor eax, eax
test edi, edi
jle 0x4fc1df
lea edx, [eax*8]
xor edx, eax
movzx eax, byte [ebx]
inc ebx
movzx eax, byte [eax + 0x789b60]
xor eax, edx
dec edi
test edi, edi
jg 0x4fc1c4
mov ecx, dword [ebp]
xor edx, edx
div ecx
mov esi, edx
mov eax, dword [ebp + 0xc]
test eax, eax
je 0x4fc207
mov ecx, dword [esp + 0x18]
lea edx, [eax + esi*8]
mov eax, ebp
call fcn.004fc5e0
xor eax, eax
add esp, 0x24
pop ebx
pop ebp
pop esi
pop edi
ret
mov eax, dword [ebp + 8]
mov edx, dword [esp + 0x18]
mov dword [edx], eax
mov edx, dword [ebp + 8]
test edx, edx
je 0x4fc21e
mov eax, dword [esp + 0x18]
mov dword [edx + 4], eax
mov eax, dword [esp + 0x18]
mov dword [eax + 4], 0
mov dword [ebp + 8], eax
jmp 0x4fc1fd
mov eax, dword [esp + 0x44]
add esp, 0x24
pop ebx
pop ebp
pop esi
pop edi
ret
push edi
push esi
push ebp
push ebx
sub esp, 0x24
mov edi, ecx
mov ebx, edx
mov esi, eax
mov ecx, dword [esi]
test ecx, ecx
jne 0x4fc257
xor ebp, ebp
jmp 0x4fc28a
mov edx, ebx
mov ebp, edi
xor eax, eax
test edi, edi
jle 0x4fc284
mov dword [esp + 0x20], esi
lea esi, [eax*8]
xor esi, eax
movzx eax, byte [edx]
movzx eax, byte [eax + 0x789b60]
xor eax, esi
inc edx
dec ebp
test ebp, ebp
jg 0x4fc265
mov esi, dword [esp + 0x20]
xor edx, edx
div ecx
mov ebp, edx
mov eax, dword [esi + 0xc]
test eax, eax
jne 0x4fc2a1
mov edx, dword [esi + 8]
mov ecx, dword [esi + 4]
mov dword [esp + 0x14], ebp
mov dword [esp + 0x20], esi
jmp 0x4fc2b0
mov edx, dword [eax + ebp*8 + 4]
mov ecx, dword [eax + ebp*8]
mov dword [esp + 0x14], ebp
mov dword [esp + 0x20], esi
xor eax, eax
test ecx, ecx
setne al
dec ecx
test eax, eax
je 0x4fc371
test edx, edx
je 0x4fc371
cmp edi, dword [edx + 0x10]
je 0x4fc2d1
mov edx, dword [edx]
jmp 0x4fc2b0
mov eax, dword [edx + 0xc]
mov ebp, edi
mov esi, ebx
mov dword [esp + 0xc], edx
mov dword [esp + 0x10], ecx
mov edx, eax
jmp 0x4fc2e6
inc edx
inc esi
xor eax, eax
test ebp, ebp
setg al
dec ebp
test eax, eax
je 0x4fc365
movzx ecx, byte [edx]
test ecx, ecx
je 0x4fc365
movzx eax, byte [ecx + 0x789b60]
movzx ecx, byte [esi]
movzx ecx, byte [ecx + 0x789b60]
cmp eax, ecx
je 0x4fc2e4
mov eax, edx
mov edx, dword [esp + 0xc]
mov ecx, dword [esp + 0x10]
test ebp, ebp
js 0x4fc334
movzx ebp, byte [eax]
movzx eax, byte [ebp + 0x789b60]
movzx esi, byte [esi]
movzx ebp, byte [esi + 0x789b60]
cmp ebp, eax
jne 0x4fc2cd
mov ebp, dword [esp + 0x14]
mov esi, dword [esp + 0x20]
mov edi, dword [edx + 8]
cmp dword [esp + 0x44], 0
je 0x4fc35a
mov eax, dword [esp + 0x44]
mov dword [edx + 8], eax
mov dword [edx + 0xc], ebx
mov eax, edi
add esp, 0x24
pop ebx
pop ebp
pop esi
pop edi
ret
mov eax, esi
mov ecx, ebp
call fcn.004fc640
jmp 0x4fc350
mov eax, edx
mov edx, dword [esp + 0xc]
mov ecx, dword [esp + 0x10]
jmp 0x4fc318
mov ebp, dword [esp + 0x14]
mov esi, dword [esp + 0x20]
cmp dword [esp + 0x44], 0
je 0x4fc5a2
cmp dword [0x830380], 0
je 0x4fc3c7
mov eax, dword [0x84f788]
test eax, eax
je 0x4fc39e
push eax
call dword [0x8303c8]
pop ecx
mov eax, 0x14
lea edx, [esp + 0x18]
call fcn.0041ec40
mov eax, dword [0x84f788]
test eax, eax
je 0x4fc3bd
push eax
call dword [0x8303d0]
pop ecx
mov eax, dword [esp + 0x18]
mov dword [esp + 0x1c], eax
jmp 0x4fc3d8
push 0x14
call dword [0x830398]
pop ecx
mov dword [esp + 0x1c], eax
mov dword [esp + 0x18], eax
cmp dword [esp + 0x1c], 0
je 0x4fc5d3
mov edx, eax
mov dword [edx + 0xc], ebx
mov dword [edx + 0x10], edi
mov eax, dword [esp + 0x44]
mov dword [edx + 8], eax
mov edx, dword [esi + 4]
lea eax, [edx + 1]
mov dword [esi + 4], eax
cmp eax, 0xa
jb 0x4fc58d
mov ecx, dword [esi]
mov dword [esp + 0x10], ecx
add ecx, ecx
cmp eax, ecx
jbe 0x4fc58d
lea edx, [edx + edx + 2]
lea eax, [edx*8]
cmp eax, 0x400
jbe 0x4fc42b
mov edx, 0x80
mov dword [esp + 0xc], edx
cmp edx, dword [esp + 0x10]
je 0x4fc58d
mov eax, dword [0x84f7b8]
test eax, eax
je 0x4fc444
call eax
mov eax, dword [esp + 0xc]
shl eax, 3
call fcn.0041ebd4
mov dword [esp + 0x14], eax
mov eax, dword [0x84f7bc]
test eax, eax
je 0x4fc45f
call eax
cmp dword [esp + 0x14], 0
je 0x4fc58d
mov eax, dword [esi + 0xc]
test eax, eax
je 0x4fc476
call fcn.004c69c4
mov eax, dword [esp + 0x14]
mov dword [esi + 0xc], eax
push eax
call dword [0x8303a4]
mov ebp, eax
shr ebp, 3
mov dword [esi], ebp
lea eax, [ebp*8]
push eax
push 0
push dword [esp + 0x20]
call fcn.00766740
add esp, 0x10
mov ecx, dword [esi + 8]
mov dword [esi + 8], 0
test ecx, ecx
je 0x4fc564
mov dword [esp + 0x10], ebx
mov dword [esp + 0xc], edi
mov dword [esp + 0x20], esi
mov ebx, dword [esp + 0x14]
mov edx, dword [ecx + 0xc]
mov esi, dword [ecx + 0x10]
xor eax, eax
test esi, esi
jle 0x4fc4ea
lea edi, [eax*8]
xor edi, eax
movzx eax, byte [edx]
movzx eax, byte [eax + 0x789b60]
xor eax, edi
inc edx
dec esi
test esi, esi
jg 0x4fc4cf
xor edx, edx
div ebp
mov esi, dword [ecx]
lea edi, [ebx + edx*8]
test edi, edi
je 0x4fc52f
mov edx, dword [edi]
test edx, edx
je 0x4fc529
mov eax, dword [edi + 4]
inc edx
mov dword [edi], edx
mov dword [edi + 4], ecx
test eax, eax
je 0x4fc52f
mov dword [ecx], eax
mov edx, dword [eax + 4]
mov dword [ecx + 4], edx
mov edx, dword [eax + 4]
test edx, edx
je 0x4fc51d
mov dword [edx], ecx
jmp 0x4fc524
mov edx, dword [esp + 0x20]
mov dword [edx + 8], ecx
mov dword [eax + 4], ecx
jmp 0x4fc54e
inc edx
mov dword [edi], edx
mov dword [edi + 4], ecx
mov edx, dword [esp + 0x20]
mov eax, dword [edx + 8]
mov dword [ecx], eax
mov eax, dword [edx + 8]
test eax, eax
je 0x4fc542
mov dword [eax + 4], ecx
mov dword [ecx + 4], 0
mov eax, edx
mov dword [eax + 8], ecx
mov ecx, esi
test esi, esi
jne 0x4fc4c3
mov ebx, dword [esp + 0x10]
mov edi, dword [esp + 0xc]
mov esi, dword [esp + 0x20]
xor eax, eax
test edi, edi
jle 0x4fc585
lea edx, [eax*8]
xor edx, eax
movzx eax, byte [ebx]
movzx eax, byte [eax + 0x789b60]
xor eax, edx
inc ebx
dec edi
test edi, edi
jg 0x4fc56a
mov ecx, dword [esi]
xor edx, edx
div ecx
mov ebp, edx
mov eax, dword [esi + 0xc]
test eax, eax
je 0x4fc5ac
lea edx, [eax + ebp*8]
mov eax, esi
mov ecx, dword [esp + 0x1c]
call fcn.004fc5e0
xor eax, eax
add esp, 0x24
pop ebx
pop ebp
pop esi
pop edi
ret
mov eax, dword [esi + 8]
mov edx, dword [esp + 0x1c]
mov dword [edx], eax
mov edx, dword [esi + 8]
test edx, edx
je 0x4fc5c3
mov eax, dword [esp + 0x1c]
mov dword [edx + 4], eax
mov eax, dword [esp + 0x1c]
mov dword [eax + 4], 0
mov dword [esi + 8], eax
jmp 0x4fc5a2
mov eax, dword [esp + 0x44]
add esp, 0x24
pop ebx
pop ebp
pop esi
pop edi
ret