Function at 0x672a9c
Capabilities:
Read file on windows

Disassembly:
push ebp
mov ebp, esp
push eax
mov eax, 0x200
add esp, 0xfffff004
push eax
dec eax
jne 0x672aa5
mov eax, dword [ebp - 4]
add esp, 0xffffffa4
push ebx
push esi
push edi
xor ecx, ecx
mov dword [ebp - 4], ecx
mov dword [ebp - 8], edx
mov ebx, eax
xor eax, eax
push ebp
push 0x673572
push dword fs:[eax]
mov dword fs:[eax], esp
mov dl, 1
mov eax, dword [0x672988]
call fcn.00409b50
mov dword [ebp - 0x5c], eax
lea eax, [ebp - 4]
mov edx, dword [ebp - 0x5c]
test edx, edx
je 0x672aec
sub edx, 0xfffffff8
call fcn.00410b28
mov eax, dword [ebp - 0x5c]
mov dword [eax + 0x10], ebx
lea eax, [ebp - 0x20005d]
mov ecx, 0x30
mov edx, 0x200000
call fcn.00408424
mov eax, 0x67358c
call fcn.0066ffa0
mov dword [ebp - 0x30], eax
mov eax, dword [ebp - 0x5c]
mov eax, dword [eax + 0x10]
fild qword [eax + 0x38]
fdiv dword [0x673594]
add esp, 0xfffffff4
fstp xword [esp]
wait
call fcn.0044824c
mov dword [ebp - 0x50], eax
cmp dword [ebp - 0x50], 1
jge 0x672b44
mov dword [ebp - 0x50], 1
mov eax, dword [ebp - 0x5c]
mov eax, dword [eax + 0x10]
mov eax, dword [eax + 0x128]
cmp eax, 1
jle 0x672b5b
add dword [ebp - 0x50], eax
add dword [ebp - 0x50], eax
cmp dword [ebp - 0x50], 3
jle 0x672b68
mov dword [ebp - 0x50], 3
dec eax
jle 0x672b86
mov edx, dword [ebp - 0x5c]
test edx, edx
je 0x672b75
sub edx, 0xffffffdc
xor eax, eax
call fcn.004b1378
mov eax, 0x2710
call fcn.004b14d8
mov eax, dword [0x6bf650]
cmp byte [eax], 0
jne 0x672bbf
mov eax, dword [0x6bf958]
cmp byte [eax], 0
jne 0x672bbf
mov eax, dword [0x6bfb9c]
cmp byte [eax], 0
jne 0x672bbf
mov edx, dword [ebp - 0x5c]
test edx, edx
je 0x672bae
sub edx, 0xffffffe0
xor eax, eax
call fcn.004b1378
mov eax, 0x2710
call fcn.004b14d8
mov byte [ebp - 0x1b], 0
lea ecx, [ebp - 0x1b]
mov edx, dword [ebp - 8]
mov eax, dword [ebp - 0x5c]
mov eax, dword [eax + 0x10]
call fcn.006723c8
cmp byte [ebp - 0x1b], 1
jne 0x672be5
mov eax, dword [ebp - 8]
mov byte [eax], 1
jmp 0x67355a
mov eax, dword [ebp - 0x5c]
mov eax, dword [eax + 0x10]
cmp dword [eax + 0x128], 2
xor edx, edx
mov dword [eax + 0x4c], edx
mov eax, dword [ebp - 8]
mov byte [eax], 0
call fcn.0042d2dc
mov eax, dword [ebp - 0x5c]
mov eax, dword [eax + 0x10]
fstp qword [eax + 0xe8]
wait
xor eax, eax
mov dword [ebp - 0xc], eax
mov dword [ebp - 0x18], 0
mov dword [ebp - 0x14], 0
mov byte [ebp - 0x19], 0
mov eax, dword [ebp - 0x5c]
mov eax, dword [eax + 0x10]
mov edx, 0xc
call fcn.00673fc8
mov eax, dword [ebp - 0x5c]
mov eax, dword [eax + 0x10]
mov edx, 0x14
call fcn.00673b64
mov eax, 0x14d
call fcn.004b14d8
mov eax, dword [ebp - 0x5c]
mov eax, dword [eax + 0x10]
mov edx, 0x14
call fcn.00673b64
mov eax, dword [ebp - 0x5c]
mov eax, dword [eax + 0x10]
inc dword [eax + 0xdc]
mov edx, dword [ebp - 0x5c]
test edx, edx
je 0x672c76
sub edx, 0xffffffe4
xor eax, eax
call fcn.004b1378
mov eax, dword [ebp - 0x5c]
mov eax, dword [eax + 0x10]
mov eax, dword [eax + 0xb4]
cmp eax, 6
ja case.0x672c92.3
jmp dword [eax*4 + 0x672c99]
mov eax, dword [0x6bfffc]
mov eax, dword [eax]
push eax
push 0x6735a4
mov eax, dword [ebp - 0x5c]
mov eax, dword [eax + 0x10]
mov eax, dword [eax + 0xdc]
push eax
mov ecx, 0x6735b4
mov dl, 1
mov eax, dword [0x6684b8]
call fcn.006685e4
mov edx, dword [ebp - 0x5c]
mov edx, dword [edx + 0x10]
mov dword [edx + 0x4c], eax
jmp case.0x672c92.3
mov eax, dword [0x6bfffc]
mov eax, dword [eax]
push eax
push 0x6735a4
mov eax, dword [ebp - 0x5c]
mov eax, dword [eax + 0x10]
mov eax, dword [eax + 0xdc]
push eax
mov ecx, dword [0x6bf5c0]
mov ecx, dword [ecx]
mov dl, 1
mov eax, dword [0x6684b8]
call fcn.006685e4
mov edx, dword [ebp - 0x5c]
mov edx, dword [edx + 0x10]
mov dword [edx + 0x4c], eax
jmp case.0x672c92.3
mov eax, dword [0x6bfffc]
mov eax, dword [eax]
push eax
push 0x6735d8
mov eax, dword [ebp - 0x5c]
mov eax, dword [eax + 0x10]
mov eax, dword [eax + 0xdc]
push eax
mov ecx, dword [0x6bfa74]
mov ecx, dword [ecx]
mov dl, 1
mov eax, dword [0x6684b8]
call fcn.006685e4
mov edx, dword [ebp - 0x5c]
mov edx, dword [edx + 0x10]
mov dword [edx + 0x4c], eax
jmp case.0x672c92.3
mov eax, dword [0x6bfffc]
mov eax, dword [eax]
push eax
push 0x6735a4
mov eax, dword [ebp - 0x5c]
mov eax, dword [eax + 0x10]
mov eax, dword [eax + 0xdc]
push eax
mov ecx, 0x6735e8
mov dl, 1
mov eax, dword [0x6684b8]
call fcn.006685e4
mov edx, dword [ebp - 0x5c]
mov edx, dword [edx + 0x10]
mov dword [edx + 0x4c], eax
jmp case.0x672c92.3
mov eax, dword [0x6bfffc]
mov eax, dword [eax]
push eax
push 0x6735d8
mov eax, dword [ebp - 0x5c]
mov eax, dword [eax + 0x10]
mov eax, dword [eax + 0xdc]
push eax
mov ecx, 0x673614
mov dl, 1
mov eax, dword [0x6684b8]
call fcn.006685e4
mov edx, dword [ebp - 0x5c]
mov edx, dword [edx + 0x10]
mov dword [edx + 0x4c], eax
mov eax, dword [ebp - 0x5c]
mov byte [eax + 0xc], 0
xor ebx, ebx
mov eax, 0x3e8
call fcn.004b14d8
inc ebx
mov edx, dword [ebp - 0x5c]
test edx, edx
je 0x672deb
sub edx, 0xffffffe8
xor eax, eax
call fcn.004b1378
mov eax, dword [ebp - 0x5c]
cmp byte [eax + 0xc], 1
jne 0x672e07
mov eax, 0x3e8
call fcn.004b14d8
jmp 0x672e20
cmp ebx, 0x3c
jle 0x672dd6
mov eax, dword [ebp - 0x5c]
mov eax, dword [eax + 0x10]
mov dword [eax + 0x110], 0x3e
mov byte [ebp - 0x19], 1
cmp byte [ebp - 0x19], 0
jne 0x672f42
xor eax, eax
push ebp
push 0x672e85
push dword fs:[eax]
mov dword fs:[eax], esp
push 0
push 0x8000000
push 3
push 0
push 1
push 0x80000000
mov eax, dword [ebp - 0x5c]
mov eax, dword [eax + 0x10]
mov eax, dword [eax + 0x28]
call fcn.0040c8a8
push eax
call sub.kernel32.dll_CreateFileW
mov dword [ebp - 0xc], eax
cmp dword [ebp - 0xc], 0xffffffff
jne 0x672e7b
mov eax, dword [ebp - 0x5c]
mov eax, dword [eax + 0x10]
mov dword [eax + 0x110], 0x3f
mov byte [ebp - 0x19], 1
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x672ea3
cmp byte [ebp - 0x19], 1
jne 0x672f42
mov eax, dword [ebp - 0x5c]
mov eax, dword [eax + 0x10]
xor edx, edx
mov dword [eax + 0x110], edx
mov byte [ebp - 0x19], 0
mov eax, 0x2710
call fcn.004b14d8
xor eax, eax
push ebp
push 0x672f24
push dword fs:[eax]
mov dword fs:[eax], esp
push 0
push 0x8000000
push 3
push 0
push 1
push 0x80000000
mov eax, dword [ebp - 0x5c]
mov eax, dword [eax + 0x10]
mov eax, dword [eax + 0x28]
call fcn.0040c8a8
push eax
call sub.kernel32.dll_CreateFileW
mov dword [ebp - 0xc], eax
cmp dword [ebp - 0xc], 0xffffffff
jne 0x672f1a
mov eax, dword [ebp - 0x5c]
mov eax, dword [eax + 0x10]
mov dword [eax + 0x110], 0x3f
mov byte [ebp - 0x19], 1
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x672f42
cmp byte [ebp - 0x19], 0
jne 0x6733c8
mov eax, dword [0x6bfa54]
mov eax, dword [eax]
mov dword [ebp - 0x2c], eax
lea eax, [ebp - 0x19]
push eax
mov eax, dword [ebp - 0x5c]
mov eax, dword [eax + 0x10]
mov cl, 1
mov edx, dword [ebp - 0x2c]
call fcn.00671ee8
mov eax, 0x7d0
call fcn.004b14d8
xor ecx, ecx
xor edx, edx
mov eax, dword [ebp - 0xc]
call fcn.0042a754
mov eax, dword [ebp - 0x5c]
mov eax, dword [eax + 0x10]
mov edx, dword [eax + 0x38]
mov dword [ebp - 0x28], edx
mov edx, dword [eax + 0x3c]
mov dword [ebp - 0x24], edx
mov byte [ebp - 0x19], 0
lea edx, [ebp - 0x4c]
mov eax, dword [ebp - 0x5c]
mov eax, dword [eax + 0x10]
call fcn.00676494
mov eax, dword [ebp - 0x50]
test eax, eax
jle 0x6732b3
mov dword [ebp - 0x58], eax
mov dword [ebp - 0x54], 1
xor ebx, ebx
mov eax, dword [0x6bf008]
call fcn.0040c3f4
lea edx, [ebp + ebx - 0x20005d]
mov ecx, 7
call fcn.004078a0
add ebx, 7
xor eax, eax
mov dword [ebp - 0x10], eax
push 0
lea eax, [ebp - 0x10]
push eax
mov eax, dword [ebp - 0x4c]
push eax
lea eax, [ebp - 0x200056]
push eax
mov eax, dword [ebp - 0xc]
push eax
call sub.kernel32.dll_ReadFile
cmp eax, 1
sbb eax, eax
inc eax
test al, al
jne 0x673007
xor eax, eax
mov dword [ebp - 0x10], eax
cmp dword [ebp - 0x10], 1
jae 0x673045
push 4
push 0x32
push 0
push 0
push 0
call sub.user32.dll_MsgWaitForMultipleObjects
push 0
lea eax, [ebp - 0x10]
push eax
mov eax, dword [ebp - 0x4c]
push eax
lea eax, [ebp - 0x200056]
push eax
mov eax, dword [ebp - 0xc]
push eax
call sub.kernel32.dll_ReadFile
cmp eax, 1
sbb eax, eax
inc eax
test al, al
jne 0x673045
xor eax, eax
mov dword [ebp - 0x10], eax
cmp dword [ebp - 0x10], 1
jae 0x673083
push 4
push 0x32
push 0
push 0
push 0
call sub.user32.dll_MsgWaitForMultipleObjects
push 0
lea eax, [ebp - 0x10]
push eax
mov eax, dword [ebp - 0x4c]
push eax
lea eax, [ebp - 0x200056]
push eax
mov eax, dword [ebp - 0xc]
push eax
call sub.kernel32.dll_ReadFile
cmp eax, 1
sbb eax, eax
inc eax
test al, al
jne 0x673083
xor eax, eax
mov dword [ebp - 0x10], eax
cmp dword [ebp - 0x10], 1
jae 0x6730c1
push 4
push 0x32
push 0
push 0
push 0
call sub.user32.dll_MsgWaitForMultipleObjects
push 0
lea eax, [ebp - 0x10]
push eax
mov eax, dword [ebp - 0x4c]
push eax
lea eax, [ebp - 0x200056]
push eax
mov eax, dword [ebp - 0xc]
push eax
call sub.kernel32.dll_ReadFile
cmp eax, 1
sbb eax, eax
inc eax
test al, al
jne 0x6730c1
xor eax, eax
mov dword [ebp - 0x10], eax
cmp dword [ebp - 0x10], 1
jae 0x6730da
mov dword [ebp - 0x28], 0
mov dword [ebp - 0x24], 0
jmp 0x6732b3
cmp dword [ebp - 0x10], 0
jbe 0x6730f0
mov eax, dword [ebp - 0x10]
xor edx, edx
add dword [ebp - 0x18], eax
adc dword [ebp - 0x14], edx
mov eax, dword [ebp - 0x10]
add ebx, eax
mov eax, dword [0x6bf00c]
call fcn.0040c3f4
lea edx, [ebp + ebx - 0x20005d]
mov ecx, 5
call fcn.004078a0
add ebx, 5
mov edx, dword [ebp - 0x5c]
test edx, edx
je 0x673118
sub edx, 0xffffffec
xor eax, eax
call fcn.004b104c
xor eax, eax
mov dword [ebp - 0x20], eax
mov eax, dword [0x6bfa94]
cmp byte [eax], 1
jne 0x67325d
xor eax, eax
mov dword [ebp - 0x44], eax
mov dword [ebp - 0x34], ebx
xor eax, eax
mov dword [ebp - 0x3c], eax
cmp dword [ebp - 0x34], 0x8000
jle 0x673151
mov dword [ebp - 0x38], 0x8000
jmp 0x673157
mov eax, dword [ebp - 0x34]
mov dword [ebp - 0x38], eax
cmp dword [ebp - 0x38], 0
jle 0x673222
xor eax, eax
push ebp
push 0x673193
push dword fs:[eax]
mov dword fs:[eax], esp
push 0
mov eax, dword [ebp - 0x38]
push eax
mov eax, dword [ebp - 0x3c]
lea eax, [ebp + eax - 0x20005d]
push eax
mov eax, dword [ebp - 0x2c]
push eax
call dword [ebp - 0x30]
mov esi, eax
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x67319f
test esi, esi
jle 0x6731c5
add dword [ebp - 0x3c], esi
sub dword [ebp - 0x34], esi
add dword [ebp - 0x20], esi
cmp esi, dword [ebp - 0x38]
jge 0x673222
push 4
push 0x14d
push 0
push 0
push 0
call sub.user32.dll_MsgWaitForMultipleObjects
jmp 0x673222
test esi, esi
jge 0x673210
call fcn.005b9374
mov dword [ebp - 0x40], eax
cmp dword [ebp - 0x40], 0x2734
je 0x6731f5
cmp dword [ebp - 0x40], 0x2747
je 0x6731f5
cmp dword [ebp - 0x40], 0x2733
je 0x6731f5
cmp dword [ebp - 0x40], 0x2751
jne 0x673209
push 4
push 0x14d
push 0
push 0
push 0
call sub.user32.dll_MsgWaitForMultipleObjects
jmp 0x673222
xor eax, eax
mov dword [ebp - 0x20], eax
jmp 0x673262
push 4
push 0x14d
push 0
push 0
push 0
call sub.user32.dll_MsgWaitForMultipleObjects
cmp dword [ebp - 0x34], 0
jle 0x673262
inc dword [ebp - 0x44]
cmp dword [ebp - 0x44], 0x64
jle 0x673238
xor eax, eax
mov dword [ebp - 0x20], eax
jmp 0x673262
mov eax, dword [0x6bfa94]
cmp byte [eax], 1
je 0x673249
xor eax, eax
mov dword [ebp - 0x20], eax
jmp 0x673262
push 2
push 0xf
push 0
push 0
push 0
call sub.user32.dll_MsgWaitForMultipleObjects
jmp 0x67313f
xor eax, eax
mov dword [ebp - 0x20], eax
cmp dword [ebp - 0x24], 0
jne 0x673270
cmp dword [ebp - 0x28], 1
jae 0x673272
jmp 0x6732b3
jl 0x6732b3
cmp dword [ebp - 0x20], 1
jge 0x67328e
mov eax, dword [ebp - 0x5c]
mov eax, dword [eax + 0x10]
mov dword [eax + 0x110], 0x44
mov byte [ebp - 0x19], 1
jmp 0x6732b3
mov eax, dword [ebp - 0x54]
add eax, eax
mov dword [ebp - 0x48], eax
push 4
mov eax, dword [ebp - 0x48]
push eax
push 0
push 0
push 0
call sub.user32.dll_MsgWaitForMultipleObjects
inc dword [ebp - 0x54]
dec dword [ebp - 0x58]
jne 0x672fb9
xor edi, edi
push 4
push 0xa
push 0
push 0
push 0
call sub.user32.dll_MsgWaitForMultipleObjects
lea eax, [ebp - 0x1a]
push eax
mov eax, dword [ebp - 0x5c]
mov eax, dword [eax + 0x10]
mov ecx, 0x673670
mov edx, dword [ebp - 0x2c]
call fcn.00671e4c
mov eax, dword [0x6bf004]
call fcn.004b14d8
cmp dword [ebp - 0x24], 0
jne 0x6732f7
cmp dword [ebp - 0x28], 0
jbe 0x673399
jmp 0x6732fd
jle 0x673399
cmp byte [ebp - 0x19], 0
jne 0x673399
mov eax, dword [0x6c020c]
cmp dword [eax], 0
jne 0x67337b
inc edi
cmp edi, 0x6d60
jle 0x673321
mov edi, 0x15ba8
jmp 0x67337b
mov eax, dword [0x6c020c]
cmp dword [eax], 0
jle 0x67332f
xor edi, edi
jmp 0x67337b
mov eax, dword [0x6bfa94]
cmp byte [eax], 0
jne 0x673340
mov edi, 0x15ba8
jmp 0x67337b
cmp edi, 0x320
je 0x673358
cmp edi, 0x640
je 0x673358
cmp edi, 0xc80
jne 0x67336f
lea eax, [ebp - 0x1a]
push eax
mov eax, dword [ebp - 0x5c]
mov eax, dword [eax + 0x10]
mov ecx, 0x67368c
mov edx, dword [ebp - 0x2c]
call fcn.00671e4c
mov eax, dword [0x6bf004]
call fcn.004b14d8
jmp 0x673311
cmp edi, 0x124f8
jle 0x673399
mov eax, dword [ebp - 0x5c]
mov eax, dword [eax + 0x10]
mov dword [eax + 0x110], 0x45
mov byte [ebp - 0x19], 1
jmp 0x6733c8
cmp byte [ebp - 0x19], 0
jne 0x6733b0
push dword [ebp - 0x14]
push dword [ebp - 0x18]
mov eax, dword [ebp - 0x5c]
mov eax, dword [eax + 0x10]
call fcn.006736a0
cmp dword [ebp - 0x24], 0
jne 0x6733c2
cmp dword [ebp - 0x28], 1
jae 0x672f96
jmp 0x6733c8
jge 0x672f96
cmp dword [ebp - 0xc], 0
jbe 0x6733f9
xor eax, eax
push ebp
push 0x6733ef
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 0xc]
push eax
call sub.kernel32.dll_CloseHandle
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x6733f9
cmp dword [ebp - 0xc], 0
jbe 0x67342a
xor eax, eax
push ebp
push 0x673420
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 0xc]
push eax
call sub.kernel32.dll_CloseHandle
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x67342a
mov eax, dword [ebp - 0x5c]
mov eax, dword [eax + 0x10]
push dword [eax + 0xec]
push dword [eax + 0xe8]
call fcn.0042d2dc
add esp, 0xfffffff8
fstp qword [esp]
wait
call fcn.004d9888
mov ecx, dword [ebp - 0x5c]
mov ecx, dword [ecx + 0x10]
mov dword [ecx + 0x100], eax
mov dword [ecx + 0x104], edx
mov eax, 0x3e8
call fcn.004b14d8
xor eax, eax
push ebp
push 0x6734a0
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 0x5c]
mov eax, dword [eax + 0x10]
cmp dword [eax + 0x4c], 0
setne al
cmp al, 1
jne 0x673496
mov eax, dword [ebp - 0x5c]
mov eax, dword [eax + 0x10]
mov eax, dword [eax + 0x4c]
call fcn.00668734
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x6734aa
mov eax, dword [ebp - 0x5c]
mov eax, dword [eax + 0x10]
cmp dword [eax + 0x110], 0
jne 0x6734c9
mov eax, dword [ebp - 0x5c]
mov eax, dword [eax + 0x10]
mov dword [eax + 0x110], 0x5a
mov eax, 0x14d
call fcn.004b14d8
mov eax, dword [ebp - 0x5c]
mov eax, dword [eax + 0x10]
mov edx, dword [eax + 0x110]
call fcn.00673fc8
mov eax, 0x14d
call fcn.004b14d8
mov eax, dword [ebp - 0x5c]
mov eax, dword [eax + 0x10]
mov edx, dword [eax + 0x110]
call fcn.00673fc8
mov eax, 0x14d
call fcn.004b14d8
mov eax, dword [ebp - 0x5c]
mov eax, dword [eax + 0x10]
mov edx, dword [eax + 0x110]
call fcn.00673fc8
mov eax, 0x14d
call fcn.004b14d8
xor eax, eax
push ebp
push 0x673547
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 0x5c]
mov eax, dword [eax + 0x10]
xor edx, edx
mov dword [eax + 0x4c], edx
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x673551
mov eax, dword [ebp - 8]
movzx edx, byte [ebp - 0x19]
mov byte [eax], dl
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x673579
lea eax, [ebp - 4]
call fcn.00410b10
pop eax
jmp eax