Function at 0x43c4a0
Capabilities:
Get disk size

Disassembly:
sub esp, 0x20
push ebx
mov ebx, dword [esp + 0x34]
push ebp
push esi
mov esi, dword [esp + 0x30]
push edi
push 0x3ff
push ebx
push str.__os_open
push esi
mov dword [esp + 0x20], 0
call fcn.00415c20
add esp, 0x10
test eax, eax
jne 0x43c71e
mov eax, dword [0x4b8974]
test eax, eax
je 0x43c535
test bl, 2
mov eax, 0x8080
je 0x43c4eb
mov eax, 0x8180
test bl, 0x10
je 0x43c4f3
or ah, 4
test bl, 0x20
jne 0x43c4fa
or al, 2
test bl, 0x80
je 0x43c503
or al, 0x20
jmp 0x43c505
or al, 0x10
test bh, 1
je 0x43c50c
or al, 0x40
test bh, 2
je 0x43c514
or ah, 2
mov ecx, dword [esp + 0x48]
mov edx, dword [esp + 0x44]
push ecx
push edx
push eax
mov eax, dword [esp + 0x44]
push eax
push esi
call fcn.004519d0
add esp, 0x14
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret
lea ecx, [esp + 0x10]
push ecx
push 0x24
push 1
push esi
call fcn.00410b60
mov edi, eax
add esp, 0x10
test edi, edi
jne 0x43c735
test bl, 0x20
mov dword [esp + 0x18], 0x80000000
jne 0x43c566
mov dword [esp + 0x18], 0xc0000000
mov dword [esp + 0x14], 3
call fcn.0043cf00
test eax, eax
je 0x43c57f
mov dword [esp + 0x14], 7
mov eax, ebx
mov edi, 0x80
and eax, 2
je 0x43c59a
test bl, 0x10
je 0x43c59a
mov dword [esp + 0x44], 1
jmp 0x43c5ca
test eax, eax
jne 0x43c5ad
test bh, 2
je 0x43c5bc
mov dword [esp + 0x44], 5
jmp 0x43c5ca
test bh, 2
je 0x43c5bc
mov dword [esp + 0x44], 2
jmp 0x43c5ca
xor edx, edx
test eax, eax
setne dl
add edx, 3
mov dword [esp + 0x44], edx
test bl, 8
je 0x43c5e3
mov eax, dword [esp + 0x10]
mov dword [esp + 0x40], 0x80000080
mov edi, dword [esp + 0x40]
or byte [eax + 0x20], 1
test bl, 0x80
je 0x43c5f0
or edi, 0x8000000
jmp 0x43c5f6
or edi, 0x10000000
test bh, 1
mov dword [esp + 0x40], edi
je 0x43c609
or edi, 0x4000000
mov dword [esp + 0x40], edi
mov ebp, dword [esp + 0x38]
test bl, 4
je 0x43c67c
mov ebx, dword [esp + 0x3c]
test ebx, ebx
je 0x43c67c
mov al, byte [ebp]
test al, al
je 0x43c67c
cmp byte [ebp + 1], 0x3a
jne 0x43c645
movsx eax, al
push eax
push str._c:_
lea ecx, [esp + 0x24]
push 4
push ecx
lea esi, [esp + 0x2c]
call fcn.004a3f7b
add esp, 0x10
jmp 0x43c647
xor esi, esi
lea edx, [esp + 0x24]
lea eax, [esp + 0x28]
push edx
lea ecx, [esp + 0x24]
push eax
lea edx, [esp + 0x34]
push ecx
push edx
push esi
call dword [sym.imp.KERNEL32.dll_GetDiskFreeSpaceA]
test eax, eax
je 0x43c67c
mov eax, ebx
xor edx, edx
div dword [esp + 0x20]
test edx, edx
jne 0x43c67c
or edi, 0x20000000
mov dword [esp + 0x40], edi
mov eax, dword [esp + 0x44]
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x18]
mov ebx, dword [sym.imp.KERNEL32.dll_CreateFileA]
push 0
push edi
push eax
push 0
push ecx
push edx
push ebp
call ebx
mov ecx, dword [esp + 0x10]
mov dword [ecx + 8], eax
mov eax, dword [esp + 0x10]
cmp dword [eax + 8], 0xffffffff
jne 0x43c709
mov esi, 2
call fcn.0043c770
mov edi, eax
cmp edi, 0x17
je 0x43c6c5
cmp edi, 0x18
je 0x43c6c5
cmp edi, 0x1c
jne 0x43c726
cmp esi, 6
ja 0x43c726
mov edx, dword [esp + 0x34]
push 0
push esi
push edx
call fcn.00475b30
mov eax, dword [esp + 0x4c]
mov ecx, dword [esp + 0x50]
mov edx, dword [esp + 0x20]
add esp, 0xc
add esi, 2
push 0
push eax
mov eax, dword [esp + 0x20]
push ecx
push 0
push edx
push eax
push ebp
call ebx
mov ecx, dword [esp + 0x10]
mov dword [ecx + 8], eax
mov eax, dword [esp + 0x10]
cmp dword [eax + 8], 0xffffffff
je 0x43c6af
mov cl, byte [eax + 0x20]
mov edx, dword [esp + 0x48]
or cl, 2
mov byte [eax + 0x20], cl
mov eax, dword [esp + 0x10]
mov dword [edx], eax
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret
test edi, edi
jne 0x43c731
call fcn.0043c770
mov edi, eax
mov esi, dword [esp + 0x34]
mov eax, dword [esp + 0x10]
test eax, eax
je 0x43c747
push eax
push esi
call fcn.00451b10
add esp, 8
mov eax, edi
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x20
ret