Function at 0x46f0f0
Capabilities:
Get file size

Disassembly:
sub esp, 0x40
push ebx
push ebp
push esi
push edi
mov edi, eax
call fcn.0046f410
mov eax, dword [esp + 0x54]
lea esi, [edi + 0x50]
call fcn.00478290
test al, al
je 0x46f3f0
mov esi, dword [esi]
xor eax, eax
cmp esi, 0xffffffff
je 0x46f143
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], eax
lea eax, [esp + 0x2c]
push eax
push esi
call dword [sym.imp.KERNEL32.dll_GetFileSize]
mov ebp, eax
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x20], ebp
mov dword [esp + 0x24], eax
jmp 0x46f14d
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], eax
mov ebp, eax
mov ebx, dword [edi + 0x58]
xor edx, edx
xor ecx, ecx
mov dword [esp + 0x38], ebx
test eax, eax
jb 0x46f179
ja 0x46f163
cmp ebp, 8
jb 0x46f179
mov edx, dword [ebx]
mov ecx, dword [ebx + 4]
add ebp, 0xfffffff8
mov esi, eax
adc esi, 0xffffffff
add ebx, 8
mov dword [esp + 0x38], ebx
jmp 0x46f17d
xor ebp, ebp
xor esi, esi
mov dword [edi + 0x48], edx
xor edx, edx
mov dword [edi + 0x4c], ecx
test esi, esi
jb 0x46f1a1
ja 0x46f190
cmp ebp, 4
jb 0x46f1a1
mov edx, dword [ebx]
add ebp, 0xfffffffc
adc esi, 0xffffffff
add ebx, 4
mov dword [esp + 0x38], ebx
jmp 0x46f1a5
xor ebp, ebp
xor esi, esi
mov ecx, dword [esp + 0x20]
sub ecx, ebp
sbb eax, esi
add ecx, 0xfffffff4
mov dword [edi + 0x38], edx
mov dword [edi + 0x3c], 0
mov edx, dword [edi + 0x3c]
adc eax, 0xffffffff
cmp edx, eax
jb 0x46f2ab
ja 0x46f1e0
mov eax, dword [edi + 0x38]
cmp eax, ecx
jbe 0x46f2ab
jmp 0x46f1e0
mov dword [esp + 0x54], 0
test esi, esi
jb 0x46f214
ja 0x46f1f3
cmp ebp, 1
jb 0x46f214
mov eax, ebx
mov dword [esp + 0x54], ebx
lea edx, [eax + 1]
lea esp, [esp]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x46f200
sub eax, edx
inc eax
xor ecx, ecx
sub ebp, eax
sbb esi, ecx
add ebx, eax
jmp 0x46f218
xor ebp, ebp
xor esi, esi
mov ecx, dword [esp + 0x54]
mov dword [esp + 0x1c], ecx
mov ecx, dword [edi + 0xc]
test ecx, ecx
jne 0x46f22d
mov dword [esp + 0x14], ecx
jmp 0x46f239
mov eax, dword [edi + 0x14]
sub eax, ecx
sar eax, 2
mov dword [esp + 0x14], eax
mov eax, dword [edi + 0x10]
mov edx, eax
sub edx, ecx
sar edx, 2
mov dword [esp + 0x18], eax
cmp edx, dword [esp + 0x14]
jae 0x46f25b
mov ecx, dword [esp + 0x54]
mov dword [eax], ecx
add eax, 4
mov dword [edi + 0x10], eax
jmp 0x46f27d
cmp ecx, eax
jbe 0x46f268
call fcn.004fe843
mov eax, dword [esp + 0x18]
mov ecx, dword [edi]
push eax
push ecx
lea edx, [esp + 0x24]
push edx
lea eax, [esp + 0x3c]
push eax
mov eax, edi
call fcn.00471030
mov ecx, dword [esp + 0x20]
mov eax, dword [esp + 0x24]
mov edx, dword [edi + 0x3c]
sub ecx, ebp
sbb eax, esi
add ecx, 0xfffffff4
adc eax, 0xffffffff
cmp edx, eax
ja 0x46f1e0
jb 0x46f2a7
mov eax, dword [edi + 0x38]
cmp eax, ecx
ja 0x46f1e0
mov dword [esp + 0x38], ebx
xor eax, eax
test esi, esi
jb 0x46f2c9
ja 0x46f2b8
cmp ebp, 4
jb 0x46f2c9
mov eax, dword [ebx]
add ebp, 0xfffffffc
adc esi, 0xffffffff
add ebx, 4
mov dword [esp + 0x38], ebx
jmp 0x46f2cd
xor ebp, ebp
xor esi, esi
mov ecx, dword [esp + 0x20]
sub ecx, dword [edi + 0x38]
mov dword [edi + 0x40], eax
mov eax, dword [esp + 0x24]
sbb eax, dword [edi + 0x3c]
sub ecx, ebp
sbb eax, esi
add ecx, 0xfffffff0
mov dword [edi + 0x44], 0
mov edx, dword [edi + 0x44]
adc eax, 0xffffffff
cmp edx, eax
jb 0x46f3d7
ja 0x46f314
mov eax, dword [edi + 0x40]
cmp eax, ecx
jbe 0x46f3d7
jmp 0x46f314
mov ebx, dword [esp + 0x38]
mov dword [esp + 0x54], 0
test esi, esi
jb 0x46f348
ja 0x46f327
cmp ebp, 1
jb 0x46f348
mov eax, ebx
mov dword [esp + 0x54], ebx
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x46f330
sub eax, edx
inc eax
xor ecx, ecx
sub ebp, eax
sbb esi, ecx
add ebx, eax
mov dword [esp + 0x38], ebx
jmp 0x46f34c
xor ebp, ebp
xor esi, esi
mov ecx, dword [esp + 0x54]
mov dword [esp + 0x1c], ecx
mov ecx, dword [edi + 0x24]
test ecx, ecx
jne 0x46f35f
xor eax, eax
jmp 0x46f367
mov eax, dword [edi + 0x2c]
sub eax, ecx
sar eax, 2
mov ebx, dword [edi + 0x28]
mov edx, ebx
sub edx, ecx
sar edx, 2
cmp edx, eax
jae 0x46f383
mov eax, dword [esp + 0x54]
mov dword [ebx], eax
add ebx, 4
mov dword [edi + 0x28], ebx
jmp 0x46f3a3
cmp ecx, ebx
jbe 0x46f38c
call fcn.004fe843
mov ecx, dword [edi + 0x18]
lea eax, [edi + 0x18]
push ebx
push ecx
lea ecx, [esp + 0x24]
push ecx
lea edx, [esp + 0x3c]
push edx
call fcn.00471030
mov ecx, dword [esp + 0x20]
sub ecx, dword [edi + 0x38]
mov eax, dword [esp + 0x24]
sbb eax, dword [edi + 0x3c]
mov edx, dword [edi + 0x44]
sub ecx, ebp
sbb eax, esi
add ecx, 0xfffffff0
adc eax, 0xffffffff
cmp edx, eax
ja 0x46f310
jb 0x46f3d3
mov eax, dword [edi + 0x40]
cmp eax, ecx
ja 0x46f310
mov ebx, dword [esp + 0x38]
or ebp, esi
jne 0x46f3dd
xor ebx, ebx
mov dword [edi + 0x30], ebx
test ebx, ebx
je 0x46f3f0
mov al, 1
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x40
ret 4
call fcn.0046f410
pop edi
pop esi
pop ebp
xor al, al
pop ebx
add esp, 0x40
ret 4