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

Disassembly:
mov ecx, dword fs:[0x14]
mov ecx, dword [ecx]
cmp esp, dword [ecx + 8]
jbe 0x4ac22f
sub esp, 0x6c
xor eax, eax
lea edi, [esp + 0x4c]
call fcn.0044f088
mov eax, dword [esp + 0x70]
mov ecx, dword [esp + 0x74]
cmp eax, ecx
je 0x4ac226
movzx edx, byte [eax + 0xf]
and edx, 0x1f
movzx ebx, byte [ecx + 0xf]
and ebx, 0x1f
cmp edx, ebx
jne 0x4ac21d
lea ebx, [edx - 1]
cmp ebx, 0xf
jbe 0x4ac214
cmp edx, 0x18
je 0x4ac214
cmp edx, 0x1a
je 0x4ac214
cmp edx, 0x13
ja 0x4abd7c
cmp edx, 0x11
je 0x4abcee
cmp edx, 0x12
je 0x4abbdb
cmp edx, 0x13
jne 0x4abbd2
movzx edx, word [eax + 0x22]
movzx ebx, word [ecx + 0x22]
cmp dx, bx
jne 0x4abbc9
movzx edx, word [eax + 0x20]
movzx ebx, word [ecx + 0x20]
cmp dx, bx
jne 0x4abbc9
xor edx, edx
mov dword [esp + 0x24], edx
mov dword [esp], eax
call dbg.reflect.(*rtype).NumIn
mov eax, dword [esp + 4]
mov ecx, dword [esp + 0x24]
cmp ecx, eax
jge 0x4abb23
mov eax, dword [esp + 0x70]
mov dword [esp], eax
mov dword [esp + 4], ecx
call dbg.reflect.(*rtype).In
mov eax, dword [esp + 0xc]
mov dword [esp + 0x48], eax
mov ecx, dword [esp + 8]
mov dword [esp + 0x44], ecx
mov edx, dword [esp + 0x74]
mov dword [esp], edx
mov ebx, dword [esp + 0x24]
mov dword [esp + 4], ebx
call dbg.reflect.(*rtype).In
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 8]
mov edx, dword [esp + 0x44]
mov dword [esp], edx
mov edx, dword [esp + 0x48]
mov dword [esp + 4], edx
mov dword [esp + 8], ecx
mov dword [esp + 0xc], eax
movzx eax, byte [esp + 0x78]
mov byte [esp + 0x10], al
call dbg.reflect.haveIdenticalType
movzx eax, byte [esp + 0x14]
test al, al
je 0x4abb1a
mov ebx, dword [esp + 0x24]
lea edx, [ebx + 1]
mov eax, dword [esp + 0x70]
mov ecx, dword [esp + 0x74]
jmp 0x4aba80
mov byte [esp + 0x7c], 0
add esp, 0x6c
ret
xor eax, eax
mov dword [esp + 0x20], eax
mov ecx, dword [esp + 0x70]
mov dword [esp], ecx
call dbg.reflect.(*rtype).NumOut
mov eax, dword [esp + 4]
mov ecx, dword [esp + 0x20]
cmp ecx, eax
jge 0x4abbc0
mov eax, dword [esp + 0x70]
mov dword [esp], eax
mov dword [esp + 4], ecx
call dbg.reflect.(*rtype).Out
mov eax, dword [esp + 0xc]
mov dword [esp + 0x48], eax
mov ecx, dword [esp + 8]
mov dword [esp + 0x44], ecx
mov edx, dword [esp + 0x74]
mov dword [esp], edx
mov ebx, dword [esp + 0x20]
mov dword [esp + 4], ebx
call dbg.reflect.(*rtype).Out
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 8]
mov edx, dword [esp + 0x44]
mov dword [esp], edx
mov edx, dword [esp + 0x48]
mov dword [esp + 4], edx
mov dword [esp + 8], ecx
mov dword [esp + 0xc], eax
movzx eax, byte [esp + 0x78]
mov byte [esp + 0x10], al
call dbg.reflect.haveIdenticalType
movzx eax, byte [esp + 0x14]
test al, al
je 0x4abbb7
mov ecx, dword [esp + 0x20]
lea eax, [ecx + 1]
jmp 0x4abb25
mov byte [esp + 0x7c], 0
add esp, 0x6c
ret
mov byte [esp + 0x7c], 1
add esp, 0x6c
ret
mov byte [esp + 0x7c], 0
add esp, 0x6c
ret
mov byte [esp + 0x7c], 0
add esp, 0x6c
ret
mov dword [esp], ecx
call dbg.reflect.(*rtype).ChanDir
mov eax, dword [esp + 4]
cmp eax, 3
je 0x4abc82
mov eax, dword [esp + 0x74]
mov dword [esp], eax
call dbg.reflect.(*rtype).ChanDir
mov eax, dword [esp + 4]
mov dword [esp + 0x34], eax
mov ecx, dword [esp + 0x70]
mov dword [esp], ecx
call dbg.reflect.(*rtype).ChanDir
mov eax, dword [esp + 4]
mov ecx, dword [esp + 0x34]
cmp ecx, eax
je 0x4abc26
xor eax, eax
mov byte [esp + 0x7c], al
add esp, 0x6c
ret
mov eax, dword [esp + 0x70]
mov dword [esp], eax
call dbg.reflect.(*rtype).Elem
mov eax, dword [esp + 8]
mov dword [esp + 0x48], eax
mov ecx, dword [esp + 4]
mov dword [esp + 0x44], ecx
mov edx, dword [esp + 0x74]
mov dword [esp], edx
call dbg.reflect.(*rtype).Elem
mov eax, dword [esp + 4]
mov ecx, dword [esp + 8]
mov edx, dword [esp + 0x44]
mov dword [esp], edx
mov edx, dword [esp + 0x48]
mov dword [esp + 4], edx
mov dword [esp + 8], eax
mov dword [esp + 0xc], ecx
movzx eax, byte [esp + 0x78]
mov byte [esp + 0x10], al
call dbg.reflect.haveIdenticalType
movzx eax, byte [esp + 0x14]
jmp 0x4abc1e
mov eax, dword [esp + 0x70]
mov dword [esp], eax
call dbg.reflect.(*rtype).Elem
mov eax, dword [esp + 8]
mov dword [esp + 0x48], eax
mov ecx, dword [esp + 4]
mov dword [esp + 0x44], ecx
mov edx, dword [esp + 0x74]
mov dword [esp], edx
call dbg.reflect.(*rtype).Elem
mov eax, dword [esp + 8]
mov ecx, dword [esp + 4]
mov edx, dword [esp + 0x44]
mov dword [esp], edx
mov edx, dword [esp + 0x48]
mov dword [esp + 4], edx
mov dword [esp + 8], ecx
mov dword [esp + 0xc], eax
movzx eax, byte [esp + 0x78]
mov byte [esp + 0x10], al
call dbg.reflect.haveIdenticalType
movzx eax, byte [esp + 0x14]
test al, al
jne 0x4abce5
jmp 0x4abbf0
mov byte [esp + 0x7c], 1
add esp, 0x6c
ret
mov dword [esp], eax
call dbg.reflect.(*rtype).Len
mov eax, dword [esp + 4]
mov dword [esp + 0x30], eax
mov ecx, dword [esp + 0x74]
mov dword [esp], ecx
call dbg.reflect.(*rtype).Len
mov eax, dword [esp + 4]
mov ecx, dword [esp + 0x30]
cmp ecx, eax
je 0x4abd20
xor eax, eax
mov byte [esp + 0x7c], al
add esp, 0x6c
ret
mov eax, dword [esp + 0x70]
mov dword [esp], eax
call dbg.reflect.(*rtype).Elem
mov eax, dword [esp + 4]
mov dword [esp + 0x48], eax
mov ecx, dword [esp + 8]
mov dword [esp + 0x44], ecx
mov edx, dword [esp + 0x74]
mov dword [esp], edx
call dbg.reflect.(*rtype).Elem
mov eax, dword [esp + 4]
mov ecx, dword [esp + 8]
mov edx, dword [esp + 0x48]
mov dword [esp], edx
mov edx, dword [esp + 0x44]
mov dword [esp + 4], edx
mov dword [esp + 8], eax
mov dword [esp + 0xc], ecx
movzx eax, byte [esp + 0x78]
mov byte [esp + 0x10], al
call dbg.reflect.haveIdenticalType
movzx eax, byte [esp + 0x14]
jmp 0x4abd18
cmp edx, 0x15
jbe 0x4ac12f
lea ebx, [edx - 0x16]
cmp ebx, 1
jbe 0x4ac0d1
cmp edx, 0x19
jne 0x4abbd2
mov edx, dword [eax + 0x28]
mov dword [esp + 0x30], edx
mov ebx, dword [ecx + 0x28]
cmp edx, ebx
jne 0x4ac0c8
xor ebx, ebx
mov dword [esp + 0x1c], ebx
cmp ebx, edx
jge 0x4abf13
mov ebp, dword [eax + 0x28]
mov esi, dword [eax + 0x24]
mov dword [esp + 0x40], esi
cmp ebx, ebp
jae 0x4ac0c1
lea ebp, [ebx + ebx*2]
mov dword [esp + 0x2c], ebp
mov edi, dword [ecx + 0x28]
mov ecx, dword [ecx + 0x24]
mov dword [esp + 0x3c], ecx
cmp ebx, edi
jae 0x4ac0ba
mov edi, dword [esi + ebp*4]
mov dword [esp + 0x64], 0
mov dword [esp + 0x68], 0
test edi, edi
je 0x4abe14
lea eax, [edi + 3]
mov dword [esp + 0x64], eax
movzx eax, byte [edi + 2]
movzx edi, byte [edi + 1]
shl edi, 8
or edi, eax
mov dword [esp + 0x68], edi
mov eax, dword [ecx + ebp*4]
mov dword [esp + 0x5c], 0
mov dword [esp + 0x60], 0
test eax, eax
je 0x4abe43
lea edi, [eax + 3]
mov dword [esp + 0x5c], edi
movzx edi, byte [eax + 2]
movzx eax, byte [eax + 1]
shl eax, 8
or eax, edi
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0x60]
mov edi, dword [esp + 0x5c]
mov edx, dword [esp + 0x68]
mov ebx, dword [esp + 0x64]
cmp edx, eax
jne 0x4ac0b1
mov dword [esp], ebx
mov dword [esp + 4], edx
mov dword [esp + 8], edi
mov dword [esp + 0xc], eax
call dbg.runtime.eqstring
movzx eax, byte [esp + 0x10]
test al, al
je 0x4ac0b1
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x40]
mov edx, dword [ecx + eax*4 + 4]
mov ebx, dword [esp + 0x3c]
mov ebp, dword [ebx + eax*4 + 4]
lea esi, [0xc53420]
mov dword [esp + 8], esi
mov dword [esp + 0xc], ebp
mov dword [esp], esi
mov dword [esp + 4], edx
movzx edx, byte [esp + 0x78]
mov byte [esp + 0x10], dl
call dbg.reflect.haveIdenticalType
movzx eax, byte [esp + 0x14]
test al, al
je 0x4ac0a8
movzx eax, byte [esp + 0x78]
test al, al
jne 0x4ac02e
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x40]
mov ebx, dword [edx + ecx*4 + 8]
mov ebp, dword [esp + 0x3c]
mov esi, dword [ebp + ecx*4 + 8]
cmp ebx, esi
jne 0x4ac025
mov edx, dword [edx + ecx*4]
movzx ebx, byte [edx]
test bl, 1
je 0x4abf1c
mov ebp, dword [esp + 0x1c]
lea ebx, [ebp + 1]
mov eax, dword [esp + 0x70]
mov ecx, dword [esp + 0x74]
mov edx, dword [esp + 0x30]
mov dword [esp + 0x1c], ebx
cmp ebx, edx
jl 0x4abdba
mov byte [esp + 0x7c], 1
add esp, 0x6c
ret
mov dword [esp], edx
call dbg.reflect.name.pkgPath
mov eax, dword [esp + 8]
mov ecx, dword [esp + 4]
test eax, eax
jne 0x4ac018
mov eax, dword [esp + 0x70]
mov ecx, dword [eax + 0x20]
mov dword [esp + 0x4c], 0
mov dword [esp + 0x50], 0
test ecx, ecx
je 0x4abf67
lea edx, [ecx + 3]
mov dword [esp + 0x4c], edx
movzx edx, byte [ecx + 2]
movzx ecx, byte [ecx + 1]
shl ecx, 8
or edx, ecx
mov dword [esp + 0x50], edx
mov ecx, dword [esp + 0x50]
mov edx, dword [esp + 0x4c]
mov dword [esp + 0x38], edx
mov dword [esp + 0x18], ecx
mov ebx, dword [esp + 0x2c]
mov ebp, dword [esp + 0x3c]
mov ebx, dword [ebp + ebx*4]
mov dword [esp], ebx
call dbg.reflect.name.pkgPath
mov eax, dword [esp + 8]
mov ecx, dword [esp + 4]
test eax, eax
jne 0x4ac00e
mov eax, dword [esp + 0x74]
mov ecx, dword [eax + 0x20]
mov dword [esp + 0x54], 0
mov dword [esp + 0x58], 0
test ecx, ecx
je 0x4abfca
lea edx, [ecx + 3]
mov dword [esp + 0x54], edx
movzx edx, byte [ecx + 2]
movzx ecx, byte [ecx + 1]
shl ecx, 8
or edx, ecx
mov dword [esp + 0x58], edx
mov ecx, dword [esp + 0x58]
mov edx, dword [esp + 0x54]
mov ebx, dword [esp + 0x18]
cmp ebx, ecx
jne 0x4ac005
mov ebp, dword [esp + 0x38]
mov dword [esp], ebp
mov dword [esp + 4], ebx
mov dword [esp + 8], edx
mov dword [esp + 0xc], ecx
call dbg.runtime.eqstring
movzx eax, byte [esp + 0x10]
test al, al
je 0x4ac005
movzx eax, byte [esp + 0x78]
jmp 0x4abef4
mov byte [esp + 0x7c], 0
add esp, 0x6c
ret
mov edx, ecx
mov ecx, eax
mov eax, dword [esp + 0x74]
jmp 0x4abfd2
mov edx, ecx
mov ecx, eax
mov eax, dword [esp + 0x70]
jmp 0x4abf6f
mov byte [esp + 0x7c], 0
add esp, 0x6c
ret
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x40]
mov ebx, dword [edx + ecx*4]
mov dword [esp], ebx
call dbg.reflect.name.tag
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x3c]
mov edx, dword [ecx + eax*4]
mov ebx, dword [esp + 8]
mov dword [esp + 0x28], ebx
mov ebp, dword [esp + 4]
mov dword [esp + 0x48], ebp
mov dword [esp], edx
call dbg.reflect.name.tag
mov eax, dword [esp + 8]
mov ecx, dword [esp + 4]
mov edx, dword [esp + 0x28]
cmp edx, eax
jne 0x4ac09f
mov ebx, dword [esp + 0x48]
mov dword [esp], ebx
mov dword [esp + 4], edx
mov dword [esp + 8], ecx
mov dword [esp + 0xc], eax
call dbg.runtime.eqstring
movzx eax, byte [esp + 0x10]
test al, al
je 0x4ac09f
movzx eax, byte [esp + 0x78]
jmp 0x4abecd
mov byte [esp + 0x7c], 0
add esp, 0x6c
ret
mov byte [esp + 0x7c], 0
add esp, 0x6c
ret
mov byte [esp + 0x7c], 0
add esp, 0x6c
ret
call dbg.runtime.panicindex
ud2
call dbg.runtime.panicindex
ud2
mov byte [esp + 0x7c], 0
add esp, 0x6c
ret
mov dword [esp], eax
call dbg.reflect.(*rtype).Elem
mov eax, dword [esp + 4]
mov dword [esp + 0x48], eax
mov ecx, dword [esp + 8]
mov dword [esp + 0x44], ecx
mov edx, dword [esp + 0x74]
mov dword [esp], edx
call dbg.reflect.(*rtype).Elem
mov eax, dword [esp + 4]
mov ecx, dword [esp + 8]
mov edx, dword [esp + 0x48]
mov dword [esp], edx
mov edx, dword [esp + 0x44]
mov dword [esp + 4], edx
mov dword [esp + 8], eax
mov dword [esp + 0xc], ecx
movzx eax, byte [esp + 0x78]
mov byte [esp + 0x10], al
call dbg.reflect.haveIdenticalType
movzx eax, byte [esp + 0x14]
mov byte [esp + 0x7c], al
add esp, 0x6c
ret
cmp edx, 0x14
jne 0x4ac154
mov eax, dword [eax + 0x28]
test eax, eax
jne 0x4ac142
mov eax, dword [ecx + 0x28]
test eax, eax
je 0x4ac14b
mov byte [esp + 0x7c], 0
add esp, 0x6c
ret
mov byte [esp + 0x7c], 1
add esp, 0x6c
ret
mov dword [esp], eax
call dbg.reflect.(*rtype).Key
mov eax, dword [esp + 4]
mov dword [esp + 0x48], eax
mov ecx, dword [esp + 8]
mov dword [esp + 0x44], ecx
mov edx, dword [esp + 0x74]
mov dword [esp], edx
call dbg.reflect.(*rtype).Key
mov eax, dword [esp + 4]
mov ecx, dword [esp + 8]
mov edx, dword [esp + 0x48]
mov dword [esp], edx
mov edx, dword [esp + 0x44]
mov dword [esp + 4], edx
mov dword [esp + 8], eax
mov dword [esp + 0xc], ecx
movzx eax, byte [esp + 0x78]
mov byte [esp + 0x10], al
call dbg.reflect.haveIdenticalType
movzx eax, byte [esp + 0x14]
test al, al
jne 0x4ac1b8
xor eax, eax
mov byte [esp + 0x7c], al
add esp, 0x6c
ret
mov eax, dword [esp + 0x70]
mov dword [esp], eax
call dbg.reflect.(*rtype).Elem
mov eax, dword [esp + 8]
mov dword [esp + 0x48], eax
mov ecx, dword [esp + 4]
mov dword [esp + 0x44], ecx
mov edx, dword [esp + 0x74]
mov dword [esp], edx
call dbg.reflect.(*rtype).Elem
mov eax, dword [esp + 8]
mov ecx, dword [esp + 4]
mov edx, dword [esp + 0x44]
mov dword [esp], edx
mov edx, dword [esp + 0x48]
mov dword [esp + 4], edx
mov dword [esp + 8], ecx
mov dword [esp + 0xc], eax
movzx eax, byte [esp + 0x78]
mov byte [esp + 0x10], al
call dbg.reflect.haveIdenticalType
movzx eax, byte [esp + 0x14]
jmp 0x4ac1b0
mov byte [esp + 0x7c], 1
add esp, 0x6c
ret
mov byte [esp + 0x7c], 0
add esp, 0x6c
ret
mov byte [esp + 0x7c], 1
add esp, 0x6c
ret
call dbg.runtime.morestack_noctxt
jmp dbg.reflect.haveIdenticalUnderlyingType