Function at 0x47d380
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0xbc
push ebx
push ebp
push esi
push edi
xor edx, edx
mov ecx, 0x13
xor eax, eax
lea edi, [esp + 0x7d]
mov byte [esp + 0x7c], dl
mov dword [esp + 0x24], edx
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov ecx, 0x15
xor eax, eax
lea edi, [esp + 0x28]
mov ebx, dword [esp + 0xe0]
rep stosd dword es:[edi], eax
mov ecx, 0x16
lea edi, [esp + 0x24]
rep stosd dword es:[edi], eax
mov ecx, 0x14
lea edi, [esp + 0x7c]
rep stosd dword es:[edi], eax
mov eax, dword [esp + 0xec]
cmp ebx, 0x3a
mov dword [esp + 0x18], edx
mov dword [eax], edx
ja case.default.0x47d55b
cmp ebx, edx
lea esi, [esp + 0x7c]
je 0x47d3f3
mov esi, dword [esp + 0xdc]
mov edi, dword [esp + 0xd0]
push edi
mov ecx, dword [edi + 0x2c]
mov dword [esp + 0x28], ecx
call fcn.0047cd80
add esp, 4
test al, al
jne 0x47d739
mov edx, dword [edi]
lea edi, [ebx + 8]
and dl, 0x10
lea eax, [ebx - 8]
neg dl
sbb edx, edx
and edx, 0x14
shr edi, 4
add edx, 0x22000c
inc edi
test al, 0xf
mov dword [esp + 0x1c], edx
mov dword [esp + 0x10], edi
je 0x47d43f
cmp ebx, 0x3a
jne 0x47d444
dec edi
mov dword [esp + 0x10], edi
cmp edi, 4
ja case.default.0x47d55b
mov eax, dword [esp + 0xd4]
cmp eax, 0x33
jne 0x47d463
mov dword [esp + 0x14], 2
jmp 0x47d474
cmp eax, 1
mov dword [esp + 0x14], 3
je 0x47d474
mov dword [esp + 0x14], edi
mov eax, dword [esp + 0x14]
mov ebp, edi
shl ebp, 4
shl eax, 4
lea ecx, [esp + 0x32]
add ebp, 8
add eax, 8
push 2
push ecx
mov dword [esp + 0x28], eax
mov dword [esp + 0x30], ebp
mov byte [esp + 0x34], 8
call fcn.0047bd30
mov dl, byte [esp + 0xd4]
mov al, byte [esp + 0xd8]
mov cl, byte [esi]
mov byte [esp + 0x34], dl
mov dl, byte [esi + 1]
mov byte [esp + 0x35], al
mov al, byte [esi + 2]
mov byte [esp + 0x37], dl
mov byte [esp + 0x36], cl
mov cl, byte [esi + 3]
lea edx, [esp + 0x3a]
push 2
push edx
mov byte [esp + 0x40], al
mov byte [esp + 0x41], cl
call fcn.0047bd30
cmp ebx, 4
jbe 0x47d52b
lea ecx, [ebx - 4]
add esi, 4
mov eax, ecx
lea edi, [esp + 0x3c]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
mov eax, ebp
sub eax, ebx
and ecx, 3
sub eax, 0xf
test eax, eax
rep movsb byte es:[edi], byte [esi]
jle 0x47d50f
lea ecx, [esp + ebx + 0x38]
push eax
push ecx
call fcn.0047bd30
mov edi, dword [esp + 0x10]
mov cl, byte [esp + ebp + 0x28]
cmp ebx, 4
mov byte [esp + 0x10], cl
jbe 0x47d53b
sub bl, 4
and ebx, 0xff
jmp 0x47d53d
lea edx, [ebp - 0x13]
lea eax, [esp + 0x3c]
push edx
push eax
call fcn.0047bd30
jmp 0x47d513
xor ebx, ebx
mov byte [esp + ebp + 0x29], bl
mov dl, byte [esp + 0x3a]
mov byte [esp + ebp + 0x2a], dl
mov al, byte [esp + 0x3b]
dec edi
mov byte [esp + ebp + 0x2b], al
cmp edi, 3
ja case.default.0x47d55b
jmp dword [edi*4 + 0x47d744]
mov esi, dword [esp + 0xd0]
lea ecx, [esp + 0x64]
push ecx
mov edx, dword [esi + 0x30]
push edx
call fcn.0047c080
add esp, 8
xor eax, eax
mov cl, byte [esp + eax + 0x54]
mov bl, byte [esp + eax + 0x64]
xor bl, cl
mov byte [esp + eax + 0x64], bl
inc eax
cmp eax, 0x10
jb 0x47d57c
jmp 0x47d599
mov esi, dword [esp + 0xd0]
mov eax, dword [esi + 0x30]
lea edx, [esp + 0x54]
push edx
push eax
call fcn.0047c080
add esp, 8
xor eax, eax
mov cl, byte [esp + eax + 0x44]
mov bl, byte [esp + eax + 0x54]
xor bl, cl
mov byte [esp + eax + 0x54], bl
inc eax
cmp eax, 0x10
jb 0x47d5ac
jmp 0x47d5c9
mov esi, dword [esp + 0xd0]
mov eax, dword [esi + 0x30]
lea edx, [esp + 0x44]
push edx
push eax
call fcn.0047c080
add esp, 8
xor eax, eax
mov cl, byte [esp + eax + 0x34]
mov bl, byte [esp + eax + 0x44]
xor bl, cl
mov byte [esp + eax + 0x44], bl
inc eax
cmp eax, 0x10
jb 0x47d5dc
jmp 0x47d5f9
mov esi, dword [esp + 0xd0]
mov eax, dword [esi + 0x30]
lea edx, [esp + 0x34]
push edx
push eax
call fcn.0047c080
lea ecx, [esp + 0x34]
push ecx
call fcn.00486bc0
mov ebp, dword [esp + 0xf0]
add esp, 0xc
lea edx, [esp + 0x18]
test ebp, ebp
push edx
jne 0x47d652
mov ecx, dword [esp + 0x20]
push 0
push 0
lea eax, [esp + 0x30]
push 0x58
push eax
push ecx
call fcn.0047c370
push esi
mov edi, eax
call fcn.0047cde0
add esp, 0x1c
mov ax, di
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xbc
ret
mov edi, dword [esp + 0x24]
mov edx, dword [esp + 0x20]
lea eax, [esp + 0x80]
push edi
push eax
lea ecx, [esp + 0x30]
push 0x58
push ecx
push edx
call fcn.0047c370
mov ebx, eax
add esp, 0x18
test bl, bl
je 0x47d690
push esi
call fcn.0047cde0
add esp, 4
mov ax, bx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xbc
ret
cmp dword [esp + 0x18], edi
je 0x47d6ae
push esi
call fcn.0047cde0
add esp, 4
mov ax, 0x1d0d
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xbc
ret
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x14]
mov edx, dword [esi + 0x30]
push eax
push ecx
lea eax, [esp + 0x84]
push edx
push eax
call fcn.0047d060
mov ebx, eax
add esp, 0x10
test bl, bl
jne 0x47d71e
mov ecx, dword [esp + 0xec]
mov esi, dword [esp + 0xe8]
lea edi, [esp + 0x7e]
xor edx, edx
mov dword [ecx], esi
mov eax, ebp
sub edi, ebp
test esi, esi
jbe 0x47d6fd
mov cl, byte [edi + eax]
inc edx
mov byte [eax], cl
inc eax
dec esi
cmp edx, 4
jb 0x47d6ec
mov ecx, esi
lea esi, [esp + 0x84]
mov edx, ecx
lea edi, [ebp + 4]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov esi, dword [esp + 0xd0]
push esi
call fcn.0047cde0
add esp, 4
mov ax, bx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xbc
ret
mov ax, 0x1d10
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xbc
ret