Function at 0x47c540
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffffc8
push ebx
push esi
push edi
xor ecx, ecx
mov dword [ebp - 0x38], ecx
mov dword [ebp - 8], edx
mov dword [ebp - 4], eax
mov eax, dword [ebp - 4]
call fcn.004056e8
mov eax, dword [ebp - 8]
call fcn.004056e8
xor eax, eax
push ebp
push 0x47c9d0
push dword fs:[eax]
mov dword fs:[eax], esp
mov dword [ebp - 0x18], 0x7530
xor edx, edx
push ebp
push 0x47c998
push dword fs:[edx]
mov dword fs:[edx], esp
push 0x40
mov ecx, dword [ebp - 4]
mov dl, 1
mov eax, dword [0x4174bc]
call fcn.0041b5c8
mov dword [ebp - 0xc], eax
xor edx, edx
push ebp
push 0x47c987
push dword fs:[edx]
mov dword fs:[edx], esp
call fcn.0047acac
push 0
push 0
push 1
push 0
push 1
push 0x40000000
mov eax, dword [0x50a3ec]
push dword [eax]
mov eax, dword [0x50a168]
push dword [eax]
push 0x47c9e8
lea eax, [ebp - 0x38]
mov edx, 3
call fcn.004055fc
mov eax, dword [ebp - 0x38]
call fcn.004056f8
push eax
call fcn.0047adc7
mov esi, eax
mov ecx, esi
mov dl, 1
mov eax, dword [0x417444]
call fcn.0041b504
mov edi, eax
push 0x47c9f8
push 0x47c9fc
xor ecx, ecx
mov dl, 1
mov eax, dword [0x41763c]
call fcn.0041b9b8
mov ebx, eax
mov eax, ebx
mov edx, dword [eax]
call dword [edx]
push edx
push eax
mov edx, ebx
mov eax, edi
call fcn.0041b3b0
mov eax, edi
call fcn.00404388
mov eax, ebx
call fcn.00404388
push esi
call fcn.004074f4
call fcn.0040b824
add esp, 0xfffffff8
fstp qword [esp]
wait
mov eax, dword [0x50a340]
push dword [eax + 4]
push dword [eax]
call fcn.00470994
cmp edx, 0
jne 0x47c663
cmp eax, 9
jbe 0x47c683
jmp 0x47c665
jle 0x47c683
mov eax, dword [0x50a2cc]
mov edx, 0x47ca08
call fcn.004052bc
mov eax, dword [0x50a29c]
mov edx, 0x47ca14
call fcn.004052bc
push 0
push 0
push 1
push 0
push 1
push 0x40000000
mov eax, dword [ebp - 8]
call fcn.004056f8
push eax
call fcn.0047adc7
mov dword [ebp - 0x1c], eax
mov ecx, dword [ebp - 0x1c]
mov dl, 1
mov eax, dword [0x417444]
call fcn.0041b504
mov dword [ebp - 0x20], eax
call fcn.0040b824
add esp, 0xfffffff8
fstp qword [esp]
wait
mov eax, dword [0x50a340]
push dword [eax + 4]
push dword [eax]
call fcn.00470994
cmp edx, 0
jne 0x47c6dc
cmp eax, 0xb
jbe 0x47c6fc
jmp 0x47c6de
jle 0x47c6fc
mov eax, dword [0x50a2cc]
mov edx, 0x47ca08
call fcn.004052bc
mov eax, dword [0x50a29c]
mov edx, 0x47ca14
call fcn.004052bc
mov cx, 2
mov edx, 0xfffffffc
mov eax, dword [ebp - 0xc]
mov ebx, dword [eax]
call dword [ebx + 0x14]
lea edx, [ebp - 0x10]
mov ecx, 4
mov eax, dword [ebp - 0xc]
call fcn.0041b340
mov eax, dword [0x50a29c]
mov eax, dword [eax]
call fcn.00409be0
mov edx, eax
mov eax, dword [ebp - 0x10]
add eax, 8
add edx, eax
neg edx
mov cx, 2
mov eax, dword [ebp - 0xc]
mov ebx, dword [eax]
call dword [ebx + 0x14]
mov dword [ebp - 0x2c], 0x2710
mov dword [ebp - 0x30], 0x4e20
mov ebx, 0x3caf
mov dl, 1
mov eax, dword [0x4175c0]
call fcn.00404358
mov dword [ebp - 0x24], eax
mov dl, 1
mov eax, dword [0x4175c0]
call fcn.00404358
mov dword [ebp - 0x28], eax
push 0
push 0
mov eax, dword [ebp - 0x24]
call fcn.0041b134
mov eax, dword [0x50a29c]
mov eax, dword [eax]
call fcn.00409be0
cdq
push edx
push eax
mov edx, dword [ebp - 0xc]
mov eax, dword [ebp - 0x24]
call fcn.0041b3b0
push 0
push 0
mov eax, dword [ebp - 0x24]
call fcn.0041b134
push 0
push 0
mov eax, dword [ebp - 0x28]
call fcn.0041b134
mov eax, dword [ebp - 0x24]
mov edx, dword [eax]
call dword [edx]
mov esi, eax
dec esi
test esi, esi
jl 0x47c7fa
inc esi
lea edx, [ebp - 0x31]
mov ecx, 1
mov eax, dword [ebp - 0x24]
mov edi, dword [eax]
call dword [edi + 0xc]
movzx eax, byte [ebp - 0x31]
mov edx, ebx
shr edx, 8
xor byte [ebp - 0x31], dl
movzx eax, al
add ebx, eax
imul ebx, dword [ebp - 0x2c]
add ebx, dword [ebp - 0x30]
lea edx, [ebp - 0x31]
mov ecx, 1
mov eax, dword [ebp - 0x28]
mov edi, dword [eax]
call dword [edi + 0x10]
dec esi
jne 0x47c7bf
push 0
push 0
mov eax, dword [ebp - 0x28]
call fcn.0041b134
mov eax, dword [ebp - 0x28]
mov edx, dword [eax]
call dword [edx]
push edx
push eax
mov edx, dword [ebp - 0x28]
mov eax, dword [ebp - 0x20]
call fcn.0041b3b0
mov edx, dword [ebp - 0x10]
add edx, 8
neg edx
mov cx, 2
mov eax, dword [ebp - 0xc]
mov ebx, dword [eax]
call dword [ebx + 0x14]
lea edx, [ebp - 0x14]
mov ecx, 4
mov eax, dword [ebp - 0xc]
call fcn.0041b340
mov eax, dword [0x50a0dc]
mov eax, dword [eax]
call fcn.00409be0
imul eax, eax, 0x64
mov ebx, dword [ebp - 0x14]
sub ebx, eax
mov eax, dword [0x50a29c]
mov eax, dword [eax]
call fcn.00409be0
sub ebx, eax
mov eax, dword [0x50a2cc]
mov eax, dword [eax]
call fcn.00409be0
sub ebx, eax
sub ebx, dword [ebp - 0x18]
mov eax, dword [0x50a29c]
mov eax, dword [eax]
call fcn.00409be0
mov esi, eax
mov eax, dword [ebp - 0x10]
add eax, 8
add esi, eax
mov eax, dword [0x50a2cc]
mov eax, dword [eax]
call fcn.00409be0
add esi, eax
mov edx, esi
neg edx
mov cx, 2
mov eax, dword [ebp - 0xc]
mov esi, dword [eax]
call dword [esi + 0x14]
mov eax, dword [0x50a2cc]
mov eax, dword [eax]
call fcn.00409be0
cdq
push edx
push eax
mov edx, dword [ebp - 0xc]
mov eax, dword [ebp - 0x20]
call fcn.0041b3b0
mov eax, dword [0x50a29c]
mov eax, dword [eax]
call fcn.00409be0
mov esi, eax
mov eax, dword [ebp - 0x10]
add eax, 8
add esi, eax
mov eax, dword [0x50a2cc]
mov eax, dword [eax]
call fcn.00409be0
add esi, eax
mov edx, esi
add edx, dword [ebp - 0x18]
neg edx
mov cx, 2
mov eax, dword [ebp - 0xc]
mov esi, dword [eax]
call dword [esi + 0x14]
mov eax, dword [ebp - 0x18]
cdq
push edx
push eax
mov edx, dword [ebp - 0xc]
mov eax, dword [ebp - 0x20]
call fcn.0041b3b0
mov eax, dword [0x50a29c]
mov eax, dword [eax]
call fcn.00409be0
mov esi, eax
mov eax, dword [ebp - 0x10]
add eax, 8
add esi, eax
mov eax, dword [0x50a2cc]
mov eax, dword [eax]
call fcn.00409be0
add esi, eax
mov edx, esi
add edx, dword [ebp - 0x18]
add edx, ebx
neg edx
mov cx, 2
mov eax, dword [ebp - 0xc]
mov esi, dword [eax]
call dword [esi + 0x14]
mov eax, ebx
cdq
push edx
push eax
mov edx, dword [ebp - 0xc]
mov eax, dword [ebp - 0x20]
call fcn.0041b3b0
mov eax, dword [ebp - 0x20]
call fcn.00404388
mov eax, dword [ebp - 0x1c]
push eax
call fcn.004074f4
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x47c98e
mov eax, dword [ebp - 0xc]
call fcn.00404388
mov eax, dword [ebp - 0x24]
call fcn.00404388
mov eax, dword [ebp - 0x28]
call fcn.00404388
ret