Function at 0x47bdd0
Capabilities:
Encode data using xor

Disassembly:
mov eax, dword fs:[0]
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x47c195
push eax
mov dword fs:[0], esp
sub esp, 0xd8
mov dword [ebp - 0x1c], ecx
push ebx
push esi
lea ecx, [ebp - 0x58]
push edi
mov ebx, 1
call fcn.0042e010
xor ecx, ecx
mov edx, dword [ebp - 0x1c]
add edx, 0x6c4
mov esi, dword [ebp + 8]
mov dword [ebp - 4], ecx
mov eax, dword [edx]
test eax, eax
je 0x47be38
mov edi, dword [eax + 4]
test edi, edi
je 0x47be38
cmp byte [edi + 0x22], cl
je 0x47be38
mov edi, dword [eax + 0xa4]
and edi, esi
cmp edi, esi
jne 0x47be38
cmp dword [eax + 0xa8], ecx
je 0x47be46
add edx, 4
inc ebx
cmp ebx, 0x200
jl 0x47be12
jmp 0x47bea2
mov eax, dword [ebp - 0x1c]
lea edi, [ebp - 0xe4]
mov ecx, 0x1b
mov esi, dword [eax + ebx*4 + 0x6c0]
add esi, 0x30
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [ebp - 0xd8]
xor esi, esi
mov dword [ebp - 0x18], ecx
mov dword [ebp - 0x14], esi
fild qword [ebp - 0x18]
fmul dword [0x4a827c]
call fcn.0049bb48
mov ecx, dword [ebp - 0xdc]
mov dword [ebp - 0xd8], eax
mov dword [ebp - 0x18], ecx
mov dword [ebp - 0x14], esi
fild qword [ebp - 0x18]
fmul dword [0x4a827c]
call fcn.0049bb48
mov dword [ebp - 0xdc], eax
cmp ebx, 0x200
jne 0x47becb
mov dword [ebp - 4], 0xffffffff
call fcn.0047c19f
xor eax, eax
mov ecx, dword [ebp - 0xc]
pop edi
mov dword fs:[0], ecx
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
mov eax, dword [ebp - 0x1c]
lea edx, [ebp - 0xe4]
push edx
lea ecx, [eax + ebx*4 + 0x6c0]
mov dword [ebp - 0x14], ecx
mov ecx, dword [eax + 0x133c]
push ecx
mov edx, dword [ebp - 0x14]
mov eax, dword [edx]
mov ecx, dword [eax + 4]
call fcn.0042df00
mov ecx, dword [ebp - 0x14]
mov edi, dword [ecx]
mov eax, dword [edi + 4]
cmp dword [eax + 0x30], 0
jne 0x47bf10
push str.failed_to_generate_a_surface._Direct3D::RecompressTextures
call fcn.0043d360
add esp, 4
jmp 0x47beaa
lea esi, [ebp - 0xe4]
add edi, 0x30
mov ecx, 0x1b
rep movsd dword es:[edi], dword [esi]
mov eax, dword [ebp - 0x14]
mov edx, dword [eax]
mov ecx, dword [edx + 4]
call fcn.0042df20
lea ecx, [ebp - 0xe4]
mov edx, dword [ebp - 0x1c]
mov dword [ebp - 0x7c], 0x1800
push ecx
mov eax, dword [edx + 0x133c]
push eax
lea ecx, [ebp - 0x58]
call fcn.0042df00
mov ecx, dword [ebp - 0x14]
mov esi, dword [ecx]
movsx eax, word [esi + 0x24]
mov dword [ebp - 0x10], eax
fild dword [ebp - 0x10]
fmul dword [0x4a827c]
fsub dword [0x4a8290]
call fcn.0049bb48
push eax
movsx eax, word [esi + 0x22]
mov dword [ebp - 0x10], eax
fild dword [ebp - 0x10]
fmul dword [0x4a827c]
fsub dword [0x4a8290]
call fcn.0049bb48
push eax
mov esi, dword [sym.imp.USER32.dll_SetRect]
push 0
lea eax, [ebp - 0x68]
push 0
push eax
call esi
mov ecx, dword [ebp - 0x14]
mov eax, dword [ecx]
movsx ecx, word [eax + 0x24]
movsx eax, word [eax + 0x22]
dec ecx
dec eax
push ecx
push eax
push 0
lea ecx, [ebp - 0x78]
push 0
push ecx
call esi
mov edx, dword [ebp - 0x14]
mov ecx, dword [edx]
mov eax, dword [ecx + 0xa4]
test al, 1
je 0x47bfd2
push 0
add ecx, 8
push 0
push ecx
push 0
push 0
jmp 0x47bff0
push 0
test al, 0x20
push 0
je 0x47bfe4
add ecx, 8
push ecx
push 0
push 0
jmp 0x47bff0
add ecx, 8
lea eax, [ebp - 0x78]
push ecx
lea edx, [ebp - 0x68]
push eax
push edx
lea ecx, [ebp - 0x58]
call fcn.00471f40
cmp byte [ebp - 0x34], 0
je 0x47c015
push 0
mov eax, dword [ebp - 0x14]
push 0
lea ecx, [ebp - 0x58]
push 0
mov eax, dword [eax]
add eax, 8
push eax
call fcn.0041d1a0
mov eax, dword [ebp - 0x14]
mov ecx, dword [eax]
test byte [ecx + 0xa4], 8
je 0x47c093
xor ebx, ebx
cmp byte [ebp - 0x34], bl
jne 0x47c093
push ebx
lea ecx, [ebp - 0x58]
push ebx
xor esi, esi
call fcn.00472770
cmp word [ebp - 0x3c], bx
jle 0x47c08b
xor edi, edi
cmp word [ebp - 0x3e], bx
jle 0x47c082
lea eax, [ebp - 0x10]
lea ecx, [ebp - 0x58]
push eax
push esi
push edi
call fcn.0041f550
test byte [ebp - 0xe], 0xff
jne 0x47c079
cmp byte [ebp - 0xf], bl
jne 0x47c079
cmp byte [ebp - 0x10], bl
jne 0x47c079
push ebx
lea ecx, [ebp - 0x58]
mov dword [ebp - 0x10], 0x80808
push 0x80808
push esi
push edi
call fcn.0041f190
movsx eax, word [ebp - 0x3e]
inc edi
cmp eax, edi
jg 0x47c044
movsx eax, word [ebp - 0x3c]
inc esi
cmp eax, esi
jg 0x47c03c
lea ecx, [ebp - 0x58]
call fcn.00472980
xor ebx, ebx
cmp byte [ebp - 0x40], bl
je 0x47c10e
cmp byte [ebp - 0x34], bl
jne 0x47c10e
push ebx
lea ecx, [ebp - 0x58]
push ebx
call fcn.00472770
cmp word [ebp - 0x3c], bx
jle 0x47c106
xor esi, esi
xor edi, edi
cmp word [ebp - 0x3e], si
jle 0x47c0fd
lea eax, [ebp - 0x10]
lea ecx, [ebp - 0x58]
push eax
push ebx
push edi
call fcn.0041f550
mov eax, dword [ebp - 0x10]
mov edx, 0xff000000
and eax, 0xff000000
push esi
mov ecx, eax
sub edx, eax
neg ecx
xor ecx, dword [ebp - 0x10]
and ecx, 0xffffff
xor ecx, edx
push ecx
mov dword [ebp - 0x10], ecx
push ebx
lea ecx, [ebp - 0x58]
push edi
call fcn.0041f190
movsx ecx, word [ebp - 0x3e]
inc edi
cmp ecx, edi
jg 0x47c0b9
movsx eax, word [ebp - 0x3c]
inc ebx
cmp eax, ebx
jg 0x47c0b1
lea ecx, [ebp - 0x58]
call fcn.00472980
lea ecx, [ebp - 0x58]
call fcn.0042df20
mov eax, dword [ebp - 0x14]
mov ecx, dword [eax]
mov edx, dword [ecx + 4]
mov ecx, dword [ebp - 0x20]
push ecx
mov eax, dword [edx + 0x38]
push eax
mov ebx, dword [eax]
call dword [ebx + 0x18]
mov dword [0x6a6ba4], eax
test eax, eax
je 0x47c159
push str.Direct3D::ReloadTexture
push str.failed_to_load_texture.
call fcn.0043d370
add esp, 8
mov eax, dword [0x6a6ba4]
push eax
call fcn.00482950
add esp, 4
jmp 0x47beaa
mov eax, dword [ebp - 0x1c]
mov edx, dword [ebp - 0x14]
mov ecx, dword [eax + 0x148c]
mov eax, dword [edx]
push ecx
mov ecx, dword [eax + 4]
call fcn.0042dfa0
mov ecx, dword [ebp - 0x14]
mov dword [ebp - 4], 0xffffffff
mov edx, dword [ecx]
mov dword [edx + 0xa8], 1
call fcn.0047c19f
mov eax, 1
jmp 0x47beb8