Function at 0x447010
Capabilities:
Read file on windows

Disassembly:
push 0xffffffffffffffff
push 0x530462
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x14
mov eax, dword [esp + 0x24]
push ebx
push esi
push edi
mov esi, ecx
push eax
mov dword [esp + 0x10], esi
call fcn.00439c20
xor ebx, ebx
or edi, 0xffffffff
lea ecx, [esi + 0x1dc]
mov dword [esp + 0x28], ebx
mov word [esi + 0x1d6], bx
mov word [esi + 0x1d4], bx
mov word [esi + 0x1da], di
mov word [esi + 0x1d8], di
call fcn.004a81e0
mov word [esi + 0x200], bx
mov word [esi + 0x202], bx
mov dword [esi + 0x204], edi
mov dword [esi + 0x208], edi
mov dword [esi + 0x20c], ebx
mov dword [esi + 0x210], 1
mov dword [esi + 0x214], edi
mov dword [esi + 0x21c], ebx
mov dword [esi + 0x220], ebx
mov dword [esi + 0x224], ebx
mov dword [esi + 0x228], ebx
mov dword [esi + 0x218], ebx
mov dword [esi + 0x23c], ebx
mov dword [esi + 0x240], ebx
mov dword [esi + 0x244], ebx
mov edi, dword [sym.imp.MSVCRT.dll_fread]
mov word [esi + 0x24c], bx
mov word [esi + 0x24e], bx
mov dword [esi], 0x535ac0
mov ecx, dword [0x659a18]
push ecx
push 1
lea edx, [esi + 0x1d0]
push 4
push edx
mov byte [esp + 0x38], 3
call edi
mov al, byte [esi + 0x1d1]
add esp, 0x10
cmp al, 1
jg 0x447154
movsx eax, word [esi + 0x14]
movsx ecx, word [esi + 0x10]
sub eax, ecx
inc eax
cdq
and edx, 0xf
add eax, edx
sar eax, 4
cmp eax, 0xa
jge 0x447129
mov eax, 0xa
movsx edx, word [esi + 0x16]
movsx ecx, word [esi + 0x12]
sub edx, ecx
lea ecx, [esp + 0x18]
inc edx
push edx
push eax
push ebx
push ebx
call fcn.004b4a60
mov edx, dword [eax]
mov dword [esi + 0x1d4], edx
mov eax, dword [eax + 4]
mov dword [esi + 0x1d8], eax
jmp 0x44719b
movsx eax, word [esi + 0x16]
movsx ecx, word [esi + 0x12]
sub eax, ecx
inc eax
cdq
and edx, 0xf
add eax, edx
sar eax, 4
cmp eax, 0xa
jge 0x447172
mov eax, 0xa
movsx edx, word [esi + 0x14]
push eax
lea ecx, [esp + 0x1c]
movsx eax, word [esi + 0x10]
sub edx, eax
inc edx
push edx
push ebx
push ebx
call fcn.004b4a60
mov ecx, dword [eax]
mov dword [esi + 0x1d4], ecx
mov edx, dword [eax + 4]
mov dword [esi + 0x1d8], edx
mov ecx, dword [0x659a18]
push ebp
push ecx
lea eax, [esi + 0x22c]
push 4
push 4
push eax
call edi
mov edx, dword [0x659a18]
mov ebp, dword [sym.imp.MSVCRT.dll_ftell]
push edx
call ebp
add esp, 0x14
mov ecx, esi
push eax
call fcn.0043aef0
mov eax, dword [0x659a18]
push eax
call ebp
add esp, 4
mov ecx, esi
push eax
call fcn.0043b340
mov edx, dword [0x659a18]
xor ecx, ecx
mov dword [esp + 0x15], ecx
push edx
push 4
lea eax, [esp + 0x1c]
mov word [esp + 0x21], cx
push 1
push eax
mov byte [esp + 0x24], bl
mov byte [esp + 0x2b], cl
call edi
add esp, 0x10
mov ebp, str.sbar
lea edi, [esp + 0x14]
mov cl, byte [edi]
mov dl, byte [ebp]
mov al, cl
cmp cl, dl
jne 0x447237
cmp al, bl
je 0x447233
mov dl, byte [edi + 1]
mov cl, byte [ebp + 1]
mov al, dl
cmp dl, cl
jne 0x447237
add edi, 2
add ebp, 2
cmp al, bl
jne 0x44720e
xor eax, eax
jmp 0x44723c
sbb eax, eax
sbb eax, 0xffffffff
cmp eax, ebx
jne 0x447330
mov eax, dword [0x659a18]
mov ebp, dword [sym.imp.MSVCRT.dll_fread]
push eax
push 1
lea edi, [esi + 0x23c]
push 4
push edi
call ebp
mov ecx, dword [0x659a18]
lea eax, [esi + 0x240]
push ecx
push 1
push 4
push eax
call ebp
mov edx, dword [0x659a18]
lea eax, [esi + 0x244]
push edx
push 1
push 4
push eax
call ebp
mov al, byte [edi]
add esp, 0x30
test al, 2
je 0x4472cd
push 0x24
call fcn.00470250
add esp, 4
cmp eax, ebx
mov dword [esp + 0x34], eax
je 0x4472c3
mov eax, dword [0x659a18]
push 1
push eax
call dword [sym.imp.MSVCRT.dll_ftell]
mov ecx, dword [esp + 0x3c]
add esp, 4
push eax
call fcn.00488fd0
mov dword [esi + 0x104], eax
jmp 0x4472e1
xor eax, eax
mov dword [esi + 0x104], eax
jmp 0x4472e1
mov ecx, dword [0x659a18]
push 1
push 0x10
push ecx
call dword [sym.imp.MSVCRT.dll_fseek]
add esp, 0xc
mov edx, dword [0x659a18]
lea eax, [esi + 0x248]
push edx
push 1
push 4
push eax
call ebp
xor eax, eax
add esp, 0x10
mov al, byte [edi + 1]
cmp eax, ebx
jle 0x447330
cmp byte [esi + 0x1d1], 1
jg 0x44731e
mov cx, word [esi + 0x1d4]
add cx, ax
dec ecx
mov word [esi + 0x1d8], cx
jmp 0x447330
mov dx, word [esi + 0x1d6]
add dx, ax
dec edx
mov word [esi + 0x1da], dx
push ebx
mov ecx, esi
call fcn.004486d0
push 1
mov ecx, esi
call fcn.004486d0
lea ecx, [esi + 0x1f4]
xor eax, eax
pop ebp
mov dword [ecx], eax
mov dword [ecx + 4], eax
mov dword [ecx + 8], eax
mov eax, dword [esi + 0x22c]
cmp eax, ebx
jne 0x44737c
cmp dword [esi + 0x230], ebx
jne 0x44737c
cmp dword [esi + 0x234], ebx
jne 0x44737c
cmp dword [esi + 0x238], ebx
jne 0x44737c
mov eax, dword [esi + 8]
and al, 0xfe
mov dword [esi + 8], eax
mov ecx, esi
call fcn.0043a330
mov ecx, eax
call fcn.004b53f0
mov ecx, eax
mov eax, 0x55555556
imul ecx
mov eax, edx
mov ecx, esi
shr eax, 0x1f
add edx, eax
push edx
call fcn.0043a330
mov ecx, eax
call fcn.004b5570
mov ecx, dword [esi + 8]
mov eax, esi
and ch, 0xfd
pop edi
or ch, 1
mov dword [esi + 8], ecx
mov ecx, dword [esp + 0x1c]
pop esi
pop ebx
mov dword fs:[0], ecx
add esp, 0x20
ret 4