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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x140
mov eax, dword [ebp + 0xc]
mov dword [esp + 0x98], ecx
mov esi, dword [edx + 0x10]
mov eax, dword [eax + 0xc8]
mov dword [esp + 0x60], eax
shr eax, 0x10
cmp ax, 5
mov dword [esp + 0xf0], eax
mov eax, dword [ebp + 0x10]
setae byte [esp + 0x37]
mov ecx, dword [eax + 0x18]
lea eax, [ecx + 0x68]
mov dword [esp + 0x64], ecx
lea ecx, [ecx + 0x60]
cmovae ecx, eax
cmp esi, dword [ebp + 8]
call 0x511b04
pop eax
mov dword [esp + 0x118], ecx
mov dword [esp + 0x9c], eax
jle 0x5129d7
mov ebx, dword [esp + 0x60]
mov edi, edx
mov dword [esp + 4], edi
mov eax, ebx
and eax, 0xff00
mov dword [esp + 0x108], eax
mov eax, dword [edx + 8]
mov ecx, dword [eax + 0x24]
add ecx, dword [edx]
xor edx, edx
cmp byte [eax + 0x21], 8
sete dl
lea edx, [ecx + edx*8]
mov ecx, dword [eax + 0x1c]
add ecx, dword [eax + 0x18]
mov eax, dword [ebp + 0xc]
sub edx, ecx
movzx ecx, byte [eax + 0xc9]
add edx, 4
mov byte [esp + 0x1b], cl
mov ecx, dword [esp + 0x64]
add ecx, 8
mov dword [esp + 0xf8], ecx
mov ecx, dword [eax + 0x108]
mov dword [esp + 0xf4], ecx
mov ecx, dword [eax + 0x114]
mov dword [esp + 0xb8], ecx
movzx ecx, bh
mov dword [esp + 0x10c], ecx
mov ecx, dword [eax + 0x10c]
mov dword [esp + 0x90], ecx
movzx ecx, bl
mov ebx, esi
mov esi, dword [eax + 0x104]
mov eax, dword [eax + 0x100]
mov dword [esp + 0xec], ecx
mov dword [esp + 0x110], eax
mov eax, dword [ebp + 0x1c]
mov dword [esp + 0xd0], esi
lea eax, [eax + 1]
mov dword [esp + 0x114], eax
jmp 0x511c43
cmp dword [esi], 0
je 0x511d41
mov eax, dword [esi + 0xc]
mov esi, dword [esi + 4]
mov edx, dword [esp + 4]
lea ecx, [esp + 0x38]
mov edi, dword [edx + 8]
push eax
push esi
push dword [edi + 0x20]
call dbg.skip_attributes<gimli::read::endian_slice::EndianSlice<gimli::endianity::LittleEndian>>
add esp, 0xc
movzx eax, byte [esp + 0x38]
cmp al, 0x4b
jne 0x512a60
mov edi, dword [esp + 4]
mov eax, dword [edi + 8]
xor edx, edx
mov ebx, dword [edi + 0x10]
cmp byte [eax + 0x21], 8
mov ecx, dword [eax + 0x24]
mov esi, dword [eax + 0x1c]
sete dl
add ecx, dword [edi]
add esi, dword [eax + 0x18]
lea edx, [ecx + edx*8]
sub edx, esi
add edx, 4
cmp ebx, dword [ebp + 8]
jle 0x5129d7
mov dword [esp + 0x11c], edx
lea ecx, [esp + 0x38]
mov edx, edi
call sym.gimli::read::unit::EntriesRaw_LT_R_GT_::read_abbreviation::h5001f76c99529835
movzx eax, byte [esp + 0x38]
cmp al, 0x4b
jne 0x512a2c
mov esi, dword [esp + 0x3c]
test esi, esi
je 0x511c14
movzx eax, word [esi + 0x60]
cmp eax, 0x1d
je 0x511ca0
cmp eax, 0x2e
jne 0x511be0
cmp dword [esi], 0
mov dword [esp + 0xe8], ebx
je 0x511d55
mov eax, dword [esi + 0xc]
mov esi, dword [esi + 4]
jmp 0x511d64
cmp dword [esi], 0
je 0x511e18
mov ecx, dword [esi + 0xc]
mov esi, dword [esi + 4]
test ecx, ecx
mov dword [esp + 0xe8], ebx
je 0x511e36
shl ecx, 4
mov dword [esp + 0x30], 0
mov dword [esp + 0xe4], 0
mov dword [esp + 0xe0], 0
mov dword [esp + 0x1c], 0
mov dword [esp + 0x20], 0
mov dword [esp + 0xc0], 0
mov dword [esp + 0xbc], 0
mov dword [esp + 0xb4], 0
mov dword [esp + 0xb0], 0
mov dword [esp + 0xd8], 0
mov dword [esp + 0xd4], 0
mov dword [esp + 0x94], 0
jmp 0x512093
mov eax, dword [esi + 4]
cmp eax, 6
jae 0x512af6
add esi, 8
jmp 0x511bef
mov eax, dword [esi + 4]
cmp eax, 6
jae 0x512af6
add esi, 8
mov edi, dword [esp + 4]
lea ecx, [esp + 0x38]
mov ebx, dword [edi + 8]
mov edx, edi
push eax
push esi
push dword [ebx + 0x20]
call dbg.skip_attributes<gimli::read::endian_slice::EndianSlice<gimli::endianity::LittleEndian>>
add esp, 0xc
movzx eax, byte [esp + 0x38]
cmp al, 0x4b
jne 0x5129e6
mov eax, dword [esp + 0xe8]
cmp dword [edi + 0x10], eax
mov ebx, eax
jg 0x511da9
jmp 0x511c18
cmp dword [edi + 0x10], ebx
jle 0x511c18
lea ecx, [esp + 0x38]
mov edx, edi
call sym.gimli::read::unit::EntriesRaw_LT_R_GT_::read_abbreviation::h5001f76c99529835
movzx eax, byte [esp + 0x38]
cmp al, 0x4b
jne 0x5129e6
mov esi, dword [esp + 0x3c]
test esi, esi
je 0x511da0
cmp dword [esi], 0
je 0x511de0
mov eax, dword [esi + 0xc]
mov esi, dword [esi + 4]
jmp 0x511def
mov eax, dword [esi + 4]
cmp eax, 6
jae 0x512af6
add esi, 8
mov edx, edi
mov edi, dword [edi + 8]
lea ecx, [esp + 0x38]
push eax
push esi
push dword [edi + 0x20]
call dbg.skip_attributes<gimli::read::endian_slice::EndianSlice<gimli::endianity::LittleEndian>>
add esp, 0xc
movzx eax, byte [esp + 0x38]
cmp al, 0x4b
jne 0x5129e6
mov edi, dword [esp + 4]
jmp 0x511da0
mov ecx, dword [esi + 4]
cmp ecx, 6
jae 0x512af8
add esi, 8
test ecx, ecx
mov dword [esp + 0xe8], ebx
jne 0x511cbe
mov dword [esp + 0x94], 0
mov dword [esp + 0xd8], 0
mov dword [esp + 0xd4], 0
mov dword [esp + 0xb4], 0
mov dword [esp + 0xb0], 0
mov dword [esp + 0xc0], 0
mov dword [esp + 0xbc], 0
mov dword [esp + 0x20], 0
mov dword [esp + 0x1c], 0
mov dword [esp + 0xe4], 0
mov dword [esp + 0xe0], 0
mov dword [esp + 0x30], 0
mov esi, dword [ebp + 0x14]
mov ebx, dword [esi + 8]
cmp ebx, dword [esi + 4]
mov eax, ebx
jne 0x511eca
mov ecx, esi
mov edx, ebx
call dbg.reserve_for_push<addr2line::UnitRange, alloc::alloc::Global>
mov eax, dword [esi + 8]
mov edx, dword [esi]
mov edi, dword [esp + 0x30]
mov ecx, eax
inc eax
shl ecx, 5
cmp dword [esp + 0x94], 0
mov dword [edx + ecx], edi
mov edi, dword [esp + 0xdc]
mov dword [edx + ecx + 4], edi
mov edi, dword [esp + 0xe0]
mov dword [edx + ecx + 0xc], edi
mov edi, dword [esp + 0xe4]
mov dword [edx + ecx + 8], edi
mov edi, dword [esp + 0x11c]
mov dword [edx + ecx + 0x10], edi
mov edi, dword [esp + 0x1c]
mov dword [edx + ecx + 0x14], edi
mov edi, dword [esp + 0x20]
mov dword [edx + ecx + 0x18], edi
mov dword [esi + 8], eax
je 0x5126e2
mov eax, dword [esp + 0x118]
mov edx, dword [esp + 0xc4]
mov ecx, dword [eax]
mov eax, dword [eax + 4]
sub eax, edx
jb 0x512a81
mov esi, dword [esp + 0x64]
mov edi, dword [esp + 0x110]
mov dword [esp + 0xc4], edx
add ecx, dword [esp + 0xc4]
mov edx, dword [esi + 0x10]
mov esi, dword [esi + 0x14]
mov dword [esp + 0x38], edi
mov edi, dword [esp + 0xd0]
mov dword [esp + 0x3c], edi
mov dword [esp + 0x40], edx
mov edx, dword [esp + 0x90]
mov dword [esp + 0x44], esi
mov edi, dword [ebp + 0x18]
mov dword [esp + 0x48], edx
mov edx, dword [esp + 0x60]
mov word [esp + 0x4c], dx
mov edx, dword [esp + 0xf0]
mov word [esp + 0x4e], dx
mov dword [esp + 0x50], ecx
movzx ecx, byte [esp + 0x37]
mov dword [esp + 0x54], eax
mov byte [esp + 0x58], cl
mov byte [esp + 0x5b], 0
mov word [esp + 0x59], 0
jmp 0x511fd9
mov eax, dword [edi]
mov esi, dword [ebp + 0x1c]
lea ecx, [edx + edx*2]
inc edx
movdqu xmmword [eax + ecx*8], xmm1
mov dword [eax + ecx*8 + 0x10], esi
mov dword [eax + ecx*8 + 0x14], ebx
mov dword [edi + 8], edx
lea ecx, [esp + 0x78]
lea edx, [esp + 0x38]
call dbg.next<gimli::read::endian_slice::EndianSlice<gimli::endianity::LittleEndian>>
mov eax, dword [esp + 0x78]
movdqu xmm1, xmmword [esp + 0x80]
mov ecx, eax
and cl, 3
cmp cl, 1
jne 0x51204b
pshufd xmm2, xmm1, 0xee
pshufd xmm0, xmm1, 0x55
pshufd xmm3, xmm1, 0xff
movd ecx, xmm1
movd esi, xmm2
movd eax, xmm0
movd edx, xmm3
cmp ecx, esi
sbb eax, edx
jae 0x511fd9
mov edx, dword [edi + 8]
cmp edx, dword [edi + 4]
jne 0x511fc0
mov ecx, edi
movdqa xmmword [esp + 0x120], xmm1
call dbg.reserve_for_push<addr2line::function::InlinedFunctionAddress, alloc::alloc::Global>
movdqa xmm1, xmmword [esp + 0x120]
mov edx, dword [edi + 8]
jmp 0x511fc0
cmp eax, 2
jne 0x512800
movd eax, xmm1
cmp al, 0x4b
je 0x512800
jmp 0x512a8b
mov ecx, dword [esp + 0x120]
add esi, 0x10
add ecx, 0xfffffff0
je 0x511eb1
mov edx, dword [esp + 4]
movq xmm0, qword [esi]
movq xmm1, qword [esi + 8]
lea ebx, [esp + 0x78]
mov dword [esp + 0x120], ecx
lea ecx, [esp + 0x38]
mov eax, dword [edx + 8]
movq qword [esp + 0x80], xmm1
movq qword [esp + 0x78], xmm0
push ebx
push dword [eax + 0x20]
call sym.gimli::read::unit::parse_attribute::h0b0c2730e37b975b
add esp, 8
mov eax, dword [esp + 0x38]
mov ecx, eax
xor ecx, 0x2e
or ecx, dword [esp + 0x3c]
je 0x5126b3
movzx ecx, word [esp + 0x48]
lea edx, [ecx - 3]
cmp edx, 0x56
ja 0x512160
mov ecx, dword [edx*4 + 0x512b0c]
add ecx, dword [esp + 0x9c]
jmp ecx
cmp ecx, 0x6e
je 0x512171
cmp ecx, 0x2007
jne 0x512080
lea ebx, [esp + 0x78]
lea edx, [esp + 0x38]
mov ecx, ebx
call dbg.value<gimli::read::endian_slice::EndianSlice<gimli::endianity::LittleEndian>>
movzx eax, byte [esp + 0x1b]
mov edx, dword [esp + 0xf8]
lea ecx, [esp + 8]
push ebx
push dword [esp + 0xf8]
push eax
call sym.gimli::read::dwarf::Dwarf_LT_R_GT_::attr_string::h5cafbcaefb734659
add esp, 0xc
cmp byte [esp + 8], 0x4b
jne 0x512080
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0xc]
mov dword [esp + 0xdc], eax
mov dword [esp + 0x30], ecx
jmp 0x512080
lea eax, [esp + 0x40]
movq xmm0, qword [eax]
movq xmm1, qword [eax + 8]
movq qword [esp + 0x70], xmm1
movq qword [esp + 0x68], xmm0
mov edi, dword [esp + 4]
movzx eax, byte [esp + 0x68]
cmp al, 0x4b
je 0x511c18
jmp 0x512ace
mov eax, dword [esp + 0xb0]
mov ecx, dword [esp + 0xc0]
mov edx, dword [esp + 0xbc]
or dword [esp + 0xb4], eax
je 0x512775
mov eax, ecx
or eax, edx
je 0x512775
mov eax, dword [esp + 0xcc]
mov ecx, dword [esp + 0x24]
cmp dword [esp + 0x28], eax
sbb ecx, dword [esp + 0xc8]
jae 0x512800
mov edi, dword [ebp + 0x18]
mov edx, dword [edi + 8]
cmp edx, dword [edi + 4]
jne 0x512737
mov ecx, edi
call dbg.reserve_for_push<addr2line::function::InlinedFunctionAddress, alloc::alloc::Global>
mov edx, dword [edi + 8]
mov eax, dword [edi]
mov esi, dword [esp + 0x24]
lea ecx, [edx + edx*2]
inc edx
mov dword [eax + ecx*8 + 4], esi
mov esi, dword [esp + 0x28]
mov dword [eax + ecx*8], esi
mov esi, dword [esp + 0xc8]
mov dword [eax + ecx*8 + 0xc], esi
mov esi, dword [esp + 0xcc]
mov dword [eax + ecx*8 + 8], esi
mov esi, dword [ebp + 0x1c]
mov dword [eax + ecx*8 + 0x10], esi
mov dword [eax + ecx*8 + 0x14], ebx
mov dword [edi + 8], edx
jmp 0x512800
mov eax, dword [esp + 0xd4]
or dword [esp + 0xd8], eax
je 0x512800
or ecx, edx
je 0x512800
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x24]
mov esi, eax
mov edi, ecx
add esi, dword [esp + 0x100]
adc edi, dword [esp + 0xfc]
cmp eax, esi
mov eax, ecx
sbb eax, edi
jae 0x512800
mov eax, dword [ebp + 0x18]
mov dword [esp + 0x120], esi
mov edx, dword [eax + 8]
cmp edx, dword [eax + 4]
jne 0x5127cb
mov ecx, eax
mov esi, eax
call dbg.reserve_for_push<addr2line::function::InlinedFunctionAddress, alloc::alloc::Global>
mov edx, dword [esi + 8]
mov eax, esi
mov eax, dword [eax]
mov esi, dword [esp + 0x24]
lea ecx, [edx + edx*2]
inc edx
mov dword [eax + ecx*8 + 4], esi
mov esi, dword [esp + 0x28]
mov dword [eax + ecx*8], esi
mov dword [eax + ecx*8 + 0xc], edi
mov esi, dword [esp + 0x120]
mov edi, dword [ebp + 0x1c]
mov dword [eax + ecx*8 + 8], esi
mov dword [eax + ecx*8 + 0x10], edi
mov dword [eax + ecx*8 + 0x14], ebx
mov ecx, dword [ebp + 0x18]
mov dword [ecx + 8], edx
mov edi, dword [esp + 4]
lea ecx, [esp + 0x68]
mov edx, edi
push dword [esp + 0x114]
push dword [ebp + 0x18]
push dword [ebp + 0x14]
push dword [ebp + 0x10]
push dword [ebp + 0xc]
push dword [esp + 0xfc]
call dbg.parse_children<gimli::read::endian_slice::EndianSlice<gimli::endianity::LittleEndian>>
add esp, 0x18
movzx eax, byte [esp + 0x68]
cmp al, 0x4b
je 0x511c18
jmp 0x512ace
mov eax, dword [esp + 0x98]
mov byte [eax], 0x4b
jmp 0x512aee
movzx ecx, byte [esp + 0x3b]
mov edx, dword [esp + 0x44]
mov esi, dword [esp + 0x40]
mov ebx, dword [esp + 0x98]
mov byte [esp + 0x7a], cl
movzx ecx, word [esp + 0x39]
mov ah, byte [esp + 0x7a]
mov word [esp + 0x78], cx
mov ecx, dword [esp + 0x3c]
movzx edi, word [esp + 0x78]
mov byte [ebx + 3], ah
mov word [ebx + 1], di
mov byte [ebx], al
mov dword [ebx + 4], ecx
mov dword [ebx + 0xc], edx
mov dword [ebx + 8], esi
jmp 0x512aee
movzx ecx, byte [esp + 0x3b]
mov edi, dword [esp + 0x98]
mov ebx, dword [esp + 0x44]
mov edx, dword [esp + 0x3c]
mov esi, dword [esp + 0x40]
mov byte [edi + 3], cl
movzx ecx, word [esp + 0x39]
mov word [edi + 1], cx
mov byte [edi], al
mov dword [edi + 4], edx
mov dword [edi + 0xc], ebx
mov dword [edi + 8], esi
jmp 0x512aee
movsd xmm0, qword [esp + 0x39]
movsd xmm1, qword [esp + 0x40]
mov ecx, dword [esp + 0x98]
movsd qword [ecx + 8], xmm1
movsd qword [ecx + 1], xmm0
mov byte [ecx], al
jmp 0x512aee
xor edx, edx
mov al, 0x13
xor ebx, ebx
xor esi, esi
jmp 0x512ab2
mov edx, eax
pshufd xmm0, xmm1, 0x55
pshufd xmm2, xmm1, 0xff
pshufd xmm1, xmm1, 0xee
mov bl, ah
shr edx, 0x10
movd esi, xmm2
movd ecx, xmm1
movd dword [esp + 0xd0], xmm0
mov edi, dword [esp + 0xd0]
mov byte [esp + 0x69], bl
mov word [esp + 0x6a], dx
mov dword [esp + 0x6c], edi
mov dword [esp + 0x70], ecx
mov dword [esp + 0x74], esi
lea ecx, [esp + 0x69]
mov edx, dword [esp + 0x98]
movsd xmm1, qword [ecx + 7]
movsd xmm0, qword [ecx]
movsd qword [edx + 8], xmm1
movsd qword [edx + 1], xmm0
mov byte [edx], al
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov ecx, eax
mov edx, 5
push 0x565540
call dbg.slice_end_index_len_fail
add esp, 4
ud2