Function at 0x4a3c00
Capabilities:
Read file on windows

Disassembly:
push 0xffffffffffffffff
push 0x522330
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x44
push ebx
push ebp
mov ebp, ecx
push esi
push edi
lea ecx, [esp + 0x34]
call fcn.004a76d0
lea ecx, [esp + 0x28]
mov dword [esp + 0x5c], 0
call fcn.004a79a0
mov eax, dword [ebp + 8]
mov byte [esp + 0x5c], 1
test eax, eax
je case.default.0x4a3c8b
mov eax, dword [ebp + 4]
mov ecx, 0x58df84
push eax
call fcn.004a6e80
mov ecx, dword [ebp + 0x1a]
sub eax, ecx
mov ecx, dword [ebp + 0x4c]
cmp ecx, 8
mov dword [ebp + 0x24], eax
ja 0x4a3c6f
mov eax, 1
shl eax, cl
jmp 0x4a3c71
xor eax, eax
mov dword [ebp + 0x28], eax
mov eax, dword [ebp + 0x50]
add eax, 0xfffffff0
cmp eax, 0xb
ja case.default.0x4a3c8b
xor ecx, ecx
mov cl, byte [eax + 0x4a4378]
jmp dword [ecx*4 + 0x4a4370]
mov ecx, dword [ebp + 0x68]
call fcn.004a5c50
cmp eax, 8
jne 0x4a3cc6
mov ecx, dword [ebp + 0x68]
call fcn.004a5c60
cmp eax, dword [ebp + 0x28]
jne 0x4a3cc6
mov ecx, dword [ebp + 0x68]
call fcn.0045cdd0
cmp eax, dword [ebp + 0x60]
jne 0x4a3cc6
mov ecx, dword [ebp + 0x68]
call fcn.004a5cb0
cmp eax, dword [ebp + 0x64]
je 0x4a3ce4
mov edx, dword [ebp + 0x28]
mov eax, dword [ebp + 0x64]
mov ecx, dword [ebp + 0x60]
push edx
push 8
push eax
push ecx
mov ecx, dword [ebp + 0x68]
call fcn.004a5900
test eax, eax
je case.default.0x4a3c8b
mov ecx, dword [ebp + 0x68]
call fcn.004a5c70
mov ecx, dword [ebp + 0x54]
test ecx, ecx
jne 0x4a3d38
mov edx, dword [ebp + 0x28]
xor ecx, ecx
test edx, edx
jbe 0x4a3d9e
add eax, 2
mov edx, dword [ebp + 0x2c]
inc ecx
add eax, 8
mov dl, byte [edx + ecx*4 + 0x26]
mov byte [eax - 0xa], dl
mov edx, dword [ebp + 0x2c]
mov dl, byte [edx + ecx*4 + 0x25]
mov byte [eax - 9], dl
mov edx, dword [ebp + 0x2c]
mov dl, byte [edx + ecx*4 + 0x24]
mov byte [eax - 8], dl
mov edx, dword [ebp + 0x2c]
mov dl, byte [edx + ecx*4 + 0x27]
mov byte [eax - 7], dl
mov edx, dword [ebp + 0x28]
cmp ecx, edx
jb 0x4a3d03
jmp 0x4a3d9e
mov ecx, dword [ebp + 0x28]
xor esi, esi
test ecx, ecx
jbe 0x4a3d9e
xor ecx, ecx
add eax, 2
mov edx, dword [ebp + 0x2c]
inc esi
add eax, 8
mov dl, byte [ecx + edx + 0xe]
add ecx, 3
mov byte [eax - 0xa], dl
mov edx, dword [ebp + 0x2c]
mov dl, byte [ecx + edx + 0xa]
mov byte [eax - 9], dl
mov edx, dword [ebp + 0x2c]
mov dl, byte [ecx + edx + 9]
mov byte [eax - 8], dl
mov edx, dword [ebp + 0x28]
cmp esi, edx
jb 0x4a3d46
jmp 0x4a3d9e
mov ecx, dword [ebp + 0x68]
mov esi, dword [ebp + 0x4c]
call fcn.004a5c50
cmp eax, esi
je 0x4a3d9e
mov eax, dword [ebp + 0x64]
mov ecx, dword [ebp + 0x60]
push 0
push esi
push eax
push ecx
mov ecx, dword [ebp + 0x68]
call fcn.004a5900
test eax, eax
je case.default.0x4a3c8b
mov ecx, dword [ebp + 0x68]
call fcn.004a5c90
mov ecx, dword [ebp + 0x68]
mov dword [esp + 0x1c], eax
call fcn.004a5cc0
mov ebx, eax
mov eax, dword [ebp + 0x50]
cmp eax, 2
je 0x4a4280
cmp eax, 1
je 0x4a4280
mov eax, dword [ebp + 0x60]
mov edx, dword [ebp + 0x1a]
imul eax, dword [ebp + 0x4c]
add eax, 0x1f
push 0
shr eax, 3
and eax, 0x1ffffffc
push edx
mov dword [esp + 0x1c], eax
mov eax, dword [ebp + 4]
push eax
call fcn.004fc589
add esp, 0xc
test eax, eax
jne case.default.0x4a3c8b
mov eax, dword [ebp + 0x4c]
dec eax
cmp eax, 0x1f
ja case.0x4a3e0e.7
xor ecx, ecx
mov cl, byte [eax + 0x4a43a0]
jmp dword [ecx*4 + 0x4a4384]
mov edx, dword [esp + 0x14]
lea ecx, [esp + 0x28]
push edx
call fcn.004a79d0
test eax, eax
je case.default.0x4a3c8b
lea ecx, [esp + 0x28]
call fcn.0045cdd0
mov dword [esp + 0x10], eax
mov eax, dword [ebp + 0x64]
xor esi, esi
cmp eax, esi
jbe case.0x4a3e0e.7
mov dword [esp + 0x18], esi
mov ecx, dword [ebp + 0x58]
test ecx, ecx
jne 0x4a3e56
mov edi, dword [esp + 0x18]
jmp 0x4a3e5e
sub eax, esi
dec eax
imul eax, ebx
mov edi, eax
mov eax, dword [ebp + 4]
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x10]
push eax
push 1
push ecx
push edx
call fcn.004fc194
add esp, 0x10
test eax, eax
je case.default.0x4a3c8b
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x10]
add edi, eax
push edi
push ebx
push ecx
call fcn.004a7a80
add esp, 0xc
mov ecx, ebp
push esi
push 1
call fcn.004a3840
mov edx, dword [esp + 0x18]
mov eax, dword [ebp + 0x64]
inc esi
add edx, ebx
cmp esi, eax
mov dword [esp + 0x18], edx
jb 0x4a3e49
jmp case.0x4a3e0e.7
mov edx, dword [esp + 0x14]
lea ecx, [esp + 0x28]
push edx
call fcn.004a79d0
test eax, eax
je case.default.0x4a3c8b
lea ecx, [esp + 0x28]
call fcn.0045cdd0
mov dword [esp + 0x10], eax
mov eax, dword [ebp + 0x64]
xor esi, esi
cmp eax, esi
jbe case.0x4a3e0e.7
mov dword [esp + 0x18], esi
mov ecx, dword [ebp + 0x58]
test ecx, ecx
jne 0x4a3ef5
mov edi, dword [esp + 0x18]
jmp 0x4a3efd
sub eax, esi
dec eax
imul eax, ebx
mov edi, eax
mov eax, dword [ebp + 4]
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x10]
push eax
push 1
push ecx
push edx
call fcn.004fc194
add esp, 0x10
test eax, eax
je case.default.0x4a3c8b
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x10]
add edi, eax
push edi
push ebx
push ecx
call fcn.004a7a40
add esp, 0xc
mov ecx, ebp
push esi
push 1
call fcn.004a3840
mov edx, dword [esp + 0x18]
mov eax, dword [ebp + 0x64]
inc esi
add edx, ebx
cmp esi, eax
mov dword [esp + 0x18], edx
jb 0x4a3ee8
jmp case.0x4a3e0e.7
mov edx, dword [esp + 0x14]
lea ecx, [esp + 0x28]
push edx
call fcn.004a79d0
test eax, eax
je case.default.0x4a3c8b
lea ecx, [esp + 0x28]
call fcn.0045cdd0
mov dword [esp + 0x10], eax
mov eax, dword [ebp + 0x64]
xor ecx, ecx
cmp eax, ecx
mov dword [esp + 0x18], ecx
jbe case.0x4a3e0e.7
mov dword [esp + 0x20], ecx
mov ecx, dword [ebp + 0x58]
test ecx, ecx
jne 0x4a3f98
mov edi, dword [esp + 0x20]
jmp 0x4a3fa2
sub eax, dword [esp + 0x18]
dec eax
imul eax, ebx
mov edi, eax
mov eax, dword [ebp + 4]
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x10]
push eax
push 1
push ecx
push edx
call fcn.004fc194
add esp, 0x10
test eax, eax
je case.default.0x4a3c8b
mov eax, dword [esp + 0x1c]
mov esi, dword [esp + 0x10]
mov ecx, ebx
add edi, eax
mov edx, ecx
mov eax, dword [esp + 0x18]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
push eax
and ecx, 3
push 1
rep movsb byte es:[edi], byte [esi]
mov ecx, ebp
call fcn.004a3840
mov ecx, dword [esp + 0x18]
mov esi, dword [esp + 0x20]
mov eax, dword [ebp + 0x64]
inc ecx
add esi, ebx
cmp ecx, eax
mov dword [esp + 0x18], ecx
mov dword [esp + 0x20], esi
jb 0x4a3f8b
jmp case.0x4a3e0e.7
mov ecx, dword [esp + 0x14]
push ecx
lea ecx, [esp + 0x2c]
call fcn.004a79d0
test eax, eax
je case.default.0x4a3c8b
lea ecx, [esp + 0x28]
call fcn.0045cdd0
mov dword [esp + 0x10], eax
mov eax, dword [ebp + 0x64]
xor esi, esi
cmp eax, esi
mov dword [esp + 0x18], esi
jbe case.0x4a3e0e.7
mov dword [esp + 0x20], esi
mov ecx, dword [ebp + 0x58]
test ecx, ecx
jne 0x4a404e
mov edi, dword [esp + 0x20]
jmp 0x4a4056
sub eax, esi
dec eax
imul eax, ebx
mov edi, eax
mov edx, dword [ebp + 4]
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
push edx
push 1
push eax
push ecx
call fcn.004fc194
add esp, 0x10
test eax, eax
je case.default.0x4a3c8b
mov eax, dword [ebp + 0x60]
mov dword [esp + 0x24], 0
test eax, eax
jbe 0x4a40b8
mov edx, dword [esp + 0x1c]
mov esi, dword [esp + 0x10]
add edi, edx
mov ax, word [esi]
push eax
call fcn.004a7af0
mov word [edi], ax
mov eax, dword [esp + 0x28]
mov ecx, dword [ebp + 0x60]
add esp, 4
inc eax
add esi, 2
add edi, 2
cmp eax, ecx
mov dword [esp + 0x24], eax
jb 0x4a408f
mov esi, dword [esp + 0x18]
push esi
push 1
mov ecx, ebp
call fcn.004a3840
mov edx, dword [esp + 0x20]
mov eax, dword [ebp + 0x64]
inc esi
add edx, ebx
cmp esi, eax
mov dword [esp + 0x18], esi
mov dword [esp + 0x20], edx
jb 0x4a4041
jmp case.0x4a3e0e.7
mov ecx, dword [esp + 0x14]
push ecx
lea ecx, [esp + 0x2c]
call fcn.004a79d0
test eax, eax
je case.default.0x4a3c8b
lea ecx, [esp + 0x28]
call fcn.0045cdd0
mov dword [esp + 0x10], eax
mov eax, dword [ebp + 0x64]
xor edi, edi
cmp eax, edi
jbe case.0x4a3e0e.7
mov dword [esp + 0x20], edi
mov ecx, dword [ebp + 0x58]
test ecx, ecx
jne 0x4a4126
mov edx, dword [esp + 0x20]
mov dword [esp + 0x18], edx
jmp 0x4a4130
sub eax, edi
dec eax
imul eax, ebx
mov dword [esp + 0x18], eax
mov eax, dword [ebp + 4]
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x10]
push eax
push 1
push ecx
push edx
call fcn.004fc194
add esp, 0x10
test eax, eax
je case.default.0x4a3c8b
mov eax, dword [ebp + 0x60]
xor esi, esi
test eax, eax
jbe 0x4a418a
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0x1c]
lea ecx, [eax + 1]
mov eax, dword [esp + 0x18]
lea eax, [eax + edx + 2]
mov dl, byte [ecx + 1]
inc esi
mov byte [eax - 2], dl
mov dl, byte [ecx]
mov byte [eax - 1], dl
mov dl, byte [ecx - 1]
mov byte [eax], dl
mov edx, dword [ebp + 0x60]
add eax, 3
add ecx, 3
cmp esi, edx
jb 0x4a416c
push edi
push 1
mov ecx, ebp
call fcn.004a3840
mov edx, dword [esp + 0x20]
mov eax, dword [ebp + 0x64]
inc edi
add edx, ebx
cmp edi, eax
mov dword [esp + 0x20], edx
jb 0x4a4115
jmp case.0x4a3e0e.7
mov eax, dword [esp + 0x14]
lea ecx, [esp + 0x28]
push eax
call fcn.004a79d0
test eax, eax
je case.default.0x4a3c8b
lea ecx, [esp + 0x28]
call fcn.0045cdd0
mov dword [esp + 0x10], eax
mov eax, dword [ebp + 0x64]
xor edi, edi
cmp eax, edi
jbe case.0x4a3e0e.7
mov dword [esp + 0x20], edi
mov ecx, dword [ebp + 0x58]
test ecx, ecx
jne 0x4a41f4
mov ecx, dword [esp + 0x20]
mov dword [esp + 0x18], ecx
jmp 0x4a41fe
sub eax, edi
dec eax
imul eax, ebx
mov dword [esp + 0x18], eax
mov edx, dword [ebp + 4]
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x10]
push edx
push 1
push eax
push ecx
call fcn.004fc194
add esp, 0x10
test eax, eax
je case.default.0x4a3c8b
mov eax, dword [ebp + 0x60]
xor esi, esi
test eax, eax
jbe 0x4a425e
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 0x1c]
lea ecx, [edx + 2]
mov edx, dword [esp + 0x18]
lea eax, [edx + eax + 2]
mov dl, byte [ecx - 2]
inc esi
mov byte [eax + 1], dl
mov dl, byte [ecx - 1]
mov byte [eax], dl
mov dl, byte [ecx]
mov byte [eax - 1], dl
mov dl, byte [ecx + 1]
mov byte [eax - 2], dl
mov edx, dword [ebp + 0x60]
add eax, 4
add ecx, 4
cmp esi, edx
jb 0x4a423a
push edi
push 1
mov ecx, ebp
call fcn.004a3840
mov edx, dword [esp + 0x20]
mov eax, dword [ebp + 0x64]
inc edi
add edx, ebx
cmp edi, eax
mov dword [esp + 0x20], edx
jb 0x4a41e3
jmp case.0x4a3e0e.7
mov eax, dword [ebp + 0x24]
push 0
push 0x56c6f8
push eax
lea ecx, [esp + 0x40]
call fcn.004a77c0
test eax, eax
je case.default.0x4a3c8b
lea ecx, [esp + 0x34]
call fcn.0045cdd0
mov ecx, dword [ebp + 0x1a]
mov edx, dword [ebp + 4]
push 0
push ecx
push edx
mov esi, eax
call fcn.004fc589
add esp, 0xc
test eax, eax
jne case.default.0x4a3c8b
mov eax, dword [ebp + 4]
mov ecx, dword [ebp + 0x24]
push eax
push 1
push ecx
push esi
call fcn.004fc194
add esp, 0x10
test eax, eax
je case.default.0x4a3c8b
mov edx, dword [ebp + 0x64]
mov ecx, ebp
dec edx
push edx
push 1
call fcn.004a3840
mov ecx, ebp
call fcn.004a3900
lea ecx, [esp + 0x28]
mov byte [esp + 0x5c], 0
call fcn.004a79c0
lea ecx, [esp + 0x34]
mov dword [esp + 0x5c], 0xffffffff
call fcn.004a76f0
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
mov ecx, dword [esp + 0x44]
mov dword fs:[0], ecx
add esp, 0x50
ret
mov eax, dword [ebp + 0x64]
mov ecx, ebp
dec eax
push eax
push 1
call fcn.004a3840
mov ecx, ebp
call fcn.004a3900
mov ecx, ebp
call fcn.004a3900
lea ecx, [esp + 0x28]
mov byte [esp + 0x5c], 0
call fcn.004a79c0
lea ecx, [esp + 0x34]
mov dword [esp + 0x5c], 0xffffffff
call fcn.004a76f0
mov ecx, dword [esp + 0x54]
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
mov dword fs:[0], ecx
add esp, 0x50
ret