Function at 0x4bac66
Capabilities:
Encode data using xor
Hash data using fnv

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x288
push esi
mov dword [esp + 8], ecx
lea ecx, [esp + 0xe4]
push edi
mov dword [esp + 0x40], edx
mov dword [esp + 0x80], 0x720528
mov dword [esp + 0x90], 0x720520
call fcn.0040d540
push ecx
lea eax, [esp + 0x9c]
push eax
lea ecx, [esp + 0x88]
call fcn.0040d420
mov eax, dword [esp + 0x80]
mov eax, dword [eax + 4]
mov dword [esp + eax + 0x80], 0x720530
mov eax, dword [esp + 0x80]
mov ecx, dword [eax + 4]
lea eax, [ecx - 0x68]
mov dword [esp + ecx + 0x7c], eax
lea ecx, [esp + 0x98]
call fcn.0040de20
lea edx, [esp + 0x184]
mov dword [esp + 0x98], 0x720534
mov dword [esp + 0xd0], 0
mov eax, 2
mov dword [esp + 0xd4], 0
mov dword [esp + 8], edx
dec eax
mov dword [edx - 0x54], 0x720528
lea edi, [edx - 0x54]
mov dword [esp + 0x44], eax
lea ecx, [edx + 0x14]
mov dword [edx - 0x44], 0x720520
call fcn.0040d540
push ecx
lea esi, [edx - 0x3c]
mov ecx, edi
push esi
call fcn.0040d420
mov eax, dword [edi]
mov eax, dword [eax + 4]
mov dword [edi + eax], 0x720530
mov eax, dword [edi]
mov ecx, dword [eax + 4]
lea eax, [ecx - 0x68]
mov dword [ecx + edi - 4], eax
mov ecx, esi
call fcn.0040de20
mov edx, dword [esp + 8]
mov eax, dword [esp + 0x44]
mov dword [esi], 0x720534
mov dword [edx - 4], 0
mov dword [edx], 0
add edx, 0xb0
mov dword [esp + 8], edx
test eax, eax
jne 0x4ba8d0
push 0x14
mov dword [esp + 0x20], eax
call fcn.005ab82c
mov ecx, dword [esp + 0x10]
add esp, 4
mov dword [esp + 0x4c], 0
mov dword [eax], eax
mov dword [eax + 4], eax
mov dword [eax + 8], eax
mov word [eax + 0xc], 0x101
mov dword [esp + 0x18], eax
mov eax, dword [ecx + 4]
sub eax, dword [ecx]
sar eax, 3
imul eax, eax, 0xcccccccd
mov dword [esp + 0x14], eax
test eax, eax
je 0x4badee
xor eax, eax
mov dword [esp + 0x44], eax
nop
mov edi, dword [ecx]
add edi, eax
cmp dword [edi + 0x18], 0xf
mov dword [esp + 0x38], edi
lea eax, [edi + 4]
mov dword [esp + 8], eax
mov esi, eax
jbe 0x4ba9a9
mov esi, dword [eax]
xor ecx, ecx
mov edx, 0x811c9dc5
cmp dword [eax + 0x10], ecx
jbe 0x4ba9da
mov edi, dword [esp + 8]
nop dword [eax]
movzx eax, byte [ecx + esi]
inc ecx
xor eax, edx
imul edx, eax, 0x1000193
cmp ecx, dword [edi + 0x10]
jb 0x4ba9c0
mov edi, dword [esp + 0x38]
mov eax, dword [esp + 8]
push edx
push eax
lea eax, [esp + 0x5c]
push eax
call fcn.004ae8d0
mov edx, dword [0x74d094]
mov eax, dword [eax + 4]
test eax, eax
cmovne edx, eax
cmp edx, dword [0x74d094]
je 0x4bad01
mov eax, dword [edx + 0x20]
lea ecx, [eax - 0x1f]
mov dword [esp + 8], ecx
cmp ecx, 9
ja 0x4bac3d
cmp dword [edi], 8
je 0x4baadc
mov edx, str.Texture2D
lea ecx, [esp + 0x90]
lea esi, [edi + 4]
call fcn.0040e220
cmp dword [esi + 0x14], 0xf
mov ecx, dword [esi + 0x10]
jbe 0x4baa3b
mov esi, dword [esi]
push ecx
mov edx, esi
mov ecx, eax
call fcn.0040fee0
add esp, 4
mov edx, str.:register_t
mov ecx, eax
call fcn.0040e220
push dword [esp + 8]
mov ecx, eax
call fcn.00428020
mov edx, 0x732108
mov ecx, eax
call fcn.0040e220
cmp dword [edi], 9
lea esi, [edi + 4]
lea ecx, [esp + 0x90]
jne 0x4baaa7
mov edx, str.SamplerComparisonState
call fcn.0040e220
cmp dword [esi + 0x14], 0xf
mov ecx, eax
mov edx, dword [esi + 0x10]
jbe 0x4baa91
mov esi, dword [esi]
push edx
mov edx, esi
mov edi, str.SamplerComparisonState:register_s
call fcn.0040fee0
mov esi, dword [esp + 0xc]
jmp 0x4bac1d
mov edx, str.SamplerState
call fcn.0040e220
cmp dword [esi + 0x14], 0xf
mov ecx, eax
mov edx, dword [esi + 0x10]
jbe 0x4baabe
mov esi, dword [esi]
mov eax, dword [esp + 8]
mov edi, str.SamplerState:register_s
push edx
mov edx, esi
mov dword [esp + 0xc], eax
call fcn.0040fee0
mov esi, dword [esp + 0xc]
jmp 0x4bac1d
movq xmm0, qword [str.BACKBUFFER_MS]
lea esi, [esp + 0x20]
xor eax, eax
mov dword [esp + 0x30], 0xd
mov word [esp + 0x2e], ax
mov edx, 0x811c9dc5
mov eax, dword [0x732190]
xor ecx, ecx
mov dword [esp + 0x28], eax
mov al, byte [0x732194]
mov dword [esp + 0x34], 0xf
movq qword [esp + 0x20], xmm0
mov byte [esp + 0x2c], al
mov byte [esp + 0x2d], 0
movzx eax, byte [esi + ecx]
inc ecx
xor eax, edx
imul edx, eax, 0x1000193
cmp ecx, 0xd
jb 0x4bab23
mov eax, dword [esp + 0x40]
lea ecx, [esp + 0x20]
push edx
push ecx
lea ecx, [esp + 0x64]
mov esi, dword [eax]
push ecx
mov ecx, esi
call fcn.004100f0
mov ecx, dword [eax + 4]
mov dword [esp + 0x38], ecx
test ecx, ecx
je 0x4bab5d
lea eax, [esi + 4]
jmp 0x4bab6d
mov ecx, dword [esp + 0x40]
mov eax, dword [ecx]
mov ecx, dword [eax + 4]
add eax, 4
mov dword [esp + 0x38], ecx
mov eax, dword [eax]
lea esi, [edi + 4]
lea ecx, [esp + 0x90]
cmp dword [esp + 0x38], eax
je 0x4baba9
mov edx, str.Texture2DMS_float4_
call fcn.0040e220
cmp dword [esi + 0x14], 0xf
mov ecx, dword [esi + 0x10]
jbe 0x4bab94
mov esi, dword [esi]
push ecx
mov edx, esi
mov ecx, eax
call fcn.0040fee0
mov esi, dword [esp + 0xc]
mov edi, str.:register_t
jmp 0x4bac1d
mov edx, str.Texture2D
call fcn.0040e220
cmp dword [esi + 0x14], 0xf
mov ecx, dword [esi + 0x10]
jbe 0x4babbe
mov esi, dword [esi]
push ecx
mov edx, esi
mov ecx, eax
call fcn.0040fee0
add esp, 4
mov edx, str.:register_t
mov ecx, eax
call fcn.0040e220
mov esi, dword [esp + 8]
mov ecx, eax
push esi
call fcn.00428020
mov edx, 0x732108
mov ecx, eax
call fcn.0040e220
mov edx, str.SamplerState
lea ecx, [esp + 0x90]
add edi, 4
call fcn.0040e220
cmp dword [edi + 0x14], 0xf
mov ecx, dword [edi + 0x10]
jbe 0x4bac0e
mov edi, dword [edi]
push ecx
mov edx, edi
mov ecx, eax
call fcn.0040fee0
mov edi, str.SamplerState:register_s
add esp, 4
mov edx, edi
mov ecx, eax
call fcn.0040e220
push esi
mov ecx, eax
call fcn.00428020
mov edx, 0x732108
mov ecx, eax
jmp 0x4badc6
test eax, eax
js 0x4bad01
cmp eax, 0x89
jne 0x4bac51
or esi, 0xffffffff
jmp 0x4bac76
cmp eax, 0x88
ja case.0x4bac5f.6
movzx eax, byte [eax + 0x4bb238]
jmp dword [eax*4 + 0x4bb228]
mov esi, 1
jmp 0x4bac76
mov esi, 3
jmp 0x4bac76
xor esi, esi
mov eax, esi
mov dword [esp + 8], esi
sub eax, 2
je 0x4bac86
sub eax, 1
jne 0x4bad03
lea eax, [esp + 0x10]
mov dword [esp + 0x10], esi
push eax
lea eax, [esp + 0x74]
push eax
lea ecx, [esp + 0x20]
call fcn.004bf230
movq xmm0, qword [eax]
mov eax, dword [eax + 8]
movq qword [esp + 0x64], xmm0
cmp byte [eax + 0xd], 0
jne 0x4bacb9
cmp esi, dword [eax + 0x10]
jae 0x4badcb
cmp dword [esp + 0x1c], 0xccccccc
je 0x4bb1e1
mov esi, dword [esp + 0x18]
push 0x14
call fcn.005ab82c
mov ecx, dword [esp + 0xc]
add esp, 4
mov dword [eax + 0x10], ecx
lea ecx, [esp + 0x18]
push eax
push dword [esp + 0x6c]
mov dword [eax], esi
push dword [esp + 0x6c]
mov dword [eax + 4], esi
mov dword [eax + 8], esi
mov word [eax + 0xc], 0
call fcn.0042b5e0
jmp 0x4badcb
xor esi, esi
imul ecx, esi, 0xb0
cmp dword [edi + 0x1c], 0
mov dword [esp + 8], ecx
jle 0x4bad24
cmp byte [edi + 0x20], 0
je 0x4bad24
mov eax, dword [edi]
mov eax, dword [eax*4 + 0x72e770]
jmp 0x4bad26
mov eax, dword [edi]
mov dword [esp + 0x38], eax
mov edx, str.const
lea eax, [esp + 0x140]
add eax, ecx
mov ecx, eax
mov dword [esp + 0x10], eax
call fcn.0040e220
mov edx, dword [esp + 0x38]
lea esi, [edi + 4]
mov ecx, eax
mov edx, dword [edx*8 + 0x72e704]
call fcn.0040e220
mov edx, 0x71e884
mov ecx, eax
call fcn.0040e220
cmp dword [esi + 0x14], 0xf
mov ecx, dword [esi + 0x10]
jbe 0x4bad6f
mov esi, dword [esi]
push ecx
mov edx, esi
mov ecx, eax
call fcn.0040fee0
mov esi, dword [edi + 0x1c]
add esp, 4
test esi, esi
jle 0x4badb6
cmp byte [edi + 0x20], 0
je 0x4bad9a
mov eax, esi
mov ecx, 4
cdq
idiv ecx
mov esi, eax
test edx, edx
je 0x4bad9a
inc esi
mov ecx, dword [esp + 0x10]
mov dl, 0x5b
call fcn.0046a580
push esi
mov ecx, eax
call fcn.00428020
mov dl, 0x5d
mov ecx, eax
call fcn.0046a580
lea ecx, [esp + 0x140]
mov edx, 0x7321b8
add ecx, dword [esp + 8]
call fcn.0040e220
mov ecx, dword [esp + 0x4c]
mov eax, dword [esp + 0x44]
inc ecx
add eax, 0x28
mov dword [esp + 0x4c], ecx
mov dword [esp + 0x44], eax
cmp ecx, dword [esp + 0x14]
jae 0x4badee
mov ecx, dword [esp + 0xc]
jmp 0x4ba990
lea eax, [esp + 0x20]
push eax
lea ecx, [esp + 0x9c]
call fcn.0040d4a0
mov ecx, dword [ebp + 8]
lea edx, [esp + 0x20]
cmp dword [esp + 0x34], 0xf
push dword [esp + 0x30]
cmova edx, dword [esp + 0x24]
lea ecx, [ecx + 0x10]
call fcn.0040fee0
mov ecx, dword [esp + 0x38]
add esp, 4
cmp ecx, 0xf
jbe 0x4bae55
mov edx, dword [esp + 0x20]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x4bae4b
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4bb1e6
push ecx
push edx
call fcn.005ab85c
add esp, 8
xor edi, edi
lea esi, [esp + 0x140]
mov dword [esp + 8], edi
mov dword [esp + 0xc], esi
push esi
lea ecx, [esp + 0x48]
call fcn.0040c4b0
mov eax, dword [esi]
mov eax, dword [eax + 4]
test byte [eax + esi + 0xc], 6
jne 0x4bae94
mov ecx, dword [eax + esi + 0x38]
lea edx, [esp + 0x20]
push 2
push 1
push 0
mov eax, dword [ecx]
push 0
push edx
call dword [eax + 0x28]
jmp 0x4baeb3
xorps xmm0, xmm0
mov dword [esp + 0x20], 0xffffffff
mov dword [esp + 0x24], 0xffffffff
movlpd qword [esp + 0x28], xmm0
movq qword [esp + 0x30], xmm0
lea ecx, [esp + 0x44]
call fcn.0040c460
mov ecx, dword [esp + 0x28]
add ecx, dword [esp + 0x20]
mov eax, dword [esp + 0x2c]
adc eax, dword [esp + 0x24]
or ecx, eax
je 0x4bb08f
mov ecx, dword [ebp + 8]
mov edx, str.cbuffer
lea ecx, [ecx + 0x10]
call fcn.0040e220
mov edx, dword [edi*4 + 0x72fc30]
mov ecx, eax
call fcn.0040e220
mov edx, str.:register_b
mov ecx, eax
call fcn.0040e220
mov edi, eax
lea ecx, [esp + 0x4c]
xor esi, esi
push edi
mov dword [esp + 0x14], esi
call fcn.0040c4b0
cmp byte [esp + 0x50], 0
je 0x4baf9b
mov ecx, dword [edi]
mov ecx, dword [ecx + 4]
mov eax, dword [ecx + edi + 0x30]
mov esi, dword [eax + 4]
mov ecx, esi
mov dword [esp + 0x3c], esi
mov eax, dword [esi]
call dword [eax + 4]
lea eax, [esp + 0x38]
push eax
call fcn.0042a8f0
add esp, 4
mov dword [esp + 0x14], eax
test esi, esi
je 0x4baf5c
mov edx, dword [esi]
mov ecx, esi
mov edx, dword [edx + 8]
call edx
test eax, eax
je 0x4baf5c
mov edx, dword [eax]
mov ecx, eax
push 1
call dword [edx]
mov eax, dword [edi]
push dword [esp + 8]
mov esi, dword [esp + 0x18]
mov byte [esp + 0x60], 0
mov ecx, dword [eax + 4]
movzx eax, byte [ecx + edi + 0x40]
add ecx, edi
mov edx, dword [esi]
push eax
push ecx
push dword [ecx + 0x38]
lea eax, [esp + 0x64]
mov ecx, esi
push dword [esp + 0x6c]
push eax
call dword [edx + 0x24]
cmp byte [esp + 0x54], 0
mov eax, 4
mov esi, dword [esp + 0x10]
cmovne esi, eax
mov eax, dword [edi]
xor edx, edx
mov ecx, dword [eax + 4]
mov eax, 4
add ecx, edi
cmp dword [ecx + 0x38], edx
cmovne eax, edx
or eax, esi
or eax, dword [ecx + 0xc]
and eax, 0x17
mov dword [ecx + 0xc], eax
mov ecx, dword [ecx + 0x10]
and ecx, eax
jne 0x4bb1eb
mov esi, dword [esp + 0x4c]
mov eax, dword [esi]
mov eax, dword [eax + 4]
cmp dword [eax + esi + 0xc], edx
jne 0x4baffa
test byte [eax + esi + 0x14], 2
je 0x4baffa
mov ecx, dword [eax + esi + 0x38]
mov eax, dword [ecx]
mov eax, dword [eax + 0x34]
call eax
cmp eax, 0xffffffff
jne 0x4baffa
mov eax, dword [esi]
push ecx
push 4
mov ecx, dword [eax + 4]
add ecx, esi
call fcn.0040d3b0
mov eax, dword [esi]
mov eax, dword [eax + 4]
mov ecx, dword [eax + esi + 0x38]
test ecx, ecx
je 0x4bb00c
mov eax, dword [ecx]
call dword [eax + 8]
mov edx, 0x731e08
mov ecx, edi
call fcn.0040e220
mov esi, dword [esp + 0xc]
lea eax, [esp + 0x20]
push eax
lea ecx, [esi + 8]
call fcn.0040d4a0
mov ecx, dword [ebp + 8]
lea edx, [esp + 0x20]
cmp dword [esp + 0x34], 0xf
push dword [esp + 0x30]
cmova edx, dword [esp + 0x24]
lea ecx, [ecx + 0x10]
call fcn.0040fee0
add esp, 4
mov edx, 0x732104
mov ecx, eax
call fcn.0040e220
mov ecx, dword [esp + 0x34]
cmp ecx, 0xf
jbe 0x4bb08b
mov edx, dword [esp + 0x20]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x4bb081
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4bb1e6
push ecx
push edx
call fcn.005ab85c
add esp, 8
mov edi, dword [esp + 8]
inc edi
add esi, 0xb0
mov dword [esp + 8], edi
mov dword [esp + 0xc], esi
cmp edi, 2
jl 0x4bae66
mov eax, dword [esp + 0x18]
mov esi, dword [eax]
cmp byte [esi + 0xd], 0
jne 0x4bb10b
cmp dword [esi + 0x10], 3
jne 0x4bb0c5
mov edx, dword [ebp + 8]
mov ecx, dword [esp + 0x40]
call fcn.004ba030
mov eax, dword [esi + 8]
cmp byte [eax + 0xd], 0
je 0x4bb0eb
mov eax, dword [esi + 4]
cmp byte [eax + 0xd], 0
jne 0x4bb0e7
cmp esi, dword [eax + 8]
jne 0x4bb0e7
mov esi, eax
mov eax, dword [eax + 4]
cmp byte [eax + 0xd], 0
je 0x4bb0d7
mov esi, eax
jmp 0x4bb101
mov esi, eax
mov ecx, dword [esi]
cmp byte [ecx + 0xd], 0
jne 0x4bb101
mov eax, dword [ecx]
mov esi, ecx
mov ecx, eax
cmp byte [eax + 0xd], 0
je 0x4bb0f5
cmp byte [esi + 0xd], 0
je 0x4bb0b3
mov eax, dword [esp + 0x18]
push dword [eax + 4]
lea eax, [esp + 0x1c]
push eax
mov ecx, eax
call fcn.004beee0
push 0x14
push dword [esp + 0x1c]
call fcn.005ab85c
add esp, 8
lea esi, [esp + 0x290]
mov eax, 2
sub esi, 0xb0
dec eax
mov dword [esp + 0x14], eax
lea edi, [esi + 0x68]
mov dword [esp + 0xc], esi
mov eax, dword [esi]
mov eax, dword [eax + 4]
mov dword [eax + edi - 0x68], 0x720530
mov eax, dword [esi]
mov ecx, dword [eax + 4]
lea eax, [ecx - 0x68]
mov dword [edi + ecx - 0x6c], eax
lea ecx, [esi + 0x18]
call fcn.00411c90
mov edx, esi
push edi
mov eax, dword [edx]
mov eax, dword [eax + 4]
mov dword [eax + edx], 0x72051c
mov eax, dword [edx]
mov ecx, dword [eax + 4]
lea eax, [ecx - 0x20]
mov dword [ecx + edx - 4], eax
mov eax, dword [edx + 0x10]
mov eax, dword [eax + 4]
mov dword [eax + esi + 0x10], 0x720518
mov eax, dword [edx + 0x10]
mov ecx, dword [eax + 4]
lea eax, [ecx - 8]
mov dword [ecx + esi + 0xc], eax
mov eax, dword [edx]
mov eax, dword [eax + 4]
mov dword [eax + esi], 0x720514
mov eax, dword [edx]
mov ecx, dword [eax + 4]
lea eax, [ecx - 0x18]
mov dword [esi + ecx - 4], eax
mov dword [edi], 0x720770
call fcn.005acc4d
mov eax, dword [esp + 0x18]
add esp, 4
test eax, eax
jne 0x4bb134
lea ecx, [esp + 0x80]
call fcn.00404ea0
pop edi
pop esi
mov esp, ebp
pop ebp
ret
call fcn.0042d160
call fcn.005c695f
test cl, 4
je 0x4bb1f7
mov esi, str.ios_base::badbit_set
jmp 0x4bb207
test cl, 2
mov esi, str.ios_base::failbit_set
mov eax, str.ios_base::eofbit_set
cmove esi, eax
lea eax, [esp + 0x54]
push 1
push eax
call fcn.00410fb0
add esp, 8
lea ecx, [esp + 0x70]
push eax
push esi
call fcn.00410e20
mov ecx, eax
call fcn.00414450
lodsb al, byte [esi]
dec ebx
add byte [esp + ebp*4 + 0x4b], dh
add byte [ebp - 0x54], ch
dec ebx
add byte [esp + ebp*4 + 0x4b], dh
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [ecx], al
add dword [ecx], eax
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add eax, dword [ebx]
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add dword [eax], eax
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [eax]
add byte [eax], al
add byte [ecx], al
int3