Function at 0x47a49f
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0xcf2552
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0xcc
mov dword [ebp - 0x10], esp
mov dword [ebp - 0x1c], edi
mov dword [ebp - 0x18], esi
mov dword [ebp - 0x14], ebx
mov edx, dword [ebp + 0x10]
movsx eax, byte [edx + 0x15]
mov dword [ebp - 0x20], ecx
test eax, eax
je 0x47a5ca
push 0xd27f00
lea ecx, [ebp - 0x64]
call fcn.00479963
mov dword [ebp - 4], 0
lea ecx, [ebp - 0x8c]
mov dword [ebp - 0x38], ecx
mov dword [ebp - 0x34], ecx
call 0xd2d91c
mov dword [ebp - 4], 1
mov dword [ebp - 0x8c], 0xe442a8
lea esi, [ebp - 0x80]
xor eax, eax
mov dword [ebp - 0x68], 0xf
mov dword [ebp - 0x6c], eax
mov byte [ebp - 0x7c], al
mov ebx, dword [ebp - 0x50]
mov dword [ebp - 0x30], esi
test ebx, ebx
lea edi, [ebp - 0x64]
mov dword [ebp - 0x2c], edi
mov dword [ebp - 0x28], eax
jae 0x47a53e
call 0xd604c0
mov ebx, dword [ebp - 0x50]
lea eax, [ebp - 0x80]
lea edx, [ebp - 0x64]
cmp ebx, 0xffffffff
jbe 0x47a54e
mov ebx, 0xffffffff
mov dword [ebp - 0x3c], ebx
cmp eax, edx
je 0x47aa67
mov dword [ebp - 0x40], ebx
cmp ebx, 0xfffffffe
jbe 0x47a569
call 0xd60481
mov ebx, dword [ebp - 0x40]
mov esi, dword [ebp - 0x68]
cmp esi, ebx
jb 0x47a95f
test ebx, ebx
je 0x47a940
test ebx, ebx
ja 0x47a8dd
mov dword [ebp - 4], 0
push 0xe4a780
mov eax, dword [ebp - 0x38]
lea edx, [ebp - 0x8c]
mov dword [eax], 0xe442cc
push edx
call 0xd2db99
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp - 0x4c]
cmp eax, 0x10
jae 0x47a8cf
mov edx, dword [ebp + 0x10]
mov dword [ebp - 0x4c], 0xf
xor eax, eax
mov dword [ebp - 0x50], eax
mov byte [ebp - 0x60], al
mov eax, dword [ebp + 0xc]
mov ebx, edx
test eax, eax
je 0x47af7e
movsx eax, byte [edx + 0x15]
test eax, eax
je 0x47a5e6
call 0xd2d903
jmp 0x47a61e
mov eax, dword [edx + 8]
movsx ecx, byte [eax + 0x15]
test ecx, ecx
je 0x47a605
mov ecx, dword [edx + 4]
movsx eax, byte [ecx + 0x15]
test eax, eax
je 0x47ab4e
mov dword [ebp + 0x10], ecx
jmp 0x47a61e
mov edx, dword [eax]
movsx ecx, byte [edx + 0x15]
test ecx, ecx
jne 0x47a61b
mov eax, dword [eax]
mov edx, dword [eax]
movsx ecx, byte [edx + 0x15]
test ecx, ecx
je 0x47a60f
mov dword [ebp + 0x10], eax
mov eax, dword [ebx]
movsx edx, byte [eax + 0x15]
mov edi, ebx
test edx, edx
je 0x47a62f
mov esi, dword [ebx + 8]
jmp 0x47a644
mov edx, dword [ebx + 8]
movsx ecx, byte [edx + 0x15]
test ecx, ecx
je 0x47a63e
mov esi, eax
jmp 0x47a644
mov edi, dword [ebp + 0x10]
mov esi, dword [edi + 8]
cmp edi, ebx
je 0x47ae9e
mov dword [eax + 4], edi
mov eax, dword [ebx]
mov dword [edi], eax
cmp edi, dword [ebx + 8]
jne 0x47a65c
mov ecx, edi
jmp 0x47a679
mov ecx, dword [edi + 4]
movsx eax, byte [esi + 0x15]
test eax, eax
je 0x47ae96
mov dword [ecx], esi
mov eax, dword [ebx + 8]
mov dword [edi + 8], eax
mov edx, dword [ebx + 8]
mov dword [edx + 4], edi
mov eax, dword [ebp - 0x20]
mov dword [ebp - 0x24], eax
mov eax, dword [eax + 4]
cmp ebx, dword [eax + 4]
je 0x47ae8e
mov eax, dword [ebx + 4]
cmp ebx, dword [eax]
je 0x47a697
mov dword [eax + 8], edi
jmp 0x47a699
mov dword [eax], edi
mov eax, dword [ebx + 4]
mov dword [edi + 4], eax
movzx eax, byte [edi + 0x14]
movzx edx, byte [ebx + 0x14]
mov byte [edi + 0x14], dl
mov byte [ebx + 0x14], al
movsx eax, byte [ebx + 0x14]
cmp eax, 1
je 0x47ab75
push ebx
call 0xd2c194
pop ecx
mov edx, dword [ebp - 0x20]
mov eax, dword [edx + 8]
test eax, eax
je 0x47a6d1
add eax, 0xffffffff
mov dword [edx + 8], eax
mov eax, dword [ebp + 8]
mov edx, dword [ebp + 0xc]
mov ecx, dword [ebp + 0x10]
mov edi, dword [ebp - 0x1c]
mov esi, dword [ebp - 0x18]
mov ebx, dword [ebp - 0x14]
mov dword [eax], edx
mov dword [eax + 4], ecx
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
mov esp, ebp
pop ebp
ret 0xc
mov edx, dword [ebp - 0x94]
test edx, edx
ja 0x47a7ea
mov edx, dword [ebp - 0x98]
mov eax, dword [edx + 0x18]
cmp eax, 0x10
jae 0x47a7d6
mov dword [edx + 0x18], 0xf
mov eax, dword [ebp - 0x98]
mov dword [eax + 0x14], 0
mov eax, dword [ebp - 0x98]
mov edx, dword [eax + 0x18]
cmp edx, 0x10
jb 0x47a77b
mov eax, dword [eax + 4]
jmp 0x47a77e
add eax, 4
mov ecx, dword [ebp - 0xa0]
mov byte [eax], 0
mov edx, dword [ebp - 0x98]
mov eax, dword [ebp - 0x9c]
mov dword [edx + 4], eax
mov ebx, dword [ebp - 0x98]
mov dword [ebx + 0x18], ecx
mov edi, dword [ebp - 0x98]
mov esi, dword [ebp - 0x94]
mov dword [edi + 0x14], esi
mov edx, dword [ebp - 0x98]
mov eax, dword [edx + 0x18]
cmp eax, 0x10
jb 0x47a7c1
mov edx, dword [edx + 4]
jmp 0x47a7c4
add edx, 4
mov eax, dword [ebp - 0x94]
mov byte [edx + eax], 0
mov ebx, dword [ebp - 0x40]
jmp 0x47a57c
push dword [edx + 4]
call 0xd2c194
pop ecx
mov edx, dword [ebp - 0x98]
jmp 0x47a754
mov ecx, dword [ebp - 0x98]
mov eax, dword [ecx + 0x18]
cmp eax, 0x10
jb 0x47a7fd
mov ecx, dword [ecx + 4]
jmp 0x47a800
add ecx, 4
mov ebx, dword [ebp - 0xa0]
movzx eax, byte [ebp - 0xb4]
mov byte [ebp - 0xb8], al
push edx
add ebx, 1
push ecx
push ebx
push dword [ebp - 0x9c]
call 0xd2dbe3
add esp, 0x10
jmp 0x47a742
push dword [ebp - 0x60]
call 0xd2c194
pop ecx
jmp 0x47a5b8
mov ebx, dword [ebp - 0x30]
mov ecx, dword [ebx + 0x18]
cmp ecx, 0x10
jb 0x47a8ed
mov ebx, dword [ebx + 4]
jmp 0x47a8f0
add ebx, 4
mov edx, dword [ebp - 0x2c]
mov eax, dword [edx + 0x18]
cmp eax, 0x10
jb 0x47a900
mov edx, dword [edx + 4]
jmp 0x47a903
add edx, 4
add edx, dword [ebp - 0x28]
push dword [ebp - 0x3c]
movzx eax, byte [ebp - 0x44]
mov byte [ebp - 0x48], al
push edx
push ecx
push ebx
call 0xd2dbe3
add esp, 0x10
mov ecx, dword [ebp - 0x3c]
mov eax, dword [ebp - 0x30]
mov dword [eax + 0x14], ecx
mov eax, dword [ebp - 0x30]
mov edx, dword [eax + 0x18]
cmp edx, 0x10
jb 0x47a934
mov eax, dword [eax + 4]
jmp 0x47a937
add eax, 4
mov byte [eax + ecx], 0
jmp 0x47a584
mov dword [ebp - 0x6c], 0
cmp esi, 0x10
jb 0x47a951
mov eax, dword [ebp - 0x7c]
jmp 0x47a954
lea eax, [ebp - 0x7c]
mov byte [eax], 0
mov ebx, dword [ebp - 0x40]
jmp 0x47a57c
mov edx, dword [ebp - 0x6c]
mov dword [ebp - 0xac], ebx
mov ecx, ebx
lea eax, [ebp - 0x80]
or ecx, 0xf
cmp ecx, 0xfffffffe
mov dword [ebp - 0x98], eax
mov dword [ebp - 0x94], edx
mov dword [ebp - 0xb0], ecx
mov dword [ebp - 0xa0], ecx
jbe 0x47a99b
mov dword [ebp - 0xb0], ebx
mov dword [ebp - 0xa0], ebx
jmp 0x47a9b2
mov ebx, ecx
mov ecx, esi
shr ecx, 1
mov eax, 0xaaaaaaab
mul ebx
shr edx, 1
cmp ecx, edx
ja 0x47aa44
mov dword [ebp - 0x9c], 0
mov dword [ebp - 4], 2
mov eax, dword [ebp - 0xb0]
add eax, 1
mov dword [ebp - 0xb0], eax
jne 0x47a9de
xor eax, eax
mov dword [ebp - 0xb0], eax
jmp 0x47aa25
mov ecx, eax
xor edx, edx
mov eax, 0xffffffff
div ecx
cmp eax, 1
jae 0x47aa25
mov dword [ebp - 0xbc], 0
lea eax, [ebp - 0xbc]
push eax
lea ecx, [ebp - 0xcc]
call 0xd2d92d
mov dword [ebp - 0xcc], 0xe40cb4
lea eax, [ebp - 0xcc]
push 0xe4a720
push eax
call 0xd2db99
mov eax, dword [ebp - 0xb0]
push eax
call 0xd2c12a
pop ecx
mov dword [ebp - 0x9c], eax
mov dword [ebp - 4], 1
jmp 0x47a734
mov eax, ecx
neg eax
add eax, 0xfffffffe
cmp esi, eax
ja 0x47a9b2
lea eax, [esi + ecx]
mov dword [ebp - 0xb0], eax
mov dword [ebp - 0xa0], eax
jmp 0x47a9b2
mov edx, dword [ebp - 0x6c]
cmp edx, ebx
jae 0x47aa76
call 0xd604c0
mov edx, dword [ebp - 0x6c]
mov eax, edx
sub eax, ebx
cmp eax, 0xffffffff
mov esi, eax
jb 0x47aa86
mov esi, 0xffffffff
test esi, esi
ja 0x47aaf7
test edx, edx
jae 0x47aa96
call 0xd604c0
mov edx, dword [ebp - 0x6c]
test edx, edx
mov ebx, edx
jb 0x47aaa1
mov ebx, 0
test ebx, ebx
jbe 0x47a584
mov ecx, dword [ebp - 0x68]
cmp ecx, 0x10
jb 0x47aab9
mov esi, dword [ebp - 0x7c]
mov eax, dword [ebp - 0x7c]
jmp 0x47aabf
lea esi, [ebp - 0x7c]
lea eax, [ebp - 0x7c]
mov byte [ebp - 0xa8], 0
add eax, ebx
sub edx, ebx
push edx
push eax
push ecx
push esi
call 0xd2dc5e
add esp, 0x10
mov edx, dword [ebp - 0x6c]
mov eax, dword [ebp - 0x68]
sub edx, ebx
mov dword [ebp - 0x6c], edx
cmp eax, 0x10
jb 0x47aaeb
mov eax, dword [ebp - 0x7c]
jmp 0x47aaee
lea eax, [ebp - 0x7c]
mov byte [eax + edx], 0
jmp 0x47a584
mov ecx, dword [ebp - 0x68]
cmp ecx, 0x10
jb 0x47ab07
mov edi, dword [ebp - 0x7c]
mov edx, dword [ebp - 0x7c]
jmp 0x47ab0d
lea edi, [ebp - 0x7c]
lea edx, [ebp - 0x7c]
mov byte [ebp - 0xa4], 0
add edi, ebx
sub ecx, ebx
add ebx, esi
add ebx, edx
sub eax, esi
push eax
push ebx
push ecx
push edi
call 0xd2dc5e
add esp, 0x10
mov edx, dword [ebp - 0x6c]
mov eax, dword [ebp - 0x68]
sub edx, esi
mov dword [ebp - 0x6c], edx
cmp eax, 0x10
jb 0x47ab3f
mov eax, dword [ebp - 0x7c]
jmp 0x47ab42
lea eax, [ebp - 0x7c]
mov byte [eax + edx], 0
mov edx, dword [ebp - 0x6c]
jmp 0x47aa8a
cmp edx, dword [ecx + 8]
jne 0x47a600
mov dword [ebp + 0x10], ecx
mov edx, ecx
mov ecx, dword [ecx + 4]
movsx eax, byte [ecx + 0x15]
test eax, eax
jne 0x47a600
cmp edx, dword [ecx + 8]
je 0x47ab57
jmp 0x47a600
mov eax, dword [ebp - 0x24]
mov edx, dword [eax + 4]
cmp esi, dword [edx + 4]
je 0x47ab89
movsx eax, byte [esi + 0x14]
cmp eax, 1
je 0x47ab92
mov byte [esi + 0x14], 1
jmp 0x47a6ba
mov edi, dword [ecx]
cmp esi, edi
je 0x47ad20
movsx eax, byte [edi + 0x14]
test eax, eax
je 0x47accf
movsx eax, byte [edi + 0x15]
test eax, eax
jne 0x47abd5
mov eax, dword [edi + 8]
movsx edx, byte [eax + 0x14]
mov dword [ebp - 0xb0], eax
cmp edx, 1
jne 0x47ac4b
mov eax, dword [edi]
movsx edx, byte [eax + 0x14]
cmp edx, 1
jne 0x47abf0
mov byte [edi + 0x14], 0
mov eax, dword [ebp - 0x24]
mov edx, dword [eax + 4]
mov esi, ecx
mov ecx, dword [ecx + 4]
cmp esi, dword [edx + 4]
je 0x47ab89
movsx eax, byte [esi + 0x14]
cmp eax, 1
je 0x47ab92
jmp 0x47ab89
movzx eax, byte [ecx + 0x14]
mov byte [edi + 0x14], al
mov edx, 1
mov byte [ecx + 0x14], dl
mov edi, dword [edi]
mov byte [edi + 0x14], dl
mov eax, dword [ecx]
mov edx, dword [eax + 8]
mov dword [ecx], edx
mov edi, dword [eax + 8]
movsx edx, byte [edi + 0x15]
test edx, edx
je 0x47ac46
mov edi, dword [ebp - 0x24]
mov edx, dword [ecx + 4]
mov dword [eax + 4], edx
mov edx, dword [edi + 4]
cmp ecx, dword [edx + 4]
je 0x47ac41
mov edx, dword [ecx + 4]
cmp ecx, dword [edx + 8]
je 0x47ac33
mov dword [edx], eax
jmp 0x47ac36
mov dword [edx + 8], eax
mov dword [eax + 8], ecx
mov dword [ecx + 4], eax
jmp 0x47ab89
mov dword [edx + 4], eax
jmp 0x47ac36
mov dword [edi + 4], ecx
jmp 0x47ac16
mov eax, dword [edi]
movsx edx, byte [eax + 0x14]
cmp edx, 1
jne 0x47abf0
mov eax, dword [ebp - 0xb0]
mov byte [eax + 0x14], 1
mov eax, dword [edi + 8]
mov byte [edi + 0x14], 0
mov edx, dword [eax]
mov dword [edi + 8], edx
mov edx, dword [eax]
mov dword [ebp - 0xb0], eax
movsx eax, byte [edx + 0x15]
test eax, eax
je 0x47acca
mov edx, dword [ebp - 0xb0]
mov eax, dword [edi + 4]
mov dword [edx + 4], eax
mov eax, dword [ebp - 0x24]
mov edx, dword [eax + 4]
cmp edi, dword [edx + 4]
je 0x47acbf
mov eax, dword [edi + 4]
cmp edi, dword [eax]
je 0x47aca5
mov edx, dword [ebp - 0xb0]
mov dword [eax + 8], edx
jmp 0x47acad
mov edx, dword [ebp - 0xb0]
mov dword [eax], edx
mov eax, dword [ebp - 0xb0]
mov dword [eax], edi
mov dword [edi + 4], eax
mov edi, dword [ecx]
jmp 0x47abf0
mov eax, dword [ebp - 0xb0]
mov dword [edx + 4], eax
jmp 0x47acad
mov dword [edx + 4], edi
jmp 0x47ac7c
mov byte [edi + 0x14], 1
mov eax, dword [ecx]
mov byte [ecx + 0x14], 0
mov edx, dword [eax + 8]
mov dword [ecx], edx
mov edx, dword [eax + 8]
movsx edi, byte [edx + 0x15]
test edi, edi
je 0x47ad1b
mov edi, dword [ebp - 0x24]
mov edx, dword [ecx + 4]
mov dword [eax + 4], edx
mov edx, dword [edi + 4]
cmp ecx, dword [edx + 4]
je 0x47ad16
mov edx, dword [ecx + 4]
cmp ecx, dword [edx + 8]
je 0x47ad06
mov dword [edx], eax
jmp 0x47ad09
mov dword [edx + 8], eax
mov dword [eax + 8], ecx
mov edi, dword [ecx]
mov dword [ecx + 4], eax
jmp 0x47aba8
mov dword [edx + 4], eax
jmp 0x47ad09
mov dword [edx + 4], ecx
jmp 0x47ace9
mov edi, dword [ecx + 8]
movsx eax, byte [edi + 0x14]
test eax, eax
je 0x47ae3e
push gs
cmc
mov eax, 0xf16d32a5
mov bh, 0x86
invalid
retf
inc ecx
jg 0x47ae85
mov dh, 0x48
mov edi, 0xe29b3406
mov ah, 0xe7
xchg esi, eax
js 0x47adcd
cmp al, 0xb8
and eax, 0xf82515a6
clc
aam 0x75
and al, 0x19
push ebp
or ebx, esp
push es
cmp di, bx
in eax, dx
and eax, 0xd168897f
pop ss
xor bh, byte [eax + 0x542a778f]
xchg edx, eax
insb byte es:[edi], dx
mov edi, 0xca4dd0f8
fstp st(4)
movsd dword es:[edi], dword [esi]
aaa
push edx
or bl, dl
push ds
test ah, dl
xor eax, 0xfd49c96c
xor al, byte [esi]
in eax, dx
xlatb
into
invalid
adc esp, dword [edx - 0x49fff11b]
or esi, eax
movsb byte es:[edi], byte [esi]
stc
sbb eax, 0x59e43365
fstp st(6)
inc ecx
popfd
fiadd word [ecx - 0x63]
stosb byte es:[edi], al
in eax, 0xb5
invalid
test al, 0x85
dec edx
jno 0x47ae29
cdq
push edx
inc ecx
xor byte [edi - 0x47c291cd], dl
ljmp 0x5573
test byte [esi], dl
xchg ebp, eax
dec eax
cmp bl, byte cs:[ecx]
inc eax
or byte [eax + edi + 0x144d89fe], dl
push esi
sub eax, 0xc0f5f8c4
call 0x8bdccea9
mov dh, 0xa0
clc
jmp dword [edx + eax*2]