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

Disassembly:
mov ecx, dword [0x664c04]
mov ecx, dword fs:[ecx]
mov ecx, dword [ecx]
cmp esp, dword [ecx + 8]
jbe 0x509cb3
sub esp, 0x6c
mov edx, dword [esp + 0x74]
mov ebx, dword [edx + 0x30]
mov eax, dword [edx + 0xc]
mov ecx, dword [ebx + 8]
cmp ecx, eax
jbe 0x509cad
mov ecx, dword [esp + 0x70]
mov edx, dword [ecx + 0x10]
mov ebx, dword [ebx + 4]
lea eax, [ebx + eax*8]
mov ebx, dword [eax]
mov eax, dword [eax + 4]
lea ebp, [0x51d260]
mov dword [esp], ebp
mov dword [esp + 4], edx
mov dword [esp + 8], ebx
mov dword [esp + 0xc], eax
call sym.runtime.mapaccess2_faststr
movzx eax, byte [esp + 0x14]
mov ecx, dword [esp + 0x10]
mov ecx, dword [ecx]
test al, al
jne 0x509c64
mov eax, dword [esp + 0x70]
mov ecx, dword [eax + 0x18]
mov dword [esp + 0x2c], ecx
lea edx, [0x5272e0]
mov dword [esp], edx
call sym.runtime.newobject
mov eax, dword [esp + 4]
mov dword [esp + 0x30], eax
mov ecx, dword [esp + 0x2c]
mov dword [eax], ecx
mov ecx, dword [esp + 0x70]
mov edx, dword [ecx + 0x1c]
mov ebx, dword [ecx + 0x18]
inc ebx
mov ebp, dword [ecx + 0x14]
cmp edx, ebx
jae 0x50987f
mov dword [esp], ebp
mov dword [esp + 4], ebx
mov dword [esp + 8], edx
mov dword [esp + 0xc], 1
lea eax, [0x514780]
mov dword [esp + 0x10], eax
call sym.runtime.growslice
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x18]
mov ebx, dword [esp + 0x70]
mov dword [ebx + 0x1c], eax
mov eax, dword [0x664ca8]
test eax, eax
je 0x509870
call sym.runtime.gcWriteBarrier2
mov dword [edi], ecx
mov ebp, dword [ebx + 0x14]
mov dword [edi + 4], ebp
mov dword [ebx + 0x14], ecx
mov eax, dword [esp + 0x30]
mov ebx, edx
mov ebp, ecx
mov ecx, dword [esp + 0x70]
mov dword [ecx + 0x18], ebx
mov edx, dword [0x664ca8]
test edx, edx
je 0x50989a
call sym.runtime.gcWriteBarrier2
mov dword [edi], eax
mov edx, dword [ebp + ebx*4 - 4]
mov dword [edi + 4], edx
mov dword [ebp + ebx*4 - 4], eax
mov edx, dword [esp + 0x74]
mov ebx, dword [edx + 0x30]
mov ebp, dword [edx + 0xc]
mov esi, dword [ebx + 8]
cmp esi, ebp
jbe 0x509ca4
mov eax, dword [ecx + 0x10]
mov edx, dword [ebx + 4]
lea edx, [edx + ebp*8]
mov ebx, dword [edx]
mov edx, dword [edx + 4]
lea ebp, [0x51d260]
mov dword [esp], ebp
mov dword [esp + 4], eax
mov dword [esp + 8], ebx
mov dword [esp + 0xc], edx
call sym.runtime.mapassign_faststr
mov eax, dword [esp + 0x10]
test byte [eax], al
mov ecx, dword [0x664ca8]
test ecx, ecx
jne 0x5098f1
mov ecx, dword [esp + 0x30]
jmp 0x509901
call sym.runtime.gcWriteBarrier2
mov ecx, dword [esp + 0x30]
mov dword [edi], ecx
mov edx, dword [eax]
mov dword [edi + 4], edx
mov dword [eax], ecx
movzx eax, byte [esp + 0x7c]
test al, al
je 0x509b1b
lea eax, [0x521960]
mov dword [esp], eax
call sym.runtime.newobject
mov eax, dword [0x664ca8]
mov ecx, dword [esp + 4]
test eax, eax
jne 0x509932
mov edx, dword [esp + 0x30]
jmp 0x509943
call sym.runtime.gcWriteBarrier2
mov dword [edi], ecx
mov edx, dword [esp + 0x30]
mov ebx, dword [edx + 0x14]
mov dword [edi + 4], ebx
mov dword [edx + 0x14], ecx
mov ebx, dword [esp + 0x74]
mov ebp, dword [ebx + 0x30]
mov eax, dword [ebx + 0xc]
mov ecx, dword [ebp + 8]
cmp ecx, eax
jbe 0x509c9f
mov esi, dword [ebx + 8]
mov ebp, dword [ebp + 4]
lea edi, [ebp + eax*8]
cmp ecx, esi
jbe 0x509c98
mov eax, dword [ebx + 0x10]
lea esi, [ebp + esi*8]
cmp ecx, eax
jbe 0x509c93
mov ecx, dword [edi]
mov edx, dword [edi + 4]
mov ebx, dword [esi]
mov esi, dword [esi + 4]
lea eax, [ebp + eax*8]
mov ebp, dword [eax]
mov eax, dword [eax + 4]
mov dword [esp], ecx
mov dword [esp + 4], edx
mov dword [esp + 8], ebx
mov dword [esp + 0xc], esi
mov dword [esp + 0x10], ebp
mov dword [esp + 0x14], eax
call sym.internal_coverage_encodemeta.NewCoverageMetaDataBuilder
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x38], ecx
mov edx, dword [esp + 0x20]
test eax, eax
je 0x509a0e
mov dword [esp + 0x64], 0
mov dword [esp + 0x68], 0
je 0x5099d4
mov eax, dword [eax + 4]
mov dword [esp + 0x64], eax
mov dword [esp + 0x68], edx
lea eax, [0x54029b]
mov dword [esp], eax
mov dword [esp + 4], 0x2a
lea eax, [esp + 0x64]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 1
mov dword [esp + 0x10], 1
call sym.main.fatal
mov ecx, dword [esp + 0x38]
mov edx, dword [esp + 0x74]
mov ebx, dword [edx + 0x30]
mov eax, dword [edx + 0xc]
mov edx, dword [ebx + 8]
cmp edx, eax
jbe 0x509c8c
mov ecx, dword [ebx + 4]
lea eax, [ecx + eax*8]
mov ecx, dword [eax]
mov eax, dword [eax + 4]
mov dword [esp + 0x54], 0
mov dword [esp + 0x58], 0
mov dword [esp + 0x5c], 0
mov dword [esp + 0x60], 0
mov dword [esp], ecx
mov dword [esp + 4], eax
call sym.runtime.convTstring
mov eax, dword [esp + 8]
lea ecx, [0x51bee0]
mov dword [esp + 0x54], ecx
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x78]
mov dword [esp], eax
call sym.runtime.convT32
mov eax, dword [esp + 4]
lea ecx, [0x51c060]
mov dword [esp + 0x5c], ecx
mov dword [esp + 0x60], eax
mov dword [esp], 2
lea eax, [0x5402c5]
mov dword [esp + 4], eax
mov dword [esp + 8], 0x2a
lea eax, [esp + 0x54]
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], 2
mov dword [esp + 0x14], 2
call sym.main.dbgtrace
mov eax, dword [esp + 0x30]
mov ecx, dword [eax + 0x14]
test byte [ecx], al
mov edx, dword [0x664ca8]
test edx, edx
jne 0x509ad9
mov edx, dword [esp + 0x38]
jmp 0x509ae9
call sym.runtime.gcWriteBarrier2
mov edx, dword [esp + 0x38]
mov dword [edi], edx
mov ebx, dword [ecx]
mov dword [edi + 4], ebx
mov dword [ecx], edx
call sym.runtime.makemap_small
mov eax, dword [esp + 0x30]
mov ecx, dword [eax + 0x14]
test byte [ecx], al
mov edx, dword [0x664ca8]
mov ebx, dword [esp]
test edx, edx
je 0x509b13
call sym.runtime.gcWriteBarrier2
mov dword [edi], ebx
mov edx, dword [ecx + 4]
mov dword [edi + 4], edx
mov dword [ecx + 4], ebx
jmp 0x509c36
mov eax, dword [esp + 0x70]
mov ecx, dword [eax + 0x24]
mov ecx, dword [ecx + 0xc]
mov dword [esp], ecx
mov ecx, dword [esp + 0x78]
mov dword [esp + 4], ecx
mov dword [esp + 8], 0
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], 0
call sym.internal_coverage_decodemeta._CoverageMetaFileReader_.GetPackagePayload
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x20]
mov ebx, dword [esp + 0x14]
mov ebp, dword [esp + 0x24]
mov esi, dword [esp + 0x30]
mov dword [esi + 0xc], eax
mov dword [esi + 0x10], ecx
mov eax, dword [0x664ca8]
test eax, eax
je 0x509b82
call sym.runtime.gcWriteBarrier2
mov dword [edi], ebx
mov ecx, dword [esi + 8]
mov dword [edi + 4], ecx
mov dword [esi + 8], ebx
test edx, edx
je 0x509c36
mov dword [esp + 0x34], ebp
mov dword [esp + 0x28], edx
lea edi, [esp + 0x3c]
xor eax, eax
call fcn.0046a5ea
mov ecx, dword [esp + 0x78]
mov dword [esp], ecx
call sym.runtime.convT32
mov ecx, dword [esp + 4]
lea edx, [0x51c060]
mov dword [esp + 0x3c], edx
mov dword [esp + 0x40], ecx
mov ecx, dword [esp + 0x70]
mov edx, dword [ecx + 0x24]
mov ebx, dword [edx + 4]
mov edx, dword [edx + 8]
mov dword [esp], ebx
mov dword [esp + 4], edx
call sym.runtime.convTstring
mov ecx, dword [esp + 8]
lea edx, [0x51bee0]
mov dword [esp + 0x44], edx
mov dword [esp + 0x48], ecx
mov ecx, dword [esp + 0x28]
test ecx, ecx
je 0x509bf6
mov edx, dword [ecx + 4]
jmp 0x509bf8
mov edx, ecx
mov dword [esp + 0x4c], edx
mov eax, dword [esp + 0x34]
mov dword [esp + 0x50], eax
lea eax, [0x5411ee]
mov dword [esp], eax
mov dword [esp + 4], 0x2f
lea eax, [esp + 0x3c]
mov dword [esp + 8], eax
mov dword [esp + 0xc], 3
mov dword [esp + 0x10], 3
call sym.main.fatal
mov esi, dword [esp + 0x30]
call sym.runtime.makemap_small
mov eax, dword [0x664ca8]
mov ecx, dword [esp]
test eax, eax
jne 0x509c4e
mov eax, dword [esp + 0x30]
jmp 0x509c5f
call sym.runtime.gcWriteBarrier2
mov dword [edi], ecx
mov eax, dword [esp + 0x30]
mov edx, dword [eax + 4]
mov dword [edi + 4], edx
mov dword [eax + 4], ecx
mov ecx, eax
mov eax, dword [0x664ca8]
test eax, eax
jne 0x509c74
mov eax, dword [esp + 0x70]
jmp 0x509c85
call sym.runtime.gcWriteBarrier2
mov dword [edi], ecx
mov eax, dword [esp + 0x70]
mov edx, dword [eax + 0x20]
mov dword [edi + 4], edx
mov dword [eax + 0x20], ecx
add esp, 0x6c
ret
mov ecx, edx
call sym.runtime.panicIndexU
call sym.runtime.panicIndexU
mov eax, esi
call sym.runtime.panicIndexU
call sym.runtime.panicIndexU
mov eax, ebp
mov ecx, esi
call sym.runtime.panicIndexU
call sym.runtime.panicIndexU
nop
call sym.runtime.morestack_noctxt
jmp sym.main._metaMerge_.visitPackage