Function at 0x47da98
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffdd0
push ebx
push esi
push edi
xor edx, edx
mov dword [ebp - 0x230], edx
mov esi, eax
xor eax, eax
push ebp
push 0x47ddd3
push dword fs:[eax]
mov dword fs:[eax], esp
cmp dword [esi + 0x30], 0
je 0x47daca
dec dword [esi + 0x30]
jmp 0x47ddba
xor eax, eax
mov dword [ebp - 8], eax
mov eax, esi
call fcn.0047d9d4
mov dword [esi + 0x18], eax
mov dword [esi + 0x10], 0xffffffff
mov al, byte [esi + 0x44]
test al, al
je 0x47daee
xor ebx, ebx
mov byte [ebp - 1], al
jmp 0x47db08
lea edx, [ebp - 1]
mov eax, esi
call fcn.0047d9e0
mov ebx, eax
jmp 0x47db08
lea edx, [ebp - 1]
mov eax, esi
call fcn.0047d9e0
mov ebx, eax
mov al, byte [ebp - 1]
and eax, 0xff
bt dword [0x4f3fe8], eax
jae 0x47db1d
test bl, bl
je 0x47dafc
test bl, bl
je 0x47db3c
mov dword [esi + 8], 0xffffffff
mov dword [esi + 0xc], 0xffffffff
lea eax, [esi + 0x14]
call fcn.00403bec
jmp 0x47ddba
mov eax, dword [esi + 0x28]
call fcn.0047d3e0
dec eax
test eax, eax
jl 0x47dbb1
inc eax
mov dword [ebp - 0xc], eax
xor edi, edi
mov edx, edi
mov eax, dword [esi + 0x28]
call fcn.0047d3e8
mov dl, byte [ebp - 1]
and edx, 0xff
bt dword [eax + 0xd], edx
jae 0x47dbab
mov edx, edi
mov eax, dword [esi + 0x28]
call fcn.0047d3e8
cmp byte [eax + 4], 2
jne 0x47dbb1
lea edx, [ebp - 3]
mov eax, esi
call fcn.0047d9e0
mov ebx, eax
test bl, bl
jne 0x47dbb1
mov edx, edi
mov eax, dword [esi + 0x28]
call fcn.0047d3e8
mov dl, byte [ebp - 3]
and edx, 0xff
bt dword [eax + 0x2d], edx
jb 0x47dbb1
mov dl, byte [ebp - 3]
mov eax, esi
call fcn.0047da80
inc edi
dec dword [ebp - 0xc]
jne 0x47db4f
mov dword [esi + 8], edi
mov eax, dword [esi + 0x28]
call fcn.0047d3e0
cmp eax, dword [esi + 8]
jle 0x47dd69
mov edx, dword [esi + 8]
mov eax, dword [esi + 0x28]
call fcn.0047d3e8
mov eax, dword [eax + 5]
mov dword [esi + 0xc], eax
mov byte [ebp - 2], 0
mov edx, dword [esi + 8]
mov eax, dword [esi + 0x28]
call fcn.0047d3e8
mov al, byte [eax + 4]
sub al, 1
jb 0x47dc23
je 0x47dd45
dec al
jne 0x47dd49
mov eax, dword [ebp - 8]
mov dl, byte [ebp - 1]
mov byte [ebp + eax - 0x22c], dl
inc dword [ebp - 8]
mov eax, dword [ebp - 8]
mov dl, byte [ebp - 2]
mov byte [ebp + eax - 0x22c], dl
inc dword [ebp - 8]
mov byte [ebp - 1], 0
jmp 0x47dd49
mov edx, dword [esi + 8]
mov eax, dword [esi + 0x28]
call fcn.0047d3e8
push esi
lea esi, [eax + 0x2d]
lea edi, [ebp - 0x2c]
mov ecx, 8
rep movsd dword es:[edi], dword [esi]
pop esi
mov eax, dword [ebp - 8]
mov dl, byte [ebp - 1]
mov byte [ebp + eax - 0x22c], dl
inc dword [ebp - 8]
lea edx, [ebp - 1]
mov eax, esi
call fcn.0047d9e0
mov ebx, eax
mov al, byte [ebp - 1]
and eax, 0xff
bt dword [ebp - 0x2c], eax
setb al
xor al, 1
or al, bl
je 0x47dc3d
cmp dword [esi + 0xc], 0
jne 0x47dd49
mov eax, dword [ebp - 8]
mov byte [ebp + eax - 0x22c], 0
mov eax, dword [esi + 0x2c]
call fcn.0047d4f0
dec eax
test eax, eax
jl 0x47dd49
inc eax
mov dword [ebp - 0xc], eax
xor edi, edi
mov edx, edi
mov eax, dword [esi + 0x2c]
call fcn.0047d4f8
mov eax, dword [eax + 4]
push eax
lea edx, [ebp - 0x230]
lea eax, [ebp - 0x22c]
call fcn.00408bc0
mov eax, dword [ebp - 0x230]
pop edx
call fcn.00407e1c
test eax, eax
jne 0x47dce5
mov dword [esi + 8], 0xfffffffd
mov dword [esi + 0x10], edi
mov edx, edi
mov eax, dword [esi + 0x2c]
call fcn.0047d4f8
mov eax, dword [eax + 8]
mov dword [esi + 0xc], eax
jmp 0x47dd49
inc edi
dec dword [ebp - 0xc]
jne 0x47dc9a
jmp 0x47dd49
lea edx, [ebp - 1]
mov eax, esi
call fcn.0047d9e0
mov ebx, eax
mov edx, dword [esi + 8]
mov eax, dword [esi + 0x28]
call fcn.0047d3e8
mov dl, byte [ebp - 1]
and edx, 0xff
bt dword [eax + 0x2d], edx
jae 0x47dd2f
test bl, bl
jne 0x47dd2f
lea edx, [ebp - 2]
mov eax, esi
call fcn.0047d9e0
mov ebx, eax
test bl, bl
jne 0x47dd49
mov al, byte [ebp - 2]
cmp al, byte [ebp - 1]
jne 0x47dd49
cmp byte [ebp - 1], 0x20
jb 0x47dd45
mov eax, dword [ebp - 8]
mov dl, byte [ebp - 1]
mov byte [ebp + eax - 0x22c], dl
inc dword [ebp - 8]
test bl, bl
je 0x47dced
test bl, bl
jne 0x47dd63
cmp byte [ebp - 2], 0
je 0x47dd5b
mov al, byte [ebp - 2]
mov byte [esi + 0x44], al
jmp 0x47dd87
mov al, byte [ebp - 1]
mov byte [esi + 0x44], al
jmp 0x47dd87
mov byte [esi + 0x44], 0
jmp 0x47dd87
mov dword [esi + 8], 0xfffffffe
mov dword [esi + 0xc], 0xfffffffe
mov eax, dword [ebp - 8]
mov dl, byte [ebp - 1]
mov byte [ebp + eax - 0x22c], dl
inc dword [ebp - 8]
mov eax, dword [ebp - 8]
mov byte [ebp + eax - 0x22c], 0
lea edx, [ebp - 0x230]
lea eax, [ebp - 0x22c]
call fcn.00408bc0
mov edx, dword [ebp - 0x230]
lea eax, [esi + 0x14]
call fcn.00403c40
mov eax, esi
call fcn.0047d9d0
mov edi, eax
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x47ddda
lea eax, [ebp - 0x230]
call fcn.00403bec
ret