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

Disassembly:
mov ecx, dword [0x71d934]
mov ecx, dword fs:[ecx]
mov ecx, dword [ecx]
lea eax, [esp - 0x68]
cmp eax, dword [ecx + 8]
jbe 0x50a127
sub esp, 0xe8
mov eax, dword [esp + 0xec]
mov dword [esp], eax
mov eax, dword [esp + 0xf0]
mov dword [esp + 4], eax
mov byte [esp + 8], 0
call sym.go_build_constraint.pushNot
mov dword [esp], 0
mov dword [esp + 4], 0
mov dword [esp + 8], 0
call sym.go_build_constraint.appendSplitAnd
mov eax, dword [esp + 0x14]
mov dword [esp + 0xe4], eax
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x94], ecx
xor edx, edx
xor ebx, ebx
xor ebp, ebp
xor esi, esi
jmp 0x50991d
mov dword [eax + ecx*4 - 0xc], ebp
mov ecx, edi
mov edi, dword [esp + 0x90]
inc edi
mov ebx, edx
mov ebp, eax
mov esi, ecx
mov eax, dword [esp + 0xe4]
mov ecx, dword [esp + 0x94]
mov edx, edi
cmp edx, ecx
jge 0x509a18
mov dword [esp + 0x90], edx
mov dword [esp + 0x28], esi
mov dword [esp + 0x24], ebx
mov dword [esp + 0x98], ebp
lea ecx, [eax + edx*8]
mov ebx, dword [ecx]
mov ecx, dword [ecx + 4]
mov dword [esp], 0
mov dword [esp + 4], 0
mov dword [esp + 8], 0
mov dword [esp + 0xc], ebx
mov dword [esp + 0x10], ecx
call sym.go_build_constraint.appendSplitOr
mov eax, dword [esp + 0x14]
mov dword [esp + 0xe0], eax
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x8c], ecx
xor edx, edx
xor ebx, ebx
xor ebp, ebp
xor esi, esi
jmp 0x509eec
mov edx, dword [esp + 0x24]
inc edx
mov edi, dword [esp + 0x28]
cmp edi, edx
jb 0x5099a0
mov eax, dword [esp + 0x98]
jmp 0x5099e8
mov eax, dword [esp + 0x98]
mov dword [esp], eax
mov dword [esp + 4], edx
mov dword [esp + 8], edi
mov dword [esp + 0xc], 1
lea eax, [0x58ce80]
mov dword [esp + 0x10], eax
call sym.runtime.growslice
mov ebp, dword [esp + 0x14]
mov edx, dword [esp + 0x18]
mov esi, dword [esp + 0x1c]
mov ebx, dword [esp + 0x5c]
mov eax, ebp
mov edi, esi
mov ebp, dword [esp + 0xb8]
mov esi, dword [esp + 0x58]
lea ecx, [edx + edx*2]
mov dword [eax + ecx*4 - 8], esi
mov dword [eax + ecx*4 - 4], ebx
mov ebx, dword [0x71da68]
test ebx, ebx
je 0x5098f9
mov ebx, edi
call sym.runtime.gcWriteBarrier2
mov dword [edi], ebp
mov esi, dword [eax + ecx*4 - 0xc]
mov dword [edi + 4], esi
mov edi, ebx
jmp 0x5098f9
mov edx, ebp
mov eax, ebx
mov ecx, ebp
xor esi, esi
jmp 0x509a2a
add edi, 0xc
dec ebx
mov esi, ebp
mov ebp, edi
test ebx, ebx
jle 0x509a3b
mov edi, ebp
mov ebp, dword [ebp + 4]
cmp esi, ebp
jl 0x509a22
mov ebp, esi
jmp 0x509a22
cmp esi, 1
jne 0x509bd3
xor edx, edx
xor ebx, ebx
xor ebp, ebp
jmp 0x509ab3
mov dword [esp + 0x34], ebx
mov dword [esp + 0x2c], eax
mov dword [esp + 0x9c], ebp
lea ecx, [0x59c860]
mov dword [esp], ecx
sub eax, edx
sub ebx, edx
neg ebx
shl edx, 3
sar ebx, 0x1f
and edx, ebx
add edx, ebp
mov dword [esp + 4], edx
mov dword [esp + 8], eax
mov dword [esp + 0xc], esi
mov dword [esp + 0x10], edi
call sym.runtime.typedslicecopy
mov eax, dword [esp + 0xdc]
lea ecx, [eax + 0xc]
mov eax, dword [esp + 0x94]
dec eax
mov edx, dword [esp + 0x9c]
mov ebx, dword [esp + 0x34]
mov ebp, dword [esp + 0x2c]
mov edx, ebp
mov ebp, dword [esp + 0x9c]
mov dword [esp + 0x2c], edx
test eax, eax
jle 0x509b35
mov esi, dword [ecx + 4]
test esi, esi
jbe 0x509ebf
mov dword [esp + 0x94], eax
mov dword [esp + 0xdc], ecx
mov esi, dword [ecx]
mov edi, dword [esi + 4]
lea eax, [edx + edi]
mov esi, dword [esi]
cmp ebx, eax
jae 0x509a4c
mov dword [esp + 0xe4], esi
mov dword [esp + 0x90], edi
mov dword [esp], ebp
mov dword [esp + 4], eax
mov dword [esp + 8], ebx
mov dword [esp + 0xc], edi
lea eax, [0x59c860]
mov dword [esp + 0x10], eax
call sym.runtime.growslice
mov ebp, dword [esp + 0x14]
mov eax, dword [esp + 0x18]
mov ebx, dword [esp + 0x1c]
mov edx, dword [esp + 0x2c]
mov esi, dword [esp + 0xe4]
mov edi, dword [esp + 0x90]
jmp 0x509a4c
mov dword [esp + 0x88], ebx
mov dword [esp + 0xd8], ebp
mov dword [esp + 0xc0], 0
mov dword [esp + 0xc4], 0
mov dword [esp + 0xc8], 0
lea eax, [0x590f40]
mov dword [esp], eax
call sym.runtime.newobject
mov eax, dword [esp + 4]
mov ecx, dword [esp + 0x2c]
mov dword [eax + 4], ecx
mov ecx, dword [esp + 0x88]
mov dword [eax + 8], ecx
mov ecx, dword [0x71da68]
test ecx, ecx
jne 0x509b9a
mov ecx, dword [esp + 0xd8]
jmp 0x509ba8
call sym.runtime.gcWriteBarrier1
mov ecx, dword [esp + 0xd8]
mov dword [edi], ecx
mov dword [eax], ecx
mov dword [esp + 0xc4], 1
mov dword [esp + 0xc8], 1
mov dword [esp + 0xc0], eax
lea edx, [esp + 0xc0]
mov eax, 1
xor ecx, ecx
xor ebx, ebx
xor ebp, ebp
jmp 0x509be8
mov esi, dword [esp + 0xb0]
mov dword [edi], esi
add edx, 0xc
dec eax
test eax, eax
jle 0x509cca
mov dword [esp + 0xac], ebx
mov dword [esp + 0x48], ecx
mov dword [esp + 0x44], ebp
mov dword [esp + 0x94], eax
mov dword [esp + 0xdc], edx
mov esi, dword [edx]
mov edi, dword [edx + 4]
mov dword [esp + 0x6c], eax
lea eax, [0x5ba23b]
mov dword [esp + 0xb0], eax
mov eax, 9
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x6c]
jmp 0x509d84
inc ebp
cmp ecx, ebp
jae 0x509c76
mov dword [esp], ebx
mov dword [esp + 4], ebp
mov dword [esp + 8], ecx
mov dword [esp + 0xc], 1
lea eax, [0x591ae0]
mov dword [esp + 0x10], eax
call sym.runtime.growslice
mov ebx, dword [esp + 0x14]
mov ebp, dword [esp + 0x18]
mov ecx, dword [esp + 0x1c]
mov eax, dword [esp + 0x94]
mov edx, dword [esp + 0xdc]
lea esi, [ebx + ebp*8 - 4]
mov edi, dword [esp + 0x4c]
mov dword [esi], edi
mov esi, dword [0x71da68]
lea edi, [ebx + ebp*8 - 8]
test esi, esi
je 0x509bdb
mov dword [esp + 0xd0], ebx
mov dword [esp + 0x84], ecx
mov esi, edi
call sym.runtime.gcWriteBarrier2
mov ecx, dword [esp + 0xb0]
mov dword [edi], ecx
mov ebx, dword [esi]
mov dword [edi + 4], ebx
mov ecx, dword [esp + 0x84]
mov ebx, dword [esp + 0xd0]
mov edi, esi
jmp 0x509bdb
mov dword [esp + 0xf4], ebx
mov dword [esp + 0xf8], ebp
mov dword [esp + 0xfc], ecx
mov dword [esp + 0x100], 0
mov dword [esp + 0x104], 0
add esp, 0xe8
ret
mov dword [esp], 0
mov eax, dword [esp + 0xb0]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x4c]
mov dword [esp + 8], eax
lea eax, [0x5fa09c]
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], 1
mov ecx, dword [esp + 0xb4]
mov dword [esp + 0x14], ecx
mov ecx, dword [esp + 0x54]
mov dword [esp + 0x18], ecx
call sym.runtime.concatstring3
mov eax, dword [esp + 0xd4]
lea esi, [eax + 0xc]
mov eax, dword [esp + 0x90]
lea edi, [eax - 1]
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0xdc]
mov ebx, dword [esp + 0xac]
mov ebp, dword [esp + 0x44]
mov dword [esp + 0xb0], eax
mov dword [esp + 0x4c], ecx
mov eax, dword [esp + 0x94]
mov ecx, dword [esp + 0x48]
test edi, edi
jle 0x509c35
mov dword [esp + 0x90], edi
mov dword [esp + 0xd4], esi
mov eax, dword [esi]
mov dword [esp + 0xbc], eax
mov edx, dword [esi + 4]
mov dword [esp + 0x60], edx
mov dword [esp + 0x64], eax
xor eax, eax
mov dword [esp + 0x50], eax
xor eax, eax
mov dword [esp + 0x54], eax
xor eax, eax
mov dword [esp + 0xb4], eax
mov eax, dword [esp + 0x64]
jmp 0x509e44
mov eax, dword [ebp + 0x10]
mov dword [esp], ecx
call eax
mov eax, dword [esp + 4]
mov ecx, dword [esp + 8]
mov dword [esp], 0
mov edx, dword [esp + 0xb4]
mov dword [esp + 4], edx
mov edx, dword [esp + 0x54]
mov dword [esp + 8], edx
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], ecx
call sym.runtime.concatstring2
mov eax, dword [esp + 0x50]
inc eax
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0x18]
mov ebx, dword [esp + 0xac]
mov ebp, dword [esp + 0x44]
mov esi, dword [esp + 0xd4]
mov edi, dword [esp + 0x90]
mov dword [esp + 0x50], eax
mov dword [esp + 0x54], edx
mov dword [esp + 0xb4], ecx
mov eax, dword [esp + 0xbc]
mov ecx, dword [esp + 0x48]
mov edx, dword [esp + 0x60]
mov ebx, dword [esp + 0x50]
cmp ebx, edx
jge 0x509cfc
lea ecx, [eax + ebx*8]
mov ebp, dword [ecx]
mov ecx, dword [ecx + 4]
test ebx, ebx
jle 0x509dc9
mov dword [esp + 0x3c], ebp
mov dword [esp + 0xa4], ecx
mov dword [esp], 0
mov eax, dword [esp + 0xb4]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x54]
mov dword [esp + 8], eax
lea eax, [0x5b89e1]
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], 1
call sym.runtime.concatstring2
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x18]
mov ebp, dword [esp + 0x3c]
mov dword [esp + 0x54], ecx
mov dword [esp + 0xb4], eax
mov ecx, dword [esp + 0xa4]
jmp 0x509dc9
xor eax, eax
mov ecx, eax
call sym.runtime.panicIndex
mov dword [eax + ecx*4 - 0xc], ebp
mov ecx, edi
mov edi, dword [esp + 0x80]
inc edi
mov ebx, ecx
mov ebp, eax
mov esi, edx
mov eax, dword [esp + 0xe0]
mov ecx, dword [esp + 0x8c]
mov edx, edi
mov dword [esp + 0x58], esi
mov dword [esp + 0xb8], ebp
mov dword [esp + 0x5c], ebx
cmp edx, ecx
jge 0x50998a
mov dword [esp + 0x80], edx
lea ecx, [eax + edx*8]
mov ebx, dword [ecx]
mov ecx, dword [ecx + 4]
mov dword [esp], 0
mov dword [esp + 4], 0
mov dword [esp + 8], 0
mov dword [esp + 0xc], ebx
mov dword [esp + 0x10], ecx
call sym.go_build_constraint.appendSplitAnd
mov eax, dword [esp + 0x14]
mov dword [esp + 0xcc], eax
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x7c], ecx
xor edx, edx
xor ebx, ebx
xor ebp, ebp
xor esi, esi
jmp 0x50a003
mov edx, dword [esp + 0x58]
inc edx
mov edi, dword [esp + 0x5c]
cmp edi, edx
jb 0x509f6c
mov eax, dword [esp + 0xb8]
jmp 0x509fc3
mov dword [esp + 0x74], ebx
mov dword [esp + 0x30], esi
mov dword [esp + 0xa0], ebp
mov eax, dword [esp + 0xb8]
mov dword [esp], eax
mov dword [esp + 4], edx
mov dword [esp + 8], edi
mov dword [esp + 0xc], 1
lea eax, [0x58ce40]
mov dword [esp + 0x10], eax
call sym.runtime.growslice
mov ebp, dword [esp + 0x14]
mov edx, dword [esp + 0x18]
mov ebx, dword [esp + 0x1c]
mov esi, dword [esp + 0x30]
mov eax, ebp
mov edi, ebx
mov ebx, dword [esp + 0x74]
mov ebp, dword [esp + 0xa0]
lea ecx, [edx + edx*2]
mov dword [eax + ecx*4 - 8], esi
mov dword [eax + ecx*4 - 4], ebx
mov ebx, dword [0x71da68]
test ebx, ebx
je 0x509ec8
mov ebx, edi
call sym.runtime.gcWriteBarrier2
mov dword [edi], ebp
mov esi, dword [eax + ecx*4 - 0xc]
mov dword [edi + 4], esi
mov edi, ebx
jmp 0x509ec8
mov dword [eax], edi
lea edx, [ecx + 1]
mov ecx, dword [esp + 0x7c]
mov eax, dword [esp + 0xcc]
cmp edx, ecx
jge 0x509f56
lea edi, [eax + edx*8]
mov eax, dword [edi]
mov edi, dword [edi + 4]
test eax, eax
je 0x50a0e5
mov ecx, dword [eax + 8]
cmp ecx, 0xaba37cc4
jne 0x50a037
mov ecx, edx
lea edx, [0x5fbd78]
cmp eax, edx
je 0x50a059
jmp 0x50a0e5
cmp ecx, 0xf3a31150
jne 0x50a0e5
mov ecx, edx
lea edx, [0x5fbd60]
cmp eax, edx
jne 0x50a0e5
lea edx, [0x5fbd78]
inc esi
cmp ebx, esi
jae 0x50a0b0
mov dword [esp + 0x78], ecx
mov dword [esp + 0x40], eax
mov dword [esp + 0xa8], edi
mov dword [esp], ebp
mov dword [esp + 4], esi
mov dword [esp + 8], ebx
mov dword [esp + 0xc], 1
lea eax, [0x59c860]
mov dword [esp + 0x10], eax
call sym.runtime.growslice
mov ebp, dword [esp + 0x14]
mov esi, dword [esp + 0x18]
mov ebx, dword [esp + 0x1c]
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x78]
lea edx, [0x5fbd78]
mov edi, dword [esp + 0xa8]
lea edx, [ebp + esi*8 - 8]
mov dword [edx], eax
mov edx, dword [0x71da68]
lea eax, [ebp + esi*8 - 4]
test edx, edx
je 0x509ff3
mov dword [esp + 0x38], ebx
mov edx, edi
call sym.runtime.gcWriteBarrier2
mov dword [edi], edx
mov ebx, dword [eax]
mov dword [edi + 4], ebx
mov ebx, dword [esp + 0x38]
mov edi, edx
jmp 0x509ff3
mov eax, dword [0x6f3c58]
mov ecx, dword [0x6f3c5c]
mov dword [esp + 0xf4], 0
mov dword [esp + 0xf8], 0
mov dword [esp + 0xfc], 0
mov dword [esp + 0x100], eax
mov dword [esp + 0x104], ecx
add esp, 0xe8
ret
call sym.runtime.morestack_noctxt
jmp sym.go_build_constraint.PlusBuildLines