Function at 0x49f420
Capabilities:
Resolve function by parsing pe exports

Disassembly:
mov ecx, dword [0x5ad388]
mov ecx, dword fs:[ecx]
mov ecx, dword [ecx]
cmp esp, dword [ecx + 8]
jbe 0x49fe10
sub esp, 0x58
mov eax, 0
mov dword [esp + 0x54], eax
mov byte [esp + 0x23], 0
mov dword [esp + 0x68], 0
mov dword [esp + 0x6c], 0
mov dword [esp + 0x70], 0
mov dword [esp + 0x74], 0
mov dword [esp + 0x78], 0
mov dword [esp + 0x7c], 0
mov dword [esp + 0x80], 0
mov dword [esp + 0x84], 0
mov dword [esp + 0x88], 0
mov dword [esp + 0x8c], 0
mov dword [esp + 0x90], 0
mov eax, dword [esp + 0x5c]
mov ecx, dword [eax]
test byte [ecx], al
add ecx, 0x134
mov dword [esp], ecx
call sym.sync_atomic.LoadPointer
mov eax, dword [esp + 4]
test eax, eax
jne 0x49f589
lea eax, [0x4d1460]
mov dword [esp], eax
call sym.runtime.newobject
mov eax, dword [esp + 4]
mov dword [esp + 0x44], eax
mov ecx, dword [esp + 0x5c]
mov edx, dword [ecx]
mov edx, dword [edx + 0x10]
mov dword [esp], eax
mov dword [esp + 4], edx
call sym.os._dirInfo_.init
mov eax, dword [esp + 0x5c]
mov ecx, dword [eax]
test byte [ecx], al
add ecx, 0x134
mov dword [esp], ecx
mov dword [esp + 4], 0
mov ecx, dword [esp + 0x44]
mov dword [esp + 8], ecx
call sym.sync_atomic.CompareAndSwapPointer
movzx eax, byte [esp + 0xc]
test al, al
jne 0x49f585
nop
mov eax, dword [esp + 0x44]
mov dword [eax + 0x10], 0
mov ecx, dword [eax + 8]
test ecx, ecx
je 0x49f4ac
lea eax, [0x58ab90]
mov dword [esp], eax
lea edx, [0x4c3320]
mov dword [esp + 4], edx
mov dword [esp + 8], ecx
call sym.sync._Pool_.Put
mov eax, dword [0x5ad470]
test eax, eax
jne 0x49f56b
mov eax, dword [esp + 0x44]
jmp 0x49f579
mov eax, dword [esp + 0x44]
mov ecx, dword [eax + 8]
call sym.runtime.gcWriteBarrier1
mov dword [edi], ecx
mov dword [eax + 8], 0
jmp 0x49f4ac
mov eax, dword [esp + 0x44]
mov dword [esp + 0x44], eax
test byte [eax], al
mov dword [esp], eax
call sym.sync._Mutex_.Lock
lea eax, [sym.os._File_.readdir.deferwrap1]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x44]
mov dword [esp + 0x50], eax
lea ecx, [esp + 0x4c]
mov dword [esp + 0x54], ecx
mov byte [esp + 0x23], 1
mov ecx, dword [eax + 8]
test ecx, ecx
jne 0x49f607
lea eax, [0x58ab90]
mov dword [esp], eax
call sym.sync._Pool_.Get
mov eax, dword [esp + 4]
lea ecx, [0x4c3320]
cmp eax, ecx
jne 0x49fdf0
mov ebx, dword [0x5ad470]
mov ebp, dword [esp + 8]
test ebx, ebx
jne 0x49f5f1
mov ebx, dword [esp + 0x44]
jmp 0x49f602
call sym.runtime.gcWriteBarrier2
mov dword [edi], ebp
mov ebx, dword [esp + 0x44]
mov esi, dword [ebx + 8]
mov dword [edi + 4], esi
mov dword [ebx + 8], ebp
mov eax, ebx
mov ebx, dword [esp + 0x60]
test ebx, ebx
jg 0x49f616
mov ecx, 0xffffffff
jmp 0x49f618
mov ecx, ebx
test ecx, ecx
je 0x49f8d7
mov ebp, dword [eax + 0xc]
test ebp, ebp
jne 0x49f6ab
mov edx, dword [eax + 8]
mov ebp, dword [edx + 4]
test ebp, ebp
jbe 0x49fde7
mov dword [esp + 0x34], ecx
mov ecx, dword [esp + 0x5c]
mov ebx, dword [ecx]
mov ebx, dword [ebx + 0x10]
mov esi, dword [eax + 0x18]
mov edx, dword [edx]
mov dword [esp], ebx
mov dword [esp + 4], esi
mov dword [esp + 8], edx
mov dword [esp + 0xc], ebp
call sym.internal_syscall_windows.GetFileInformationByHandleEx
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x8c], eax
mov dword [esp + 0x90], ecx
mov eax, dword [esp + 0x8c]
test eax, eax
jne 0x49f6b2
mov ebx, dword [esp + 0x44]
mov ebp, dword [ebx + 0x18]
cmp ebp, 0xb
jne 0x49f695
mov dword [ebx + 0x18], 0xa
jmp 0x49f6a1
cmp ebp, 0xf
jne 0x49f6a1
mov dword [ebx + 0x18], 0xe
mov eax, ebx
mov ecx, dword [esp + 0x34]
mov ebx, dword [esp + 0x60]
xor edx, edx
jmp 0x49f99e
lea ecx, [0x501c80]
cmp eax, ecx
jne 0x49f6ec
mov ecx, dword [esp + 0x90]
mov dword [esp], eax
mov dword [esp + 4], ecx
lea eax, [0x5016c0]
mov dword [esp + 8], eax
call sym.runtime.ifaceeq
movzx eax, byte [esp + 0xc]
test al, al
jne 0x49f881
lea ecx, [0x501c80]
mov eax, dword [esp + 0x8c]
cmp eax, ecx
je 0x49f6fb
xor eax, eax
jmp 0x49f723
mov ecx, dword [esp + 0x90]
mov dword [esp], eax
mov dword [esp + 4], ecx
lea eax, [0x500cac]
mov dword [esp + 8], eax
call sym.runtime.ifaceeq
movzx eax, byte [esp + 0xc]
lea ecx, [0x501c80]
test al, al
je 0x49f74e
mov eax, dword [esp + 0x44]
mov eax, dword [eax + 0x18]
cmp eax, 0xb
jne 0x49f73e
mov eax, dword [esp + 0x60]
test eax, eax
jmp 0x49f8d9
cmp eax, 0xf
jne 0x49f74e
mov eax, dword [esp + 0x60]
test eax, eax
jmp 0x49f8d9
mov eax, dword [esp + 0x5c]
mov dword [esp], eax
call sym.os._File_.Stat
mov eax, dword [esp + 4]
test eax, eax
je 0x49f77b
mov ecx, dword [esp + 8]
mov eax, dword [eax + 0xc]
mov dword [esp], ecx
call eax
movzx eax, byte [esp + 4]
test al, al
je 0x49f800
lea eax, [0x4cd7e0]
mov dword [esp], eax
call sym.runtime.newobject
mov eax, dword [esp + 4]
mov dword [eax + 4], 0x1c
lea ecx, [0x4deb69]
mov dword [eax], ecx
mov ecx, dword [esp + 0x5c]
mov ecx, dword [ecx]
mov edx, dword [ecx + 0x130]
mov ecx, dword [ecx + 0x12c]
mov dword [eax + 0xc], edx
mov edx, dword [0x5ad470]
test edx, edx
je 0x49f7c2
call sym.runtime.gcWriteBarrier1
mov dword [edi], ecx
mov dword [eax + 8], ecx
mov ecx, dword [esp + 0x8c]
mov ebx, dword [esp + 0x90]
mov dword [eax + 0x10], ecx
mov ecx, dword [0x5ad470]
test ecx, ecx
je 0x49f7e7
call sym.runtime.gcWriteBarrier1
mov dword [edi], ebx
mov dword [eax + 0x14], ebx
lea ecx, [0x501c70]
mov dword [esp + 0x8c], ecx
mov dword [esp + 0x90], eax
jmp 0x49f870
lea eax, [0x4cd7e0]
mov dword [esp], eax
call sym.runtime.newobject
mov eax, dword [esp + 4]
mov dword [eax + 4], 7
lea ecx, [0x4d969f]
mov dword [eax], ecx
mov ecx, dword [esp + 0x5c]
mov ecx, dword [ecx]
mov edx, dword [ecx + 0x130]
mov ecx, dword [ecx + 0x12c]
mov dword [eax + 0xc], edx
mov edx, dword [0x5ad470]
test edx, edx
je 0x49f847
call sym.runtime.gcWriteBarrier1
mov dword [edi], ecx
mov dword [eax + 8], ecx
lea ecx, [0x501c80]
mov dword [eax + 0x10], ecx
lea ecx, [0x500cc0]
mov dword [eax + 0x14], ecx
lea ecx, [0x501c70]
mov dword [esp + 0x8c], ecx
mov dword [esp + 0x90], eax
mov byte [esp + 0x23], 0
mov edx, dword [esp + 0x54]
mov eax, dword [edx]
call eax
add esp, 0x58
ret
mov eax, dword [esp + 0x44]
mov ecx, dword [eax + 8]
lea edx, [0x58ab90]
mov dword [esp], edx
lea edx, [0x4c3320]
mov dword [esp + 4], edx
mov dword [esp + 8], ecx
call sym.sync._Pool_.Put
mov eax, dword [0x5ad470]
test eax, eax
jne 0x49f8ba
mov eax, dword [esp + 0x60]
test eax, eax
mov eax, dword [esp + 0x44]
jmp 0x49f8ce
mov eax, dword [esp + 0x44]
mov ecx, dword [eax + 8]
call sym.runtime.gcWriteBarrier1
mov dword [edi], ecx
mov ecx, dword [esp + 0x60]
test ecx, ecx
mov dword [eax + 8], 0
jmp 0x49f8d9
test ebx, ebx
jle 0x49f8ee
mov eax, dword [esp + 0x6c]
add eax, dword [esp + 0x78]
add eax, dword [esp + 0x84]
test eax, eax
je 0x49f915
mov dword [esp + 0x8c], 0
mov dword [esp + 0x90], 0
mov byte [esp + 0x23], 0
mov edx, dword [esp + 0x54]
mov eax, dword [edx]
call eax
add esp, 0x58
ret
mov eax, dword [0x58a7c0]
mov ecx, dword [0x58a7c4]
mov dword [esp + 0x68], 0
mov dword [esp + 0x6c], 0
mov dword [esp + 0x70], 0
mov dword [esp + 0x74], 0
mov dword [esp + 0x78], 0
mov dword [esp + 0x7c], 0
mov dword [esp + 0x80], 0
mov dword [esp + 0x84], 0
mov dword [esp + 0x88], 0
mov dword [esp + 0x8c], eax
mov dword [esp + 0x90], ecx
mov byte [esp + 0x23], 0
mov edx, dword [esp + 0x54]
mov eax, dword [edx]
call eax
add esp, 0x58
ret
xchg ebp, ebx
sete bl
xchg ebp, ebx
mov eax, esi
mov ebx, edx
mov edx, ebp
test ecx, ecx
je 0x49f618
test dl, dl
jne 0x49f618
mov edx, dword [eax + 8]
mov ebp, dword [edx + 4]
mov esi, dword [eax + 0xc]
cmp ebp, esi
jbe 0x49fdde
mov edx, dword [edx]
mov dword [esp + 0x48], edx
cmp dword [eax + 0x18], 0xa
jne 0x49fa07
mov ebp, dword [edx + esi + 0x3c]
shr ebp, 1
mov edi, dword [edx + esi]
lea edx, [edx + esi + 0x68]
test ebp, ebp
jl 0x49fdd9
mov dword [esp + 0x38], edx
mov eax, 2
mul ebp
jo 0x49fdd4
mov edx, ebx
mov ebx, dword [esp + 0x38]
neg ebx
cmp eax, ebx
ja 0x49fdd4
mov eax, dword [esp + 0x38]
jmp 0x49fa41
mov ebp, dword [edx + esi + 0x3c]
shr ebp, 1
mov edi, dword [edx + esi]
lea edx, [edx + esi + 0x44]
test ebp, ebp
jl 0x49fdcf
mov dword [esp + 0x38], edx
mov eax, 2
mul ebp
jo 0x49fdca
mov edx, ebx
mov ebx, dword [esp + 0x38]
neg ebx
cmp eax, ebx
ja 0x49fdca
mov eax, dword [esp + 0x38]
mov dword [esp + 0x30], esi
lea ebx, [edi + esi]
mov esi, dword [esp + 0x44]
mov dword [esi + 0xc], ebx
test edi, edi
jne 0x49fa5a
mov dword [esi + 0xc], 0
cmp ebp, 1
jne 0x49fa6c
cmp word [eax], 0x2e
jne 0x49fa6c
test edi, edi
jmp 0x49f991
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x24], edi
cmp ebp, 2
jne 0x49fa8d
cmp word [eax], 0x2e
jne 0x49fa8d
cmp word [eax + 2], 0x2e
jne 0x49fa8d
test edi, edi
jmp 0x49f991
mov dword [esp], eax
mov dword [esp + 4], ebp
mov dword [esp + 8], ebp
call sym.syscall.UTF16ToString
mov eax, dword [esp + 0xc]
mov dword [esp + 0x3c], eax
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x28], ecx
mov edx, dword [esp + 0x64]
test edx, edx
jne 0x49fb43
mov ebx, dword [esp + 0x70]
mov ebp, dword [esp + 0x6c]
inc ebp
mov esi, dword [esp + 0x68]
cmp ebx, ebp
jae 0x49fb0c
mov dword [esp], esi
mov dword [esp + 4], ebp
mov dword [esp + 8], ebx
mov dword [esp + 0xc], 1
lea eax, [0x4c6720]
mov dword [esp + 0x10], eax
call sym.runtime.growslice
mov esi, dword [esp + 0x14]
mov eax, dword [esp + 0x1c]
mov ebp, dword [esp + 0x18]
mov dword [esp + 0x70], eax
mov dword [esp + 0x68], esi
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x64]
mov dword [esp + 0x6c], ebp
lea ebx, [esi + ebp*8 - 4]
mov dword [ebx], ecx
mov ebx, dword [0x5ad470]
lea ebp, [esi + ebp*8 - 8]
test ebx, ebx
je 0x49fb31
call sym.runtime.gcWriteBarrier2
mov dword [edi], eax
mov ebx, dword [ebp]
mov dword [edi + 4], ebx
mov dword [ebp], eax
mov ecx, dword [esp + 0x44]
lea ebx, [0x501da0]
jmp 0x49fdb2
mov ebx, dword [esp + 0x44]
cmp dword [ebx + 0x18], 0xa
jne 0x49fbc4
lea eax, [0x4d4020]
mov dword [esp], eax
call sym.runtime.newobject
mov eax, dword [esp + 4]
mov ecx, dword [esp + 0x30]
mov edx, dword [esp + 0x48]
mov ebx, dword [edx + ecx + 0x38]
mov dword [eax + 8], ebx
mov ebx, dword [edx + ecx + 8]
mov ebp, dword [edx + ecx + 0xc]
mov dword [eax + 0xc], ebx
mov dword [eax + 0x10], ebp
mov ebx, dword [edx + ecx + 0x10]
mov ebp, dword [edx + ecx + 0x14]
mov dword [eax + 0x14], ebx
mov dword [eax + 0x18], ebp
mov ebx, dword [edx + ecx + 0x18]
mov ebp, dword [edx + ecx + 0x1c]
mov dword [eax + 0x1c], ebx
mov dword [eax + 0x20], ebp
mov ebx, dword [edx + ecx + 0x2c]
mov dword [eax + 0x24], ebx
mov ebx, dword [edx + ecx + 0x28]
mov dword [eax + 0x28], ebx
mov ebx, dword [edx + ecx + 0x40]
mov dword [eax + 0x2c], ebx
mov ebx, dword [edx + ecx + 0x64]
mov dword [eax + 0x48], ebx
mov ecx, dword [edx + ecx + 0x60]
mov dword [eax + 0x4c], ecx
mov ecx, dword [esp + 0x44]
jmp 0x49fc51
nop
lea eax, [0x4d4020]
mov dword [esp], eax
call sym.runtime.newobject
mov eax, dword [esp + 4]
mov ecx, dword [esp + 0x30]
mov edx, dword [esp + 0x48]
mov ebx, dword [edx + ecx + 0x38]
mov dword [eax + 8], ebx
mov ebx, dword [edx + ecx + 8]
mov ebp, dword [edx + ecx + 0xc]
mov dword [eax + 0xc], ebx
mov dword [eax + 0x10], ebp
mov ebx, dword [edx + ecx + 0x10]
mov ebp, dword [edx + ecx + 0x14]
mov dword [eax + 0x14], ebx
mov dword [eax + 0x18], ebp
mov ebx, dword [edx + ecx + 0x18]
mov ebp, dword [edx + ecx + 0x1c]
mov dword [eax + 0x1c], ebx
mov dword [eax + 0x20], ebp
mov ebx, dword [edx + ecx + 0x2c]
mov dword [eax + 0x24], ebx
mov ebx, dword [edx + ecx + 0x28]
mov dword [eax + 0x28], ebx
mov ecx, dword [edx + ecx + 0x40]
mov dword [eax + 0x2c], ecx
mov ecx, dword [esp + 0x44]
mov edx, dword [ecx + 0x20]
test edx, edx
je 0x49fc51
mov byte [eax + 0x50], 1
mov ebx, dword [ecx + 0x20]
mov ebp, dword [ecx + 0x1c]
mov dword [eax + 0x40], ebx
mov ebx, dword [0x5ad470]
test ebx, ebx
je 0x49fc4e
call sym.runtime.gcWriteBarrier1
mov dword [edi], ebp
mov dword [eax + 0x3c], ebp
mov ebx, dword [esp + 0x28]
mov dword [eax + 4], ebx
mov ebx, dword [0x5ad470]
test ebx, ebx
jne 0x49fc68
mov ebx, dword [esp + 0x3c]
jmp 0x49fc78
call sym.runtime.gcWriteBarrier2
mov ebx, dword [esp + 0x3c]
mov dword [edi], ebx
mov ebp, dword [eax]
mov dword [edi + 4], ebp
mov dword [esp + 0x40], eax
mov dword [eax], ebx
mov ebx, dword [ecx + 0x14]
mov dword [eax + 0x44], ebx
mov ebx, dword [esp + 0x64]
cmp ebx, 1
jne 0x49fd18
mov ebp, dword [esp + 0x7c]
mov esi, dword [esp + 0x78]
inc esi
mov edi, dword [esp + 0x74]
cmp ebp, esi
jae 0x49fce4
mov dword [esp], edi
mov dword [esp + 4], esi
mov dword [esp + 8], ebp
mov dword [esp + 0xc], 1
lea eax, [0x4cc2c0]
mov dword [esp + 0x10], eax
call sym.runtime.growslice
mov edi, dword [esp + 0x14]
mov eax, dword [esp + 0x1c]
mov esi, dword [esp + 0x18]
mov dword [esp + 0x7c], eax
mov dword [esp + 0x74], edi
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x44]
mov ebx, dword [esp + 0x64]
mov dword [esp + 0x78], esi
lea ebp, [edi + esi*8 - 8]
mov edx, ebx
lea ebx, [0x501da0]
mov dword [ebp], ebx
mov ebp, dword [0x5ad470]
lea esi, [edi + esi*8 - 4]
test ebp, ebp
je 0x49fd11
call sym.runtime.gcWriteBarrier2
mov dword [edi], eax
mov ebp, dword [esi]
mov dword [edi + 4], ebp
mov dword [esi], eax
jmp 0x49fdb2
mov ebp, dword [esp + 0x88]
mov esi, dword [esp + 0x84]
inc esi
mov edi, dword [esp + 0x80]
cmp ebp, esi
jae 0x49fd7a
mov dword [esp], edi
mov dword [esp + 4], esi
mov dword [esp + 8], ebp
mov dword [esp + 0xc], 1
lea eax, [0x4cece0]
mov dword [esp + 0x10], eax
call sym.runtime.growslice
mov edi, dword [esp + 0x14]
mov eax, dword [esp + 0x1c]
mov esi, dword [esp + 0x18]
mov dword [esp + 0x88], eax
mov dword [esp + 0x80], edi
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x44]
mov ebx, dword [esp + 0x64]
mov dword [esp + 0x84], esi
lea ebp, [edi + esi*8 - 8]
mov edx, ebx
lea ebx, [0x501e1c]
mov dword [ebp], ebx
mov ebp, dword [0x5ad470]
lea esi, [edi + esi*8 - 4]
test ebp, ebp
je 0x49fdaa
call sym.runtime.gcWriteBarrier2
mov dword [edi], eax
mov ebp, dword [esi]
mov dword [edi + 4], ebp
mov dword [esi], eax
lea ebx, [0x501da0]
mov ebp, dword [esp + 0x2c]
dec ebp
mov esi, dword [esp + 0x24]
test esi, esi
mov edx, dword [esp + 0x60]
mov esi, ecx
mov ecx, ebp
jmp 0x49f991
call sym.runtime.panicunsafeslicelen
call sym.runtime.panicunsafeslicelen
call sym.runtime.panicunsafeslicelen
call sym.runtime.panicunsafeslicelen
mov eax, esi
mov ecx, ebp
call sym.runtime.panicIndex
xor eax, eax
mov ecx, eax
call sym.runtime.panicIndex
mov dword [esp], eax
mov dword [esp + 4], ecx
lea eax, [0x4c7160]
mov dword [esp + 8], eax
call sym.runtime.panicdottypeE
nop
call sym.runtime.deferreturn
add esp, 0x58
ret
call sym.runtime.morestack_noctxt
jmp sym.os._File_.readdir