Function at 0x47172a
Capabilities:
Read file on windows

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x4bd1a3
mov eax, dword fs:[0]
push eax
push ecx
mov eax, 0x20074
call fcn.004a2e90
mov eax, dword [0x4fc504]
xor eax, esp
mov dword [esp + 0x20070], eax
push ebx
push esi
push edi
mov eax, dword [0x4fc504]
xor eax, esp
push eax
lea eax, [esp + 0x20088]
mov dword fs:[0], eax
mov edi, ecx
mov dword [esp + 0x20], edi
imul ecx, dword [edi + 0xb18], 0xa0
xor ebx, ebx
mov eax, dword [edi + 0xb24]
cmp dword [ecx + eax + 0x84], ebx
je 0x4717eb
cmp byte [ebp + 0xc], bl
jne 0x471b88
lea eax, [edi + 0x254]
cmp dword [eax + 0x14], 8
jb 0x4717a7
mov eax, dword [eax]
push ebx
push ebx
push eax
push str.Could_not_open_file_0.
lea eax, [esp + 0x74]
mov ecx, edi
push eax
call fcn.004797dd
push 0x30
lea eax, [esp + 0x68]
mov dword [esp + 0x20094], ebx
mov edx, dword [edi]
mov ecx, edi
push eax
lea eax, [edi + 0x73c]
push eax
call dword [edx + 0xb0]
push ebx
push 1
lea ecx, [esp + 0x6c]
call fcn.0040f05a
jmp 0x471b88
lea esi, [edi + 0x254]
push 0x4d4964
mov ecx, esi
call fcn.0042f09e
push 0
mov ebx, eax
lea ecx, [edi + 0xa7c]
push str.utf8.auto.check
mov dword [esp + 0x20], ebx
call fcn.00452214
mov dword [esp + 0x1c], eax
test ebx, ebx
jne 0x4718ac
inc ebx
cmp byte [ebp + 0xc], 0
jne 0x471879
cmp dword [esi + 0x14], 8
jb 0x471830
mov esi, dword [esi]
push 0
push 0
push esi
push str.Could_not_open_file_0.
lea eax, [esp + 0x74]
mov ecx, edi
push eax
call fcn.004797dd
push 0x30
lea eax, [esp + 0x68]
mov dword [esp + 0x20094], ebx
mov edx, dword [edi]
mov ecx, edi
push eax
lea eax, [edi + 0x73c]
push eax
call dword [edx + 0xb0]
or dword [esp + 0x20090], 0xffffffff
lea ecx, [esp + 0x64]
push 0
push ebx
call fcn.0040f05a
push 0
push 0
push 0x7e3
lea ecx, [edi + 0x744]
call fcn.004108a6
test eax, eax
jne 0x471b88
push eax
push ebx
push 0x7dc
lea ecx, [edi + 0x744]
call fcn.004108a6
jmp 0x471b88
imul ecx, dword [edi + 0xb18], 0xa0
add ecx, dword [edi + 0xb24]
call fcn.0046ac9f
push 0
lea ebx, [edi + 0x744]
push 0
push 0x81e
mov ecx, ebx
mov dword [esp + 0x30], ebx
call fcn.004108a6
push 0
push 0
push 0x7d4
mov ecx, ebx
call fcn.004108a6
imul ecx, dword [edi + 0xb18], 0xa0
xor ebx, ebx
mov eax, dword [edi + 0xb24]
inc ebx
cmp byte [ebp + 0x10], 0
mov dword [ecx + eax + 0x2c], ebx
lea ecx, [edi + 0x744]
je 0x471a30
push 0xeeeeee
push 0x20
push 0x804
call fcn.004108a6
push 0
push ebx
lea ebx, [edi + 0x744]
push 0x87b
mov ecx, ebx
call fcn.004108a6
mov eax, dword [ebp + 8]
mov ecx, ebx
push 0
add eax, 0x3e8
push eax
push 0xa48
call fcn.0046ab68
push 0x68
mov dword [esp + 0x18], eax
call fcn.004907d4
pop ecx
mov dword [esp + 0x10], eax
mov dword [esp + 0x20090], 2
test eax, eax
je 0x4719a0
test edi, edi
je 0x47197a
lea ebx, [edi + 0x234]
jmp 0x47197c
xor ebx, ebx
push dword [esp + 0x18]
push dword [ebp + 8]
sub esp, 0x18
mov ecx, esp
push esi
call fcn.0040ef9e
push dword [esp + 0x34]
mov ecx, dword [esp + 0x34]
push ebx
call fcn.0040ea66
mov ecx, eax
jmp 0x4719a2
xor ecx, ecx
or dword [esp + 0x20090], 0xffffffff
imul edx, dword [edi + 0xb18], 0xa0
mov eax, dword [edi + 0xb24]
push 0
push str.asynchronous.sleep
mov dword [edx + eax + 0x84], ecx
lea ecx, [edi + 0xa7c]
imul esi, dword [edi + 0xb18], 0xa0
add esi, dword [edi + 0xb24]
call fcn.00452214
mov ecx, dword [esi + 0x84]
mov dword [ecx + 0x44], eax
imul ecx, dword [edi + 0xb18], 0xa0
mov eax, dword [edi + 0xb24]
mov eax, dword [ecx + eax + 0x84]
mov ecx, dword [esp + 0x1c]
mov dword [eax + 0x48], ecx
imul ecx, dword [edi + 0xb18], 0xa0
mov eax, dword [edi + 0xb24]
mov edx, dword [edi]
push dword [ecx + eax + 0x84]
mov ecx, edi
call dword [edx + 0x194]
jmp 0x471b88
mov eax, dword [ebp + 8]
push 0
add eax, 0x3e8
push eax
push 0x98e
call fcn.004108a6
push dword [esp + 0x18]
lea eax, [esp + 0x80]
push 0x20000
push ebx
push eax
call fcn.00494388
add esp, 0x10
mov dword [esp + 0x10], eax
mov edx, eax
lea ecx, [esp + 0x7c]
call fcn.0040e025
mov esi, dword [esp + 0x1c]
mov dword [esp + 0x14], eax
test eax, eax
jne 0x471aa7
cmp esi, 2
je 0x471a88
cmp esi, 4
jne 0x471bae
mov edx, dword [esp + 0x10]
lea ecx, [esp + 0x7c]
push esi
call fcn.0048d687
pop ecx
test eax, eax
je 0x471bae
mov dword [esp + 0x14], 4
xor cl, cl
cmp esi, 3
sete al
movzx eax, al
push eax
push ecx
lea ecx, [esp + 0x30]
call fcn.0048d56a
mov dword [esp + 0x20090], 3
mov eax, dword [esp + 0x10]
test eax, eax
je 0x471b19
mov edi, dword [esp + 0x24]
push eax
lea eax, [esp + 0x80]
push eax
lea ecx, [esp + 0x30]
call fcn.0048d5c4
push dword [esp + 0x30]
mov ecx, edi
push eax
push 0x7d1
call fcn.004108a6
push dword [esp + 0x18]
lea eax, [esp + 0x80]
push 0x20000
push ebx
push eax
call fcn.00494388
add esp, 0x10
test eax, eax
jne 0x471ad4
mov edi, dword [esp + 0x20]
push dword [esp + 0x18]
call fcn.004944a0
pop ecx
xor ebx, ebx
lea ecx, [edi + 0x744]
push ebx
push ebx
push 0x81f
call fcn.004108a6
imul edx, dword [edi + 0xb18], 0xa0
mov ecx, dword [edi + 0xb24]
mov eax, dword [esp + 0x28]
mov dword [edx + ecx + 0x30], eax
imul ecx, dword [edi + 0xb18], 0xa0
mov eax, dword [edi + 0xb24]
cmp dword [ecx + eax + 0x30], ebx
jne 0x471b77
imul ecx, dword [edi + 0xb18], 0xa0
mov edx, dword [esp + 0x14]
mov dword [ecx + eax + 0x30], edx
push ebx
mov ecx, edi
call fcn.00471d98
lea ecx, [esp + 0x28]
call fcn.0048d5a8
mov ecx, dword [esp + 0x20088]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x20070]
xor ecx, esp
call fcn.004906a0
mov esp, ebp
pop ebp
ret 0xc
cmp esi, ebx
je 0x471bbb
cmp esi, 3
jne 0x471aa7
mov cl, bl
jmp 0x471aa9