Function at 0x42bdd0
Capabilities:
Encode data using xor
Read file on windows

Disassembly:
sub esp, 0xc
push ebx
push ebp
push esi
mov esi, dword [0xcbb7b4]
push edi
cmp esi, 0x10000000
jae 0x42c14f
lea eax, [esi - 0x8000000]
cmp eax, 0xffff
ja 0x42c10f
cmp dword [0x4b9670], 1
je 0x42bf3c
call fcn.00419740
mov edx, eax
lea eax, [edx + 1]
mov cl, byte [edx]
inc edx
test cl, cl
jne 0x42be11
mov ecx, 0x4af160
sub edx, eax
lea esi, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x42be22
sub ecx, esi
lea eax, [edx + 5]
add eax, ecx
push eax
call fcn.0046b317
add esp, 4
mov ebx, eax
call fcn.00419740
mov edx, ebx
sub edx, eax
mov cl, byte [eax]
lea eax, [eax + 1]
mov byte [edx + eax - 1], cl
test cl, cl
jne 0x42be44
mov edx, 0x4af160
mov esi, edx
mov al, byte [edx]
inc edx
test al, al
jne 0x42be58
sub edx, esi
lea edi, [ebx - 1]
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x42be64
mov ecx, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea ecx, [ebx - 1]
nop dword [eax]
mov al, byte [ecx + 1]
lea ecx, [ecx + 1]
test al, al
jne 0x42be80
mov eax, dword [str..sra]
mov dword [ecx], eax
mov al, byte [0x4a2c44]
push 0x4a2c48
push ebx
mov byte [ecx + 4], al
call fcn.0046b3d9
mov esi, eax
add esp, 8
test esi, esi
je 0x42beca
push esi
push 0x8000
push 1
push 0x4b1670
call fcn.004748bb
push esi
call fcn.0046b467
add esp, 0x14
jmp 0x42bede
push 0x8000
push 0
push 0x4b1670
call fcn.004682f0
add esp, 0xc
push ebx
call fcn.0046b2fc
mov edi, dword [0xcbb7bc]
add esp, 4
and edi, 0xffffff
mov edx, 0
add edi, 1
je 0x42bf2d
movzx esi, word [0xcbb7b4]
mov ebx, dword [0xcbb7b0]
nop word [eax + eax]
mov eax, esi
lea ecx, [ebx + edx]
xor eax, 3
xor ecx, 3
inc edx
inc esi
mov al, byte [eax + 0x4b1670]
mov byte [ecx + 0x4bb7b0], al
cmp edx, edi
jb 0x42bf10
mov dword [0x4b9670], 0xffffffff
jmp 0x42c12d
mov ecx, dword [0x24d1abc]
mov eax, ecx
sub eax, 3
je 0x42bf8c
sub eax, 1
je 0x42bf68
push ecx
push 0x4a2cf8
call fcn.0040e1d0
mov dword [0x17dc9c0], 1
jmp 0x42c12a
mov ecx, dword [0xcbb7b0]
mov eax, dword [0x24d1ab4]
and ecx, 0xfffffffc
mov dword [ecx + 0x4bb7b0], eax
mov eax, dword [0x24d1ab0]
mov dword [ecx + 0x4bb7b4], eax
jmp 0x42c12d
cmp dword [0x4af47c], 0
je 0x42bfb3
push 0x4b0de0
push str._sSave_
push 0x2792610
call fcn.0040e260
add esp, 0xc
mov ecx, 0x2792610
jmp 0x42bfb8
mov ecx, 0x4af588
lea edx, [ecx + 1]
nop dword [eax + eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x42bfc0
sub ecx, edx
mov edx, 0x4af160
lea esi, [edx + 1]
mov al, byte [edx]
inc edx
test al, al
jne 0x42bfd1
sub edx, esi
lea eax, [edx + 5]
add eax, ecx
push eax
call fcn.0046b317
add esp, 4
mov ebx, eax
cmp dword [0x4af47c], 0
je 0x42c011
push 0x4b0de0
push str._sSave_
push 0x2792610
call fcn.0040e260
add esp, 0xc
mov ecx, 0x2792610
jmp 0x42c016
mov ecx, 0x4af588
mov edx, ebx
sub edx, ecx
nop word [eax + eax]
mov al, byte [ecx]
lea ecx, [ecx + 1]
mov byte [edx + ecx - 1], al
test al, al
jne 0x42c020
mov edx, 0x4af160
mov esi, edx
mov al, byte [edx]
inc edx
test al, al
jne 0x42c034
sub edx, esi
lea edi, [ebx - 1]
mov al, byte [edi + 1]
inc edi
test al, al
jne 0x42c040
mov ecx, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea ecx, [ebx - 1]
nop dword [eax]
mov al, byte [ecx + 1]
lea ecx, [ecx + 1]
test al, al
jne 0x42c060
mov eax, dword [str..fla]
mov dword [ecx], eax
mov al, byte [0x4a2cf0]
push 0x4a2cf4
push ebx
mov byte [ecx + 4], al
call fcn.0046b3d9
mov esi, eax
add esp, 8
test esi, esi
je 0x42c0aa
push esi
push 0x20000
push 1
push 0x24b1ab0
call fcn.004748bb
push esi
call fcn.0046b467
add esp, 0x14
jmp 0x42c0c1
push 0x20000
push 0xff
push 0x24b1ab0
call fcn.004682f0
add esp, 0xc
push ebx
call fcn.0046b2fc
mov edi, dword [0xcbb7bc]
add esp, 4
and edi, 0xffffff
mov edx, 0
add edi, 1
je 0x42c12d
movzx esi, word [0xcbb7b4]
mov ebx, dword [0xcbb7b0]
add esi, esi
nop
mov eax, esi
lea ecx, [ebx + edx]
xor eax, 3
xor ecx, 3
inc edx
inc esi
mov al, byte [eax + 0x24b1ab0]
mov byte [ecx + 0x4bb7b0], al
cmp edx, edi
jb 0x42c0f0
jmp 0x42c12d
cmp esi, 0x6000000
jb 0x42c11f
cmp esi, 0x8000000
jb 0x42c12d
push esi
push str.unknown_dma_write:_x_n
call fcn.0040e1d0
add esp, 8
or dword [0xcbb7c0], 1
call fcn.00442950
mov edx, 0x1000
mov ecx, 0x10
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xc
jmp fcn.00438260
cmp esi, 0x1fc00000
jae 0x42c12d
mov ebx, dword [0xcbb7bc]
and esi, 0x3ffffff
mov ecx, dword [0x4af288]
and ebx, 0xffffff
inc ebx
mov dword [esp + 0x14], ebx
lea eax, [esi + ebx]
cmp eax, ecx
jbe 0x42c183
mov ebx, ecx
sub ebx, esi
mov dword [esp + 0x14], ebx
mov edx, dword [0xcbb7b0]
lea eax, [edx + ebx]
cmp eax, 0x7fffff
jbe 0x42c19e
mov ebx, 0x7fffff
sub ebx, edx
mov dword [esp + 0x14], ebx
cmp esi, ecx
jg case.0x42c2cd.4
cmp edx, 0x7fffff
ja case.0x42c2cd.4
test ebx, ebx
je 0x42c2a0
cmp dword [0x16dc99c], 0
jne 0x42c27c
mov dword [esp + 0x18], ebx
lea ebp, [edx - 0x60000000]
mov ebx, dword [0x4af158]
nop word [eax + eax]
mov eax, esi
lea ecx, [ebp + 0x60000000]
xor eax, 3
xor ecx, 3
mov al, byte [eax + ebx]
mov byte [ecx + 0x4bb7b0], al
lea eax, [ebp - 0x20000000]
mov edx, eax
shr edx, 0xc
cmp byte [edx + 0x16dc9b0], 0
jne 0x42c232
shr eax, 2
and eax, 0x3ff
imul ecx, eax, 0x8c
mov eax, dword [edx*4 + 0x17dc9d0]
mov eax, dword [eax]
cmp dword [ecx + eax], 0x442540
je 0x42c232
mov byte [edx + 0x16dc9b0], 1
mov edi, ebp
shr edi, 0xc
cmp byte [edi + 0x16dc9b0], 0
jne 0x42c269
mov edx, dword [edi*4 + 0x17dc9d0]
mov eax, ebp
shr eax, 2
and eax, 0x3ff
imul ecx, eax, 0x8c
mov eax, dword [edx]
cmp dword [ecx + eax], 0x442540
je 0x42c269
mov byte [edi + 0x16dc9b0], 1
inc esi
inc ebp
sub dword [esp + 0x18], 1
jne 0x42c1e0
mov ebx, dword [esp + 0x14]
jmp 0x42c2a0
mov ebp, dword [0x4af158]
sub esi, edx
mov edi, ebx
lea eax, [esi + edx]
mov ecx, edx
xor eax, 3
xor ecx, 3
inc edx
mov al, byte [eax + ebp]
mov byte [ecx + 0x4bb7b0], al
sub edi, 1
jne 0x42c286
mov ecx, dword [0x16dc1b4]
xor eax, eax
add ecx, dword [0x17dc9c8]
adc eax, dword [0x17dc9cc]
test eax, eax
ja case.0x42c2cd.4
jb 0x42c2c2
cmp ecx, 0x100000
jae case.0x42c2cd.4
mov eax, dword [0x17dc9c4]
dec eax
cmp eax, 5
ja case.0x42c2cd.4
jmp dword [eax*4 + 0x42c30c]
mov dword [0x4bbac8], 0x800000
jmp case.0x42c2cd.4
mov dword [0x4bbba0], 0x800000
or dword [0xcbb7c0], 3
call fcn.00442950
shr ebx, 3
mov ecx, 0x10
mov edx, ebx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xc
jmp fcn.00438260