Function at 0x4b96b8
Capabilities:
Read file on windows
Write file on windows

Disassembly:
push ebp
mov ebp, esp
mov ecx, 0x1ab
push 0
push 0
dec ecx
jne 0x4b96c0
push ecx
push ebx
push esi
push edi
mov dword [ebp - 4], edx
mov ebx, eax
xor eax, eax
push ebp
push 0x4b9e47
push dword fs:[eax]
mov dword fs:[eax], esp
cmp dword [ebp - 4], 0xf
je 0x4b9702
cmp dword [ebp - 4], 0x10
je 0x4b9702
cmp dword [ebp - 4], 0x11
je 0x4b9702
cmp dword [ebp - 4], 0x19
je 0x4b9702
cmp dword [ebp - 4], 0x1a
je 0x4b9702
cmp dword [ebp - 4], 0x1b
jne 0x4b971c
mov eax, dword [0x4d5d70]
cmp byte [eax + 0x39c2], 0
jne 0x4b971c
mov byte [ebx + 0x39bf], 1
jmp 0x4b9de6
cmp dword [ebp - 4], 0xa
jne 0x4b9729
mov dword [ebp - 4], 8
xor edx, edx
mov eax, dword [ebx + 0x320]
call fcn.00435c58
xor edx, edx
mov eax, dword [ebx + 0x328]
call fcn.00435c58
cmp byte [ebx + 0x39be], 0
je 0x4b9de6
lea edx, [ebp - 0xd40]
mov eax, dword [0x4d41b4]
mov eax, dword [eax]
call fcn.004828d8
mov eax, dword [ebp - 0xd40]
lea edx, [ebp - 0xd3c]
call fcn.004097c8
mov edx, dword [ebp - 0xd3c]
lea eax, [ebp - 0xc]
mov ecx, 0x4b9e60
call fcn.00404ea4
mov edx, dword [ebp - 0xc]
lea eax, [ebp - 0x180]
call fcn.00402f20
mov edx, 1
lea eax, [ebp - 0x180]
call fcn.0040358c
lea eax, [ebp - 8]
push eax
lea edx, [ebp - 0xd38]
mov ecx, 0xbb8
lea eax, [ebp - 0x180]
call fcn.00403078
lea eax, [ebp - 0x180]
call fcn.004030b8
cmp dword [ebp - 8], 0xbb8
je 0x4b97e1
mov eax, 0x4b9e70
call fcn.0043208c
jmp 0x4b9de6
lea eax, [ebp - 0x10]
call fcn.00404b98
mov esi, 1
lea edi, [ebp - 0xd38]
lea eax, [ebp - 0xd44]
mov dl, byte [edi]
call fcn.00404d80
mov edx, dword [ebp - 0xd44]
lea eax, [ebp - 0x10]
call fcn.00404e60
inc esi
inc edi
cmp esi, 0x1f
jne 0x4b97f4
lea eax, [ebp - 0x14]
mov edx, 0x4b9e88
call fcn.00404c30
mov eax, dword [ebp - 0x10]
mov edx, dword [ebp - 0x14]
call fcn.00404fa4
je 0x4b983f
mov eax, 0x4b9e70
call fcn.0043208c
jmp 0x4b9de6
mov esi, 1
imul eax, esi, 0x1e
xor edx, edx
mov dl, byte [ebp + eax - 0xd38]
mov dword [ebp - 0x1c], edx
cmp dword [ebp - 0x1c], 0
jne 0x4b9868
mov eax, 0x4b9eb0
call fcn.0043208c
jmp 0x4b9de6
xor edx, edx
mov dl, byte [ebp + eax - 0xd37]
cmp edx, dword [ebp - 4]
jne 0x4b98e3
xor edx, edx
mov dl, byte [ebp + eax - 0xd36]
shl edx, 0x18
xor ecx, ecx
mov cl, byte [ebp + eax - 0xd35]
shl ecx, 0x10
add edx, ecx
xor ecx, ecx
mov cl, byte [ebp + eax - 0xd34]
shl ecx, 8
add edx, ecx
xor ecx, ecx
mov cl, byte [ebp + eax - 0xd33]
add edx, ecx
mov dword [ebp - 0x30], edx
xor edx, edx
mov dl, byte [ebp + eax - 0xd32]
shl edx, 0x18
xor ecx, ecx
mov cl, byte [ebp + eax - 0xd31]
shl ecx, 0x10
add edx, ecx
xor ecx, ecx
mov cl, byte [ebp + eax - 0xd30]
shl ecx, 8
add edx, ecx
movzx eax, byte [ebp + eax - 0xd2f]
add edx, eax
mov dword [ebp - 0x2c], edx
jmp 0x4b98ed
inc esi
cmp esi, 0x64
jne 0x4b9844
xor edx, edx
mov eax, dword [ebp - 0xc]
call fcn.00409584
mov esi, eax
xor ecx, ecx
mov edx, dword [ebp - 0x30]
mov eax, esi
call fcn.00409660
mov eax, dword [ebp - 0x2c]
add eax, 0xc350
call fcn.00408cc4
mov dword [ebp - 0x18], eax
mov edx, dword [ebp - 0x18]
mov ecx, dword [ebp - 0x2c]
mov eax, esi
call fcn.00409608
mov edi, eax
mov eax, esi
call fcn.004096a4
cmp edi, dword [ebp - 0x2c]
je 0x4b9947
mov eax, 0x4b9ed0
call fcn.0043208c
mov eax, dword [ebp - 0x18]
call fcn.004027fc
jmp 0x4b9de6
cmp dword [ebp - 4], 0xf
je 0x4b996f
cmp dword [ebp - 4], 0x10
je 0x4b996f
cmp dword [ebp - 4], 0x11
je 0x4b996f
cmp dword [ebp - 4], 0x19
je 0x4b996f
cmp dword [ebp - 4], 0x1a
je 0x4b996f
cmp dword [ebp - 4], 0x1b
jne 0x4b9cca
xor edx, edx
mov eax, dword [ebx + 0x328]
call fcn.00435c58
push pe_nt_image_headers32
call sub.kernel32.dll_GetCurrentProcess
push eax
call sub.kernel32.dll_SetPriorityClass
push 0xf
call sub.kernel32.dll_GetCurrentThread
push eax
call sub.kernel32.dll_SetThreadPriority
mov dword [ebp - 0x24], pe_nt_image_headers32
mov eax, dword [ebp - 0x2c]
cdq
idiv dword [ebp - 0x24]
mov dword [ebp - 0x28], eax
xor esi, esi
xor edx, edx
mov eax, dword [ebx + 0x364]
call fcn.00462360
xor edx, edx
mov eax, dword [ebx + 0x36c]
call fcn.00462360
mov byte [ebx + 0x5c4], 0x55
push 0
lea eax, [ebx + 0x3974]
push eax
push 4
lea eax, [ebx + 0x5c4]
push eax
mov eax, dword [ebx + 0x3e0]
push eax
call sub.kernel32.dll_WriteFile_1
push esi
call sub.kernel32.dll_Sleep_1
mov byte [ebx + 0x5c4], 0x83
push 0
lea eax, [ebx + 0x3974]
push eax
push 4
lea eax, [ebx + 0x5c4]
push eax
mov eax, dword [ebx + 0x3e0]
push eax
call sub.kernel32.dll_WriteFile_1
push esi
call sub.kernel32.dll_Sleep_1
mov byte [ebx + 0x5c4], 0x80
push 0
lea eax, [ebx + 0x3974]
push eax
push 4
lea eax, [ebx + 0x5c4]
push eax
mov eax, dword [ebx + 0x3e0]
push eax
call sub.kernel32.dll_WriteFile_1
push esi
call sub.kernel32.dll_Sleep_1
mov eax, dword [0x4d3ebc]
mov eax, dword [eax]
mov eax, dword [eax + 0x2f8]
mov edx, dword [ebp - 0x28]
call fcn.00446d28
mov eax, dword [0x4d3ebc]
mov eax, dword [eax]
mov eax, dword [eax + 0x2f8]
xor edx, edx
call fcn.00446d1c
mov eax, dword [0x4d3ebc]
mov eax, dword [eax]
mov eax, dword [eax + 0x2f8]
xor edx, edx
call fcn.00446d38
mov eax, dword [0x4d3ebc]
mov eax, dword [eax]
call fcn.0047ecd0
xor edx, edx
mov eax, dword [0x4d5d70]
mov ecx, dword [eax]
call dword [ecx + 0x64]
mov eax, dword [ebp - 0x28]
test eax, eax
jl 0x4b9c62
inc eax
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x20], 0
mov eax, dword [0x4d5d70]
call fcn.004be134
mov byte [ebx + 0x5c4], 0x81
push 0
lea eax, [ebx + 0x3974]
push eax
push 4
lea eax, [ebx + 0x5c4]
push eax
mov eax, dword [ebx + 0x3e0]
push eax
call sub.kernel32.dll_WriteFile_1
push esi
call sub.kernel32.dll_Sleep_1
push 0
lea eax, [ebx + 0x3974]
push eax
mov eax, dword [ebp - 0x24]
push eax
mov eax, dword [ebp - 0x20]
imul dword [ebp - 0x24]
mov edx, dword [ebp - 0x18]
lea eax, [edx + eax]
push eax
mov eax, dword [ebx + 0x3e0]
push eax
call sub.kernel32.dll_WriteFile_1
push 0x32
call sub.kernel32.dll_Sleep_1
mov byte [ebx + 0x5c4], 0x80
push 0
lea eax, [ebx + 0x3974]
push eax
push 4
lea eax, [ebx + 0x5c4]
push eax
mov eax, dword [ebx + 0x3e0]
push eax
call sub.kernel32.dll_WriteFile_1
push esi
call sub.kernel32.dll_Sleep_1
push 0
lea eax, [ebx + 0x3978]
push eax
push 4
lea eax, [ebx + 0x560]
push eax
mov eax, dword [ebx + 0x3e0]
push eax
call sub.kernel32.dll_ReadFile_1
movzx edi, byte [ebx + 0x560]
lea edx, [ebp - 0xd4c]
mov eax, dword [ebx + 0x36c]
call fcn.00462330
push dword [ebp - 0xd4c]
push 0x4b9ee8
lea edx, [ebp - 0xd50]
mov eax, edi
call fcn.00409200
push dword [ebp - 0xd50]
lea eax, [ebp - 0xd48]
mov edx, 3
call fcn.00404f18
mov edx, dword [ebp - 0xd48]
mov eax, dword [ebx + 0x36c]
call fcn.00462360
push esi
call sub.kernel32.dll_Sleep_1
push 0
lea eax, [ebx + 0x3978]
push eax
push 8
lea eax, [ebx + 0x560]
push eax
mov eax, dword [ebx + 0x3e0]
push eax
call sub.kernel32.dll_ReadFile_1
movzx edi, byte [ebx + 0x560]
lea edx, [ebp - 0xd58]
mov eax, dword [ebx + 0x364]
call fcn.00462330
push dword [ebp - 0xd58]
push 0x4b9ee8
lea edx, [ebp - 0xd5c]
mov eax, edi
call fcn.00409200
push dword [ebp - 0xd5c]
lea eax, [ebp - 0xd54]
mov edx, 3
call fcn.00404f18
mov edx, dword [ebp - 0xd54]
mov eax, dword [ebx + 0x364]
call fcn.00462360
push esi
call sub.kernel32.dll_Sleep_1
mov eax, dword [0x4d41b4]
mov eax, dword [eax]
call fcn.00482134
mov eax, dword [0x4d3ebc]
mov eax, dword [eax]
mov eax, dword [eax + 0x2f8]
mov edx, dword [ebp - 0x20]
call fcn.00446d38
inc dword [ebp - 0x20]
dec dword [ebp - 0x34]
jne 0x4b9ab2
push 0x20
call sub.kernel32.dll_GetCurrentProcess
push eax
call sub.kernel32.dll_SetPriorityClass
push 0
call sub.kernel32.dll_GetCurrentThread
push eax
call sub.kernel32.dll_SetThreadPriority
mov eax, dword [ebp - 0x18]
call fcn.004027fc
mov edx, ebx
mov eax, dword [0x4d5d70]
call fcn.004be240
mov eax, dword [0x4d3ebc]
mov eax, dword [eax]
call fcn.0047eb28
mov dl, 1
mov eax, dword [0x4d5d70]
mov ecx, dword [eax]
call dword [ecx + 0x64]
mov edx, 0xc8
mov eax, dword [ebx + 0x328]
call fcn.00435c68
mov dl, 1
mov eax, dword [ebx + 0x328]
call fcn.00435c58
jmp 0x4b9de6
mov dword [ebp - 0x24], 0xc350
mov dword [ebp - 0x1c], 1
mov eax, ebx
call fcn.004ba574
test eax, eax
je 0x4b9d77
mov eax, dword [ebp - 0x2c]
cdq
idiv dword [ebp - 0x24]
mov dword [ebp - 0x20], eax
inc dword [ebp - 0x20]
mov eax, dword [ebp - 0x20]
test eax, eax
jle 0x4b9d63
mov dword [ebp - 0x34], eax
mov esi, 1
push 0
lea eax, [ebx + 0x3974]
push eax
mov eax, dword [ebp - 0x24]
push eax
mov eax, esi
dec eax
imul dword [ebp - 0x24]
mov edx, dword [ebp - 0x18]
lea eax, [edx + eax]
push eax
mov eax, dword [ebx + 0x3e0]
push eax
call sub.kernel32.dll_WriteFile_1
mov byte [ebx + 0x560], 0
push 0
lea eax, [ebx + 0x3978]
push eax
push 4
lea eax, [ebx + 0x560]
push eax
mov eax, dword [ebx + 0x3e0]
push eax
call sub.kernel32.dll_ReadFile_1
movzx edi, byte [ebx + 0x560]
and edi, 2
cmp edi, 2
jne 0x4b9d77
inc esi
dec dword [ebp - 0x34]
jne 0x4b9d03
mov eax, ebx
call fcn.004ba658
test eax, eax
je 0x4b9d77
mov byte [ebx + 0x39bf], 1
jmp 0x4b9db9
cmp dword [ebp - 0x1c], 3
jne 0x4b9da2
cmp dword [ebp - 0x24], 1
je 0x4b9d8f
mov dword [ebp - 0x24], 1
jmp 0x4b9cd1
mov byte [ebx + 0x39bf], 0
mov eax, 0x4b9ef4
call fcn.0043208c
jmp 0x4b9dac
push 0x1f4
call sub.kernel32.dll_Sleep_1
inc dword [ebp - 0x1c]
cmp dword [ebp - 0x1c], 4
jne 0x4b9cd8
mov eax, dword [ebp - 0x18]
call fcn.004027fc
xor eax, eax
mov dword [ebx + 0x39a0], eax
mov edx, 0xc8
mov eax, dword [ebx + 0x328]
call fcn.00435c68
mov dl, 1
mov eax, dword [ebx + 0x328]
call fcn.00435c58
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x4b9e4e
lea eax, [ebp - 0xd5c]
call fcn.00404b98
lea eax, [ebp - 0xd58]
mov edx, 2
call fcn.00404bbc
lea eax, [ebp - 0xd50]
call fcn.00404b98
lea eax, [ebp - 0xd4c]
mov edx, 2
call fcn.00404bbc
lea eax, [ebp - 0xd44]
mov edx, 3
call fcn.00404bbc
lea eax, [ebp - 0x14]
mov edx, 3
call fcn.00404bbc
ret