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

Disassembly:
sub esp, 0x214
mov eax, dword [0x53bbf0]
xor eax, esp
mov dword [esp + 0x210], eax
mov eax, dword [esp + 0x21c]
push ebx
imul eax, eax, 0x2710
mov ebx, dword [esp + 0x21c]
push ebp
push esi
push edi
mov esi, ecx
xor edi, edi
push 0x51f100
push ebx
mov dword [esi + 0x1434], edi
mov dword [esi + 0x1438], eax
mov dword [esi + 0x1420], edi
mov dword [esi + 0x1424], edi
call fcn.004c20fd
mov ebp, eax
add esp, 8
cmp ebp, edi
mov dword [esp + 0x14], ebp
jne 0x4b5d3e
push ebx
push str.Could_not_open_level_file:__s
call fcn.0048d4a0
add esp, 8
push ebp
push 1
push 0x1420
push esi
call fcn.004c1e2a
add esp, 0x10
cmp dword [esi], 4
mov edi, pe_nt_image_headers32
jge 0x4b5ecb
push 0x40
lea ecx, [esi + 0xa20]
push 0
push ecx
call fcn.004c14b0
mov eax, 0x400
mov ecx, 0x10
mov word [esi + 0xa6c], cx
mov word [esi + 0xa6e], cx
mov word [esi + 0xa70], cx
mov word [esi + 0xa72], cx
mov word [esi + 0xa74], cx
mov ecx, 0x20
mov word [esi + 0xa62], ax
mov word [esi + 0xa64], ax
mov word [esi + 0xa66], ax
mov word [esi + 0xa68], ax
mov word [esi + 0xa6a], ax
mov word [esi + 0xa94], ax
mov word [esi + 0xa96], ax
mov word [esi + 0xa9a], ax
mov word [esi + 0xa98], ax
mov word [esi + 0xa9c], ax
mov word [esi + 0xa9e], ax
mov al, 0xff
mov byte [esp + 0x1e], al
mov byte [esp + 0x1d], al
mov byte [esp + 0x1c], al
mov byte [esp + 0x1f], 0
mov edx, dword [esp + 0x1c]
mov word [esi + 0xa76], cx
mov word [esi + 0xa78], cx
mov word [esi + 0xa7a], cx
mov word [esi + 0xa7c], cx
mov word [esi + 0xa7e], cx
mov ecx, 0x40
mov byte [esp + 0x1e], al
mov byte [esp + 0x1d], 0
mov byte [esp + 0x1c], 0
mov word [esi + 0xa80], cx
mov word [esi + 0xa82], cx
mov word [esi + 0xa84], cx
mov word [esi + 0xa86], cx
mov word [esi + 0xa88], cx
mov ecx, dword [esp + 0x1c]
mov byte [esp + 0x1e], 0
mov byte [esp + 0x1d], al
mov byte [esp + 0x1c], 0
mov dword [esi + 0xaa0], edx
mov edx, dword [esp + 0x1c]
mov byte [esp + 0x1e], 0
mov byte [esp + 0x1d], 0
mov byte [esp + 0x1c], al
mov eax, dword [esp + 0x1c]
add esp, 0xc
mov word [esi + 0xa60], 0
mov word [esi + 0xa8a], di
mov word [esi + 0xa8c], di
mov word [esi + 0xa8e], di
mov word [esi + 0xa90], di
mov word [esi + 0xa92], di
mov dword [esi + 0xaa4], ecx
mov dword [esi + 0xaa8], edx
mov dword [esi + 0xaac], eax
mov ecx, dword [esi + 4]
mov edx, dword [esi + 8]
shl ecx, 4
shl edx, 4
mov dword [esi + 0x1428], ecx
mov dword [esi + 0x142c], edx
lea eax, [esi + 0x820]
lea esp, [esp]
mov ecx, dword [eax]
and ecx, reloc.WSOCK32.dll_ntohs
jns 0x4b5eff
dec ecx
or ecx, 0xfffffff0
inc ecx
mov dword [eax], ecx
add eax, 4
sub edi, 1
jne 0x4b5ef0
mov edx, dword [esi + 0x14]
shl edx, 6
push edx
call fcn.004c2308
mov dword [esi + 0x1420], eax
mov eax, dword [esi + 0x10]
shl eax, 6
push eax
call fcn.004c2308
add esp, 8
cmp dword [esi], 6
mov dword [esi + 0x1424], eax
jl 0x4b5f63
mov ecx, dword [esi + 0x14]
mov edx, dword [esi + 0x1420]
push ebp
push 0x40
push ecx
push edx
call fcn.004c1e2a
mov eax, dword [esi + 0x10]
mov ecx, dword [esi + 0x1424]
push ebp
push 0x40
push eax
push ecx
call fcn.004c1e2a
add esp, 0x20
jmp 0x4b6052
push 0x5c
push ebx
call fcn.004c0af0
add esp, 8
test eax, eax
jne 0x4b5f76
mov eax, ebx
jmp 0x4b5f79
add eax, 1
lea edx, [esp + 0x20]
sub edx, eax
nop
mov cl, byte [eax]
mov byte [edx + eax], cl
add eax, 1
test cl, cl
jne 0x4b5f80
lea edx, [esp + 0x20]
push 0x2e
push edx
call fcn.004c0af0
mov ecx, dword [str..lvb]
mov dword [eax], ecx
mov dl, byte [0x51f128]
xor edi, edi
add esp, 8
mov byte [eax + 4], dl
cmp dword [esi + 0x14], edi
jle 0x4b6002
xor ebp, ebp
jmp 0x4b5fc0
mov eax, dword [esi + 0x1420]
lea edx, [esp + 0x20]
add eax, ebp
lea esp, [esp]
mov cl, byte [edx]
mov byte [eax], cl
add edx, 1
add eax, 1
test cl, cl
jne 0x4b5fd0
mov eax, dword [esi + 0x1420]
push edi
lea ecx, [eax + ebp + 0x20]
push str.o_d.cfs
push ecx
call fcn.004c1313
add edi, 1
add esp, 0xc
add ebp, 0x40
cmp edi, dword [esi + 0x14]
jl 0x4b5fc0
xor edi, edi
cmp dword [esi + 0x10], edi
jle 0x4b6052
xor ebp, ebp
jmp 0x4b6010
mov eax, dword [esi + 0x1424]
lea edx, [esp + 0x20]
add eax, ebp
lea esp, [esp]
mov cl, byte [edx]
mov byte [eax], cl
add edx, 1
add eax, 1
test cl, cl
jne 0x4b6020
mov edx, dword [esi + 0x1424]
push edi
lea eax, [edx + ebp + 0x20]
push str.f_d.cfs
push eax
call fcn.004c1313
add edi, 1
add esp, 0xc
add ebp, 0x40
cmp edi, dword [esi + 0x10]
jl 0x4b6010
mov edi, dword [esi + 4]
imul edi, dword [esi + 8]
xor ecx, ecx
mov eax, edi
mov edx, 3
mul edx
seto cl
mov dword [esp + 0x1c], edi
neg ecx
or ecx, eax
push ecx
call fcn.004c538d
add esp, 4
xor ebx, ebx
mov dword [esi + 0x1430], eax
mov dword [esp + 0x10], ebx
test edi, edi
mov ebp, dword [esi + 0x1430]
mov dword [esp + 0x18], edi
jle 0x4b60f8
mov eax, dword [esp + 0x14]
push eax
call fcn.004c2e5b
mov edi, eax
add esp, 4
test edi, edi
jne 0x4b60c9
mov ecx, dword [esp + 0x14]
push ecx
call fcn.004c2e5b
mov edx, dword [esp + 0x18]
push edx
mov ebx, eax
call fcn.004c2e5b
shl ebx, 8
mov edi, eax
add esp, 8
add edi, ebx
mov ebx, dword [esp + 0x10]
mov eax, dword [esp + 0x14]
push eax
call fcn.004c2e5b
sub dword [esp + 0x1c], edi
add esp, 4
test edi, edi
jle 0x4b60ed
mov edi, edi
mov byte [ebx + ebp], al
sub edi, 1
add ebp, 3
test edi, edi
jg 0x4b60e0
cmp dword [esp + 0x18], 0
jg 0x4b6092
mov edi, dword [esp + 0x1c]
add ebx, 1
cmp ebx, 3
mov dword [esp + 0x10], ebx
jb 0x4b6084
cmp dword [esi], 4
jge 0x4b6136
test edi, edi
mov ecx, dword [esi + 0x1430]
jle 0x4b6136
add ecx, 2
mov al, byte [ecx]
movzx edx, al
and edx, 0x1f
mov dl, byte [edx*4 + 0x53b3f0]
xor dl, al
and dl, 0x1f
xor dl, al
mov byte [ecx], dl
add ecx, 3
sub edi, 1
jne 0x4b6116
mov eax, dword [esi + 0xc]
mov ecx, eax
shl ecx, 4
push 0x2000
add ecx, eax
push ecx
push 0
call fcn.0048c990
add esp, 0xc
cmp dword [esi], 3
mov dword [esi + 0x1434], eax
jl 0x4b6174
mov edx, dword [esp + 0x14]
mov ecx, dword [esi + 0xc]
push edx
push ecx
push 0x11
push eax
call fcn.004c1e2a
add esp, 0x10
jmp 0x4b624d
mov eax, dword [esi + 0xc]
lea edx, [eax*8]
sub edx, eax
add edx, edx
push edx
call fcn.004c2308
add esp, 4
xor ebx, ebx
mov dword [esp + 0x1c], eax
mov dword [esp + 0x10], ebx
mov ecx, dword [esi + 0xc]
test ecx, ecx
mov ebp, eax
mov dword [esp + 0x18], ecx
jle 0x4b6208
mov eax, dword [esp + 0x14]
push eax
call fcn.004c2e5b
mov edi, eax
add esp, 4
test edi, edi
jne 0x4b61d9
mov ecx, dword [esp + 0x14]
push ecx
call fcn.004c2e5b
mov edx, dword [esp + 0x18]
push edx
mov ebx, eax
call fcn.004c2e5b
shl ebx, 8
mov edi, eax
add esp, 8
add edi, ebx
mov ebx, dword [esp + 0x10]
mov eax, dword [esp + 0x14]
push eax
call fcn.004c2e5b
sub dword [esp + 0x1c], edi
add esp, 4
test edi, edi
jle 0x4b61fd
mov edi, edi
mov byte [ebx + ebp], al
sub edi, 1
add ebp, 0xe
test edi, edi
jg 0x4b61f0
cmp dword [esp + 0x18], 0
jg 0x4b61a2
mov eax, dword [esp + 0x1c]
add ebx, 1
cmp ebx, 0xe
mov dword [esp + 0x10], ebx
jb 0x4b6195
xor ebp, ebp
cmp dword [esi + 0xc], ebp
jle 0x4b6244
xor ebx, ebx
mov edi, eax
nop
mov ecx, dword [esi + 0x1434]
add ecx, ebx
push edi
push ecx
call fcn.004b5bb0
add ebp, 1
add esp, 8
add edi, 0xe
add ebx, 0x11
cmp ebp, dword [esi + 0xc]
jl 0x4b6220
mov eax, dword [esp + 0x1c]
push eax
call fcn.004c21b6
add esp, 4
cmp dword [esi], 5
jge 0x4b627d
xor ecx, ecx
cmp dword [esi + 0xc], ecx
jle 0x4b627d
xor edx, edx
jmp 0x4b6260
mov eax, dword [esi + 0x1434]
and dword [edx + eax + 0xc], 0xbfffffff
lea eax, [edx + eax + 0xc]
add ecx, 1
add edx, 0x11
cmp ecx, dword [esi + 0xc]
jl 0x4b6260
mov ecx, dword [esp + 0x14]
push ecx
call fcn.004c1af7
mov ecx, dword [esp + 0x224]
add esp, 4
pop edi
mov eax, esi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.004c118f
add esp, 0x214
ret 8