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

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x1ec
mov eax, dword [esp + 0x208]
mov ecx, dword [esp + 0x20c]
mov dword [esp + 0x78], 0
mov dword [esp + 0x7c], 0
mov eax, dword [eax]
mov dword [esp + 0xa8], ecx
mov ecx, dword [esp + 0x214]
mov dword [esp + 0x80], 0
mov dword [esp + 0x48], eax
mov dword [esp + 0x9c], eax
mov dword [esp + 0xa0], eax
mov eax, dword [esp + 0x208]
mov dword [esp + 0xac], ecx
mov ecx, dword [esp + 0x218]
mov eax, dword [eax + 0x24]
mov dword [esp + 0x88], 0
mov dword [esp + 0x8c], 0
mov dword [esp + 0x90], 0
mov dword [esp + 0x84], 0
mov dword [esp + 0x94], 0
mov dword [esp + 0x98], str..debug_info
mov dword [esp + 0x4c], eax
mov dword [esp + 0xa4], eax
mov dword [esp + 0xb0], ecx
mov dword [esp + 0xb4], 0
mov dword [esp + 0x6c], 0
mov dword [esp + 0x70], 0
mov dword [esp + 0x74], 0
test eax, eax
je 0x4d3576
mov dword [esp + 0x54], 0
mov dword [esp + 0x4c], 0
lea esi, [esi]
lea eax, [esp + 0x98]
call sym._read_uint32
mov dword [esp + 0x28], 0
mov dword [esp + 0x24], eax
cmp eax, 0xffffffff
je 0x4d327e
mov ebx, dword [esp + 0xa8]
mov eax, dword [esp + 0x9c]
mov ecx, dword [esp + 0x98]
mov edx, dword [esp + 0xa0]
mov dword [esp + 0xc8], ebx
mov ebx, dword [esp + 0xac]
mov dword [esp + 0xbc], eax
mov esi, dword [esp + 0x24]
mov dword [esp + 0xcc], ebx
mov ebx, dword [esp + 0xb0]
mov eax, dword [esp + 0xa4]
mov dword [esp + 0xb8], ecx
mov dword [esp + 0xd0], ebx
mov ebx, dword [esp + 0xb4]
mov dword [esp + 0xc0], edx
mov dword [esp + 0xd4], ebx
mov dword [esp + 0xc4], esi
cmp eax, esi
jae 0x4d29fd
mov ebx, dword [esp + 0xb4]
test ebx, ebx
je 0x4d321b
mov ebp, dword [esp + 0x4c]
test ebp, ebp
je 0x4d29e1
mov esi, dword [esp + 0x6c]
mov edi, dword [esp + 0x200]
xor ebx, ebx
mov ebp, dword [esp + 0x214]
mov eax, dword [esi + ebx*4]
mov ecx, ebp
lea edx, [eax + 0x4c]
mov eax, dword [esp + 0x218]
mov dword [esp], eax
mov eax, edi
call sym._free_abbrevs
mov eax, dword [esp + 0x218]
mov dword [esp + 0xc], ebp
mov dword [esp + 8], 0x68
mov dword [esp + 0x10], eax
mov eax, dword [esi + ebx*4]
add ebx, 1
mov dword [esp], edi
mov dword [esp + 4], eax
call sym._backtrace_free
cmp dword [esp + 0x4c], ebx
jne 0x4d295c
mov eax, dword [esp + 0x70]
add dword [esp + 0x74], eax
mov eax, dword [esp + 0x218]
mov dword [esp + 0x70], 0
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x214]
mov dword [esp + 8], eax
lea eax, [esp + 0x6c]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x200]
mov dword [esp], eax
call sym._backtrace_vector_release
mov edi, dword [esp + 0x84]
test edi, edi
jne 0x4d329b
add esp, 0x1ec
xor eax, eax
pop ebx
pop esi
pop edi
pop ebp
ret
sub eax, esi
add dword [esp + 0xa0], esi
mov dword [esp + 0xa4], eax
lea eax, [esp + 0xb8]
call sym._read_uint16
movzx eax, ax
mov dword [esp + 0x20], eax
sub eax, 2
cmp eax, 3
ja 0x4d32e0
cmp dword [esp + 0x20], 4
jle 0x4d30fe
lea eax, [esp + 0xb8]
call sym._read_byte
mov edx, eax
and edx, 0xfffffffb
cmp dl, 2
je 0x4d30d0
movzx eax, al
mov dword [esp + 0x50], eax
lea eax, [esp + 0x6c]
mov dword [esp + 4], 4
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x218]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x214]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x200]
mov dword [esp], eax
call sym._backtrace_vector_grow
mov ebx, eax
test eax, eax
je 0x4d293c
mov eax, dword [esp + 0x218]
mov dword [esp + 4], 0x68
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x214]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x200]
mov dword [esp], eax
call sym._backtrace_alloc
mov edi, eax
test eax, eax
je 0x4d293c
add dword [esp + 0x4c], 1
cmp dword [esp + 0x20], 4
mov dword [ebx], eax
mov dword [esp + 0x44], 0
jg 0x4d31cf
mov edx, dword [esp + 0x28]
lea eax, [edi + 0x4c]
mov dword [edi + 0x4c], 0
mov dword [esp + 0x5c], eax
lea eax, [esp + 0xb8]
mov dword [edi + 0x50], 0
test edx, edx
je 0x4d310b
call sym._read_uint64
mov ecx, dword [esp + 0x208]
xor ebx, ebx
mov ebp, edx
mov dword [edi + 0x4c], 0
mov dword [edi + 0x50], 0
mov esi, dword [ecx + 0x2c]
mov ecx, dword [ecx + 8]
cmp eax, esi
mov dword [esp + 0x2c], ecx
sbb ebp, ebx
jae 0x4d3117
mov ecx, dword [esp + 0x2c]
sub esi, eax
xor ebx, ebx
mov dword [esp + 0xd8], str..debug_abbrev
mov dword [esp + 0xe4], esi
lea edx, [ecx + eax]
mov eax, dword [esp + 0x20c]
mov dword [esp + 0x104], esi
lea esi, [esp + 0x118]
mov dword [esp + 0xdc], ecx
mov dword [esp + 0xe8], eax
mov eax, dword [esp + 0x214]
mov dword [esp + 0xe0], edx
mov dword [esp + 0xec], eax
mov eax, dword [esp + 0x218]
mov dword [esp + 0xf4], 0
mov dword [esp + 0xf0], eax
mov eax, dword [esp + 0x20c]
mov dword [esp + 0xf8], str..debug_abbrev
mov dword [esp + 0x108], eax
mov eax, dword [esp + 0x214]
mov dword [esp + 0xfc], ecx
mov dword [esp + 0x10c], eax
mov eax, dword [esp + 0x218]
mov dword [esp + 0x100], edx
mov dword [esp + 0x110], eax
lea eax, [esp + 0xf8]
mov dword [esp + 0x114], 0
call sym._read_uleb128
or edx, eax
je 0x4d2c9e
lea esi, [esi]
mov eax, dword [esp + 0x114]
test eax, eax
jne 0x4d293c
lea eax, [esp + 0xf8]
add ebx, 1
call sym._read_uleb128
mov eax, dword [esp + 0x104]
mov edx, dword [esp + 0x100]
test eax, eax
jne 0x4d2ed8
mov eax, dword [esp + 0x114]
test eax, eax
jne 0x4d2c6e
jmp 0x4d2ef8
call sym._read_uleb128
cmp eax, 0x21
je 0x4d2ec0
lea eax, [esp + 0xf8]
call sym._read_uleb128
or edx, eax
lea eax, [esp + 0xf8]
jne 0x4d2c60
call sym._read_uleb128
lea eax, [esp + 0xf8]
call sym._read_uleb128
or edx, eax
jne 0x4d2c18
mov ebp, dword [esp + 0x114]
test ebp, ebp
jne 0x4d293c
test ebx, ebx
je 0x4d2f81
mov eax, dword [esp + 0x218]
lea esi, [ebx + ebx*2]
shl esi, 3
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x214]
mov dword [esp + 4], esi
mov dword [esp + 8], eax
mov eax, dword [esp + 0x200]
mov dword [esp], eax
call sym._backtrace_alloc
mov dword [edi + 0x50], eax
test eax, eax
je 0x4d293c
mov dword [edi + 0x4c], ebx
mov dword [esp + 8], esi
mov dword [esp + 4], 0
mov dword [esp], eax
call sym._memset
mov esi, dword [esp + 0xf4]
test esi, esi
jne 0x4d2e90
mov dword [esp + 0x2c], 0
mov dword [esp + 0x58], edi
lea esi, [esi]
lea eax, [esp + 0xd8]
call sym._read_uleb128
mov esi, edx
mov dword [esp + 0x38], eax
or esi, eax
mov dword [esp + 0x3c], edx
je 0x4d2f5b
lea eax, [esp + 0xd8]
xor ebx, ebx
call sym._read_uleb128
mov dword [esp + 0x30], eax
lea eax, [esp + 0xd8]
call sym._read_byte
movzx eax, al
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0xd8]
mov dword [esp + 0xf8], eax
mov eax, dword [esp + 0xdc]
mov dword [esp + 0xfc], eax
mov eax, dword [esp + 0xe0]
mov dword [esp + 0x100], eax
mov eax, dword [esp + 0xe4]
mov dword [esp + 0x104], eax
mov eax, dword [esp + 0xe8]
mov dword [esp + 0x108], eax
mov eax, dword [esp + 0xec]
mov dword [esp + 0x10c], eax
mov eax, dword [esp + 0xf0]
mov dword [esp + 0x110], eax
mov eax, dword [esp + 0xf4]
mov dword [esp + 0x114], eax
lea esi, [esi]
nop
lea eax, [esp + 0xf8]
call sym._read_uleb128
or edx, eax
je 0x4d2e20
lea eax, [esp + 0xf8]
add ebx, 1
call sym._read_uleb128
cmp eax, 0x21
jne 0x4d2de0
lea eax, [esp + 0xf8]
call sym._read_sleb128
lea eax, [esp + 0xf8]
call sym._read_uleb128
or edx, eax
jne 0x4d2df0
test ebx, ebx
jne 0x4d313d
lea eax, [esp + 0xd8]
call sym._read_uleb128
lea eax, [esp + 0xd8]
call sym._read_uleb128
mov dword [esp + 0x40], 0
mov esi, dword [esp + 0x58]
mov ecx, dword [esp + 0x2c]
mov eax, dword [esi + 0x50]
mov esi, dword [esp + 0x38]
add eax, ecx
add ecx, 0x18
mov dword [eax], esi
mov esi, dword [esp + 0x3c]
mov dword [eax + 0x10], ebx
mov ebx, dword [esp + 0xf4]
mov dword [eax + 4], esi
mov esi, dword [esp + 0x30]
mov dword [esp + 0x2c], ecx
mov dword [eax + 8], esi
mov esi, dword [esp + 0x34]
mov dword [eax + 0xc], esi
mov esi, dword [esp + 0x40]
mov dword [eax + 0x14], esi
test ebx, ebx
je 0x4d2d28
mov eax, dword [esp + 0x218]
mov ecx, dword [esp + 0x214]
mov edx, dword [esp + 0x5c]
mov dword [esp], eax
mov eax, dword [esp + 0x200]
call sym._free_abbrevs
jmp 0x4d293c
lea eax, [esp + 0xf8]
call sym._read_sleb128
jmp 0x4d2c6e
add edx, 1
sub eax, 1
mov dword [esp + 0x100], edx
mov dword [esp + 0x104], eax
jmp 0x4d2c6e
mov eax, dword [esp + 0xf8]
sub edx, dword [esp + 0xfc]
mov dword [esp + 0xc], str.DWARF_underflow
mov dword [esp + 0x14], edx
mov dword [esp + 0x10], eax
mov dword [esp + 8], str._s_in__s_at__d
mov dword [esp + 4], 0xc8
mov dword [esp], esi
call sym._snprintf.constprop.0
mov eax, dword [esp + 0x110]
mov dword [esp + 4], esi
mov dword [esp + 8], 0
mov dword [esp], eax
call dword [esp + 0x10c]
mov dword [esp + 0x114], 1
jmp 0x4d2c6e
mov edi, dword [esp + 0x58]
mov dword [esp + 0xc], sym._abbrev_compare
mov dword [esp + 8], 0x18
mov eax, dword [edi + 0x4c]
mov dword [esp + 4], eax
mov eax, dword [edi + 0x50]
mov dword [esp], eax
call sym._backtrace_qsort
cmp dword [esp + 0x20], 4
jle 0x4d31e7
mov eax, dword [esp + 0x50]
sub eax, 4
cmp eax, 1
jbe 0x4d320a
mov ecx, dword [esp + 0x28]
mov eax, dword [esp + 0x54]
mov dword [edi + 0x40], 0
mov dword [edi + 0x44], 0
cmp ecx, 1
mov dword [edi + 0xc], eax
sbb edx, edx
add eax, dword [esp + 0x24]
mov dword [edi + 0x18], ecx
lea ecx, [esp + 0xb8]
and edx, 0xfffffff8
mov dword [edi + 0x48], 0
lea eax, [edx + eax + 0xc]
mov edx, dword [esp + 0xc4]
mov dword [edi + 0x20], 0
mov dword [esp + 0x54], eax
mov dword [edi + 0x10], eax
mov eax, dword [esp + 0xc0]
mov dword [edi + 4], edx
mov dword [edi], eax
sub eax, dword [esp + 0x48]
mov dword [edi + 8], eax
mov eax, dword [esp + 0x20]
mov dword [edi + 0x24], 0
mov dword [edi + 0x14], eax
mov eax, dword [esp + 0x44]
mov dword [edi + 0x28], 0
mov dword [edi + 0x1c], eax
lea eax, [esp + 0x118]
mov dword [edi + 0x2c], 0
mov dword [edi + 0x30], 0
mov dword [edi + 0x34], 0
mov dword [edi + 0x38], 0
mov dword [edi + 0x3c], 0
mov dword [edi + 0x54], 0
mov dword [edi + 0x58], 0
mov dword [edi + 0x5c], 0
mov dword [edi + 0x60], 0
mov dword [esp + 0x1c], eax
lea eax, [esp + 0x78]
mov edx, dword [esp + 0x204]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x218]
mov dword [esp + 0x14], edi
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x214]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x210]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x20c]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x208]
mov dword [esp], eax
mov eax, dword [esp + 0x200]
call sym._find_address_ranges
test eax, eax
je 0x4d293c
mov ecx, dword [esp + 0xd4]
test ecx, ecx
jne 0x4d293c
mov edx, dword [esp + 0xa4]
mov eax, dword [esp + 0xb4]
test edx, edx
je 0x4d3346
test eax, eax
jne 0x4d293c
mov eax, dword [esp + 0xa0]
mov dword [esp + 0x48], eax
jmp 0x4d2890
mov dword [esp + 0x50], 0
jmp 0x4d2a58
call sym._read_uint32
xor edx, edx
jmp 0x4d2b15
mov eax, dword [esp + 0x218]
mov dword [esp + 8], 0
mov dword [esp + 4], str.abbrev_offset_out_of_range
mov dword [esp], eax
call dword [esp + 0x214]
jmp 0x4d293c
mov eax, dword [esp + 0x218]
shl ebx, 4
mov dword [esp + 4], ebx
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x214]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x200]
mov dword [esp], eax
call sym._backtrace_alloc
mov dword [esp + 0x40], eax
test eax, eax
je 0x4d2e90
mov ebp, eax
xor ebx, ebx
jmp 0x4d318c
mov dword [ebp + 8], eax
add ebx, 1
add ebp, 0x10
mov dword [ebp - 4], edx
lea eax, [esp + 0xd8]
call sym._read_uleb128
mov edi, eax
mov esi, edx
lea eax, [esp + 0xd8]
call sym._read_uleb128
or esi, edi
mov ecx, eax
je 0x4d2e48
mov dword [ebp + 4], eax
xor edx, edx
xor eax, eax
mov dword [ebp], edi
cmp ecx, 0x21
jne 0x4d3180
lea eax, [esp + 0xd8]
call sym._read_sleb128
jmp 0x4d3180
lea eax, [esp + 0xb8]
call sym._read_byte
movzx eax, al
mov dword [esp + 0x44], eax
jmp 0x4d2ae8
lea eax, [esp + 0xb8]
call sym._read_byte
movzx eax, al
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x50]
sub eax, 4
cmp eax, 1
ja 0x4d2f9c
lea eax, [esp + 0xb8]
call sym._read_uint64
jmp 0x4d2f9c
sub edx, dword [esp + 0x9c]
lea ebx, [esp + 0x118]
mov dword [esp + 0x10], ecx
mov dword [esp + 0x14], edx
mov dword [esp + 0xc], str.DWARF_underflow
mov dword [esp + 8], str._s_in__s_at__d
mov dword [esp + 4], 0xc8
mov dword [esp], ebx
call sym._snprintf.constprop.0
mov eax, dword [esp + 0xb0]
mov dword [esp + 4], ebx
mov dword [esp + 8], 0
mov dword [esp], eax
call dword [esp + 0xac]
mov dword [esp + 0xb4], 1
jmp 0x4d293c
lea eax, [esp + 0x98]
call sym._read_uint64
mov dword [esp + 0x28], 1
mov dword [esp + 0x24], eax
jmp 0x4d28b1
mov eax, dword [esp + 0x7c]
add dword [esp + 0x80], eax
mov eax, dword [esp + 0x218]
mov dword [esp + 0x7c], 0
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x214]
mov dword [esp + 8], eax
lea eax, [esp + 0x78]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x200]
mov dword [esp], eax
call sym._backtrace_vector_release
jmp 0x4d29f0
mov eax, dword [esp + 0xc0]
sub eax, dword [esp + 0xbc]
lea ebx, [esp + 0x118]
mov dword [esp + 0xc], str.unrecognized_DWARF_version
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0xb8]
mov dword [esp + 8], str._s_in__s_at__d
mov dword [esp + 0x10], eax
mov dword [esp + 4], 0xc8
mov dword [esp], ebx
call sym._snprintf.constprop.0
mov eax, dword [esp + 0xd0]
mov dword [esp + 4], ebx
mov dword [esp + 8], 0xffffffff
mov dword [esp], eax
call dword [esp + 0xcc]
jmp 0x4d293c
test eax, eax
jne 0x4d293c
lea eax, [esp + 0x78]
mov dword [esp + 4], 0x18
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x218]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x214]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x200]
mov dword [esp], eax
call sym._backtrace_vector_grow
test eax, eax
je 0x4d293c
mov dword [eax], 0xffffffff
mov dword [eax + 4], 0xffffffff
mov dword [eax + 8], 0xffffffff
mov dword [eax + 0xc], 0xffffffff
mov dword [eax + 0x10], 0
mov eax, dword [esp + 0x6c]
mov dword [esp + 0x88], eax
mov eax, dword [esp + 0x70]
mov dword [esp + 0x8c], eax
mov eax, dword [esp + 0x74]
mov dword [esp + 0x90], eax
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x94], eax
mov eax, dword [esp + 0x218]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x214]
mov dword [esp + 8], eax
lea eax, [esp + 0x78]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x200]
mov dword [esp], eax
call sym._backtrace_vector_release
test eax, eax
je 0x4d29f0
mov eax, dword [esp + 0x218]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x214]
mov dword [esp + 8], eax
lea eax, [esp + 0x88]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x200]
mov dword [esp], eax
call sym._backtrace_vector_release
test eax, eax
je 0x4d29f0
mov ebx, dword [esp + 0x78]
mov esi, dword [esp + 0x84]
mov dword [esp + 0xc], sym._unit_addrs_compare
mov dword [esp + 8], 0x18
mov edi, dword [esp + 0x88]
mov dword [esp + 4], esi
mov ebp, dword [esp + 0x94]
mov dword [esp], ebx
call sym._backtrace_qsort
mov eax, dword [esp + 0x218]
mov dword [esp + 4], 0x78
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x214]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x200]
mov dword [esp], eax
call sym._backtrace_alloc
mov edx, eax
test eax, eax
je 0x4d29f0
mov dword [eax], 0
mov eax, dword [esp + 0x210]
mov ecx, 0x12
mov dword [edx + 0x10], esi
mov esi, dword [esp + 0x208]
mov dword [edx + 4], eax
mov eax, dword [esp + 0x204]
mov dword [edx + 0x14], edi
lea edi, [edx + 0x1c]
mov dword [edx + 8], eax
mov eax, dword [esp + 0x20c]
mov dword [edx + 0xc], ebx
mov dword [edx + 0x18], ebp
rep movsd dword es:[edi], dword [esi]
mov esi, dword [esp + 0x220]
mov dword [edx + 0x64], eax
mov dword [edx + 0x68], 0
mov dword [edx + 0x6c], 0
mov dword [edx + 0x70], 0
mov dword [edx + 0x74], 0
test esi, esi
je 0x4d3523
mov eax, dword [esp + 0x220]
mov dword [eax], edx
mov eax, dword [esp + 0x200]
mov ebx, dword [eax + 4]
lea ecx, [eax + 0x10]
test ebx, ebx
jne 0x4d3568
mov eax, dword [eax + 0x10]
test eax, eax
je 0x4d3543
mov ecx, eax
mov eax, dword [eax]
test eax, eax
jne 0x4d353b
mov dword [ecx], edx
mov eax, dword [esp + 0x21c]
mov dword [eax], sym._dwarf_fileline
add esp, 0x1ec
mov eax, 1
pop ebx
pop esi
pop edi
pop ebp
ret
lock cmpxchg dword [ebx], edx
je 0x4d3545
mov ebx, ecx
jmp 0x4d356e
mov ebx, eax
mov eax, dword [ebx]
test eax, eax
jne 0x4d356c
jmp 0x4d3562
lea eax, [esp + 0x78]
mov dword [esp + 4], 0x18
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x218]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x214]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x200]
mov dword [esp], eax
call sym._backtrace_vector_grow
test eax, eax
jne 0x4d338b
jmp 0x4d29e1